遺憾的是:從來沒有被堅定選擇過,就像是,他只是剛好需要,你只是剛好在。。。
---- 網易雲熱評
一、對話方塊架構分類
1、模式對話方塊,彈出來不能進行其他操作
2、無模式對話方塊,彈出來後可以進行其他操作
二、新建win32應用程式(模式對話方塊)
1、建立
2、修改屬性
3、新增dialog資源
4、包含標頭檔案
#include #include "resource.h"
5、定義乙個類,管理對話方塊資源
6、domodal()函式做的事
1)查詢,載入並鎖定對話方塊資源
2)將父視窗設定為不可用狀態
3)建立無模式對話方塊
4)進入訊息迴圈
5)隱藏無模式對話方塊
6)將父視窗設定為可用狀態
7)銷毀無模式對話方塊
7、模式對話方塊的關閉,通過虛函式處理
class cmydlg :public cdialog virtual void onok(); virtual void oncancel();};begin_message_map(cmydlg,cdialog) end_message_map()void cmydlg::onok() void cmydlg::oncancel()
8、初始化訊息
類內宣告
virtual bool oninitdialog();
類外實現
bool cmydlg::oninitdialog()
9、執行結果:先彈窗哎呦不錯,再進入主介面
三、無模式對話方塊
1、新增對話方塊資源
2、定義乙個類,管理對話方塊資源
3、呼叫cdialog::create 建立無模式對話方塊
cmydlg* pdlg = new cmydlg; m_pmainwnd = pdlg; pdlg->create(idd_dialog1); pdlg->showwindow(sw_show);
4、呼叫cdialog::showwindow
5、無模式對話方塊的關閉,利用 destroywindow 函式。
void cmydlg::onok( )void cmydlg::oncancel( )
6、無模式對話方塊的初始化,利用 cdialog::oninitdialog 虛函式
四、控制項和成員變數繫結的使用
1、定義乙個控制項,編輯框控制項
2、定義乙個成員變數
cstring stredit;
3、重寫基類的乙個成員虛函式 dodataexchange,內部呼叫一系列 ddx_***函式,實現繫結
類內宣告
virtual void dodataexchange(cdataexchange* pdx);
類外實現
void cmydlg::dodataexchange(cdataexchange* pdx)
實現按鈕命令
on_command(idc_button1, onbtn1 ) on_command(idc_button2, onbtn2 )
類內宣告命令函式
afx_msg void onbtn1( ); afx_msg void onbtn2( );
4、當需要實現資料交換,呼叫updatedata函式即可。
updatedata(true) - 將控制項資料儲存到成員變數
updatedata(false) -將成員變數中的資料顯示到控制項
類外實現
void cmydlg::onbtn1( )void cmydlg::onbtn2( )
5、執行結果
MFC在父對話方塊中嵌入子對話方塊
一 對話方塊中顯示對話方塊的方法 1 首先建立要在對話方塊裡顯示的那個對話方塊,命名為 idd dialog status。設定這個對話方塊的屬性 1 style 選擇 child 中文版 樣式 選擇 下層 2 border 為 none 中文版 邊框 選擇 無 2 為了顯示時能夠準確定位,我們可以...
mfc父對話方塊調出子對話方塊顯示資料的問題
2008 11 24 21 40 父對話方塊調出子對話方塊後,子對話方塊中定義了乙個cedit型別的變數,對cedit賦值後顯示不出來,希望高手指點一下。void cmy2008dlg onpaihang 這樣行不行,好像update不能用在cedit裡面吧?分享到 2008 11 24 22 00...
MFC 對話方塊
1 建立對話方塊模板,設定對話方塊屬性 cadditionddlg 主對話方塊類 顯示的主要介面 addition的資源樹 4個子項 dialog 對話方塊 含有2個對話方塊模板 id為idd aboutbox 關於對話方塊模板 idd addtion dlalog 主對話方塊模板 lcon 圖示 ...