MFC學習(一)模態與非模態

2021-09-29 06:20:59 字數 1908 閱讀 9633

我用的是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模態對...