我用的是vs2017版
模態:彈出後該程式的其它視窗就呈不可用的狀態,原來程式暫停執行,直到這個模態視窗關閉後才回到原來程式繼續。
非模態: 直接顯示出來,原來的程式繼續執行下面的語句,其它視窗也呈可用狀態。
一、新建mfc(基於對話方塊模式)
二、按圖所示完成主對話方塊布局(alt+ctrl+x調出工具箱)
使用者和操作框是【group box】 (組成框)
其他的是【button】 (按鈕)
修改名稱在屬性的caption中直接修改
三、為對話方塊各個屬性設定id
idc_button1
idc_button2
idc_button_filedialog ///檔案對話方塊
idc_button_fontdialog ///字型對話方塊
idc_button_colordialog ///顏色對話方塊
四、新增兩個新的對話方塊
請輸入使用者名稱:【static text】(靜態文字)
把示例編輯框屬性read only 改為 false
五、單擊選中idd_dialog1,雙擊對話方塊空白部分
為idd_dialog1新增cinputdlg類,相同的,為idd_dialog2新增cshowdlg類
在兩個類中在=#pragma once後新增如下** #include "resource.h"
cinputdlg類新增如圖所示
對新建的兩個對話方塊,新增變數【變數型別】為cstring,【變數名】為m_username,且要選value類別
在主對話方塊類coopex1dlg.h 中新增成員變數
cshowdlg * m_psdlg
cinputdlg * m_pidlg
cstring username;
並在coopex1dlg.h中新增標頭檔案引用
#include "inputdlg.h"
#include "showdlg.h"
六、選擇模態按鈕,修改函式內容
void cdialogexdlg::onbutton1()
}
非模態
void cmfc1dlg::onbnclickedbutton2()
七、檔案對話方塊新增
cfiledialog
filedlg(true,null,null,ofn_hidereadonly|ofn_overwriteprompt,null,null);
filedlg.domodal();
字型對話方塊新增
cfontdialog
fontdlg(null,cf_effects|cf_screenfonts,null,null);
fontdlg.domodal();
顏色對話方塊新增
ccolordialog colordlg(0,0,null);
colordlg.domodal();
哈哈哈大功告成,執行一波美滋滋,不過mfc的**真的可讀性賊差特暈。
持續更新中~~~~
「模態」與「非模態」
模態與非模態,主要就是體現在是否 阻塞 應用程式上。模態 在該視窗彈出後,會阻塞應用程式的視窗,使其不可操作 非模態 不會阻塞應用程式的視窗,兩者可獨立操作。模,就是模子,模子是不可更改的,因此模態情況下,除了它本身之外的內容不可操作。兩個的使用根據實際情況而定,轉換的方式是通過 setmodal ...
MFC模態與非模態對話方塊
1.1模態對話方塊 model dialog box 當模態對話方塊顯示時,程式會暫停執行,直到關閉這個模態對話方塊之後,才能執行程式中的其他任務。1.2非模態對話方塊 modeless dialog box 當非模態對話方塊顯示時,執行轉而執行程式中的其他任務,而不用關閉這個對話方塊。2.1模態對...
MFC模態與非模態對話方塊
1.1模態對話方塊 model dialog box 當模態對話方塊顯示時,程式會暫停執行,直到關閉這個模態對話方塊之後,才能執行程式中的其他任務。1.2非模態對話方塊 modeless dialog box 當非模態對話方塊顯示時,執行轉而執行程式中的其他任務,而不用關閉這個對話方塊。2.1模態對...