MFC基於對話方塊程式

2021-04-27 16:12:26 字數 2126 閱讀 6660

001:

020: else if (nresponse == idcancel) //如果對話方塊是用取消來關閉的,則

021:

025:

026: // 由於對話方塊已關閉,所以將返回 false 以便退出應用程式,

027: // 而不是啟動應用程式的訊息幫浦。

028: return false;

029:}

因為initinstance()函式的結束返回值是false,應用程式將會立即退出。也就是只顯示對話方塊,當對話方塊關閉後,程式就會結束了。這時候的initinstance函式就有點主函式的味道了。

下面,我們再來看看cdialogdlg類的定義,它是派生於cdialog的。它重寫了以下函式

cdialogdlg(cwnd* pparent = null); 自定義的建構函式

virtual bool oninitdialog(); 對話方塊初始化訊息操作函式

afx_msg void onsyscommand(uint nid, lparam lparam); 系統選單訊息響應函式

afx_msg void onpaint(); 對話方塊重繪響應函式

afx_msg hcursor onquerydragicon(); 最小化圖示詢問響應函式

另外,要注意的是在cdialogdlg類的定義體中有這麼乙個列舉的定義:

enum ;
它表明這個cdialogdlg類使用的對話方塊模板是idd_dialog_dialog。

cdialogdlg派生層次如下

cdialogdlg=>cdialog=>cwnd=>ccmdtarget=>cobject

先來看看建構函式:

cdialogdlg::cdialogdlg(cwnd* pparent /*=null*/)

: cdialog(cdialogdlg::idd/*這個idd就是那個列舉的值*/, pparent)

begin_message_map(cdialogdlg, cdialog)

on_wm_syscommand()

on_wm_paint()

on_wm_querydragicon()

//}}afx_msg_map

end_message_map()

這是一段訊息對映巨集定義段。表示這個對話方塊類可以響應wm_syscommand ,wm_paint,wm_querydragicon訊息。它們的響應函式,系統預設分別為onsyscommand,onpaint,onquerydragicon。這段的意思是說,如果cdialogdlg類的對話方塊接收到wm_syscommand訊息,就會呼叫onsyscommand。其它訊息以此為例。不過,這些響應段一般是用不著我們自己手動添寫的,是由系統來管理的。你如果要分析乙個mfc程式**,這一塊是乙個很好的切入點,可以清楚的看到這個程式到底都可以響應什麼訊息,都有些什麼功能。以上這些巨集都可以在msdn中查到。

下面,我們來乙個對於對話方塊非常重要的函式oninitdialog(),顧名思義這是乙個對話方塊的初始化函式。在對話方塊建立之後,第一次顯示之前呼叫。

bool cdialogdlg::oninitdialog()

} // 設定此對話方塊的圖示。當應用程式主視窗不是對話方塊時,框架將自動

// 執行此操作

seticon(m_hicon, true); // 設定大圖示

seticon(m_hicon, false); // 設定小圖示

// todo:在此新增額外的初始化**

return true; // 除非設定了控制項的焦點,否則應該返回 true

}

以上,就是這個基於對話方塊的mfc應用程式的基礎**。

MFC 對話方塊程式 模式對話方塊與非模式對話方塊

一 根據主視窗型別,mfc軟體工程可以分為以下幾種架構模型 例如 記事本和畫筆等。2 mdi multiple document inte ce 多文件介面,乙個主框架視窗下可以同時編輯多份文件。例如 vc 6.0,photoshop等軟體。3 基於對話方塊的軟體模型 主視窗是通過資源管理器,在對話...

mfc 子對話方塊控制父對話方塊 MFC對話方塊構架程式

遺憾的是 從來沒有被堅定選擇過,就像是,他只是剛好需要,你只是剛好在。網易雲熱評 一 對話方塊架構分類 1 模式對話方塊,彈出來不能進行其他操作 2 無模式對話方塊,彈出來後可以進行其他操作 二 新建win32應用程式 模式對話方塊 1 建立 2 修改屬性 3 新增dialog資源 4 包含標頭檔案...

MFC 對話方塊

1 建立對話方塊模板,設定對話方塊屬性 cadditionddlg 主對話方塊類 顯示的主要介面 addition的資源樹 4個子項 dialog 對話方塊 含有2個對話方塊模板 id為idd aboutbox 關於對話方塊模板 idd addtion dlalog 主對話方塊模板 lcon 圖示 ...