模態對話方塊(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...