MFC練習4 使用模態對話方塊

2021-06-06 09:55:59 字數 2133 閱讀 2115

模態對話方塊(modal dialogue box,又叫做模式對話方塊),是指在使用者想要對對話方塊以外的應用程式進行操作時,必須首先對該對話方塊進行響應。一般來說,windows應用程式中,對話方塊分為模態對話方塊和非模態對話方塊兩種。二者的區別在於當對話方塊開啟時,是否允許使用者進行其他物件的操作。

基於之前的練習3,我們已經有了乙個口令對話方塊,可以試著將兩者進行結合使用。

ⅰ、新增選單資源和選單響應函式

1>在dialog resource | menu | idr_dialogtype下開啟選單資源

2>在「檢視」下的空白處新增一選單項,選中separator使產生一分隔條

3>再新增選單項並將其id改為id_view_modaldialog,在caption中輸入「模態對話方塊(&m)」

ⅱ、編輯對話方塊資源和建立對話方塊類

1>有上次編輯的基礎,我們將對話編輯如下

id控制項

屬性idc_***1

radio button,選中group

男idc_***2

radio button

女idc_interest1

check box,選中group

登山idc_interest2

check box

遊戲idc_interest3

check box

看書idc_interest4

check box

玩遊戲idc_combo

combo box

idc_edit

edit box

ⅲ、新增訊息響應函式和**

1>按下ctrl+w並在class name下選中cdialogview,對應的object ids選中id_view_modaldialog,在message中選command,最後add function(使用預設函式名)

2>類似,在cdialogmodal中新增oninitdialog()、onok()和oncancel()函式

3>在member variable裡如下進行修改

control ids

type

member

idc_combo

ccombobox

m_combo

idc_edit

cstring

m_edit

idc_***1

cbutton

m_radio

4>在下列函式寫下如是語句,相關的#include "dialogmodal.h"記得新增到對應的cpp裡去

void cdialogview::onviewmodaldialog() 

void cdialogmodal::oncancel()

void cdialogmodal::onok()

p=(cbutton*) getdlgitem(idc_interest2);

if(p->getcheck())

p=(cbutton*) getdlgitem(idc_interest3);

if(p->getcheck())

p=(cbutton*) getdlgitem(idc_interest4);

if(p->getcheck())

if(!flag)str+=" 未知 ";

str+=",學歷: ";

cstring tmp;

int number=m_combo.getcursel();//得到當前被選中的序號

m_combo.getlbtext(number,tmp);//獲取當前內容

str+=tmp;

m_edit=str;

updatedata(false);//更新內容

}bool cdialogmodal::oninitdialog()

cpassworddialog cdlg;//建立物件

if(cdlg.domodal()==idok)//使用者按下確定

else

}

模態對話方塊練習

實現效果就跟 註冊一樣,一點選彈出乙個框來 初始 點選按鈕後 點選cancle按鈕後回到第乙個狀態,這個框會隨滑鼠上下滾動。實現 doctype html html lang en head meta charset utf 8 title 模態對話方塊 title style d1.shade m...

非模態對話方塊 MFC

cvolsetdlg m pvoldlg null m pvoldlg newcvolsetdlg m pvoldlg create idd dlg vol m pvoldlg showwindow sw show 過載oncancel函式 void cxx oncancel todo add yo...

MFC 非模態對話方塊

非模態對話方塊 用mfc可以建立非模態的對話方塊,只是建立方式不同,模態對話方塊用 dlg.domodel 呼叫,而非模態對話方塊要用create函式建立呼叫。假設idd test dlg為已經定義的對話方塊資源的id號 ctestdlg dlg new ctestdlg dlg create id...