資源描述:
《MFC與對(duì)話框》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、MFC與對(duì)話框1、對(duì)話框編輯器設(shè)計(jì)對(duì)話框模板,有兩個(gè)重要的步驟:1、從工具欄選擇控件(control,功能各異的小小零組件)加到對(duì)話框2、填寫此控件的標(biāo)題、ID以及其他性質(zhì)。2、以下利用對(duì)話框編輯器設(shè)計(jì)【PenWidth】對(duì)話框的過(guò)程。1、在VisualC++集成開發(fā)環(huán)境中單擊【Insert/Resource】——>在【InsertResource】對(duì)話框中——>【Resourcetype】為Dialog。2、Scribble。Rc文件被打開,對(duì)話框編輯器出現(xiàn),會(huì)自動(dòng)給我們一個(gè)空白的對(duì)話框,內(nèi)含有兩個(gè)按鈕【OK】和【Cancel】,控件工具箱也為出現(xiàn),如果沒(méi)有出現(xiàn),點(diǎn)擊視圖—
2、—>工具箱,控件工具箱就會(huì)出現(xiàn)。3、為控件設(shè)定屬性。打開【DialogProperties】對(duì)話框,在對(duì)話框的任何地方單擊鼠標(biāo)右鍵,【DialogProperties】對(duì)話框就會(huì)出現(xiàn)?,F(xiàn)在修改對(duì)話框的ID為IDD_PEN_WIDTHS,把標(biāo)題改為“PenWidths”.4、為對(duì)話框加入兩個(gè)Edit控件,兩個(gè)Static控件,以及一個(gè)按鈕1、鼠標(biāo)右鍵單擊新增的按鈕,在Propertypage中把標(biāo)題改為“Default”,并把ID改為IDC_DEFAULT_PEN_WIDTHS2、鼠標(biāo)右鍵單擊第一個(gè)Edit控件,在Propertypage中把ID改為IDC_THIN_PEN_W
3、IDTH.以同樣的方式把第二個(gè)Edit控件的ID改為IDC_THICK_PEN_WIDTH.3、鼠標(biāo)右鍵單擊第一個(gè)Static控件,Propertypage中出現(xiàn)其屬性,在Caption項(xiàng)把內(nèi)容改為“ThinPenWidth:”,以同樣的方式把第二個(gè)Static控件的內(nèi)容改為“ThickPenWidth”4、調(diào)整每一個(gè)控件的位置,使之美觀整齊5、調(diào)整Taborder,所謂Taborder是指使用者在操作對(duì)話框時(shí),按下Tab鍵后,鍵盤輸入焦點(diǎn)在各個(gè)控件上的巡回次序。調(diào)整Taborder的方法:【LayOut/TabOrder】命令項(xiàng)。即格式——>Tab鍵順序6、測(cè)試對(duì)話框。單擊
4、【LayOut/Test】命令項(xiàng)。1、利用ClassWizard連接對(duì)話框與其專用類一旦完成了對(duì)話框的外貌設(shè)計(jì),再來(lái)就是設(shè)計(jì)其行為,我們有兩件事要做:第一件事:從MFC的CDialog中派生出一個(gè)類,用來(lái)負(fù)責(zé)對(duì)話框的行為。第二件事:利用ClassWizard把這個(gè)類和先前你產(chǎn)生的對(duì)話框資源連接起來(lái),通常這意味這你必須聲明某些函數(shù),用以處理你感興趣的對(duì)話框消息,并將對(duì)話框中的控件對(duì)應(yīng)到類的成員變量上,這也就是所謂的DialogDataeXchange(DDX),如果你對(duì)變量的內(nèi)容有任何的“確認(rèn)規(guī)則”的話,ClassWizard也允許你設(shè)定之,這就是所謂的DialogDataVa
5、lidation(DDV)。注意:所謂“確認(rèn)規(guī)則”:是指對(duì)某些特殊用途的變量進(jìn)行內(nèi)容檢查工作,例如月份一定是只可能在1~12之間,日期一定只可能是在1~31之間,人名一定不會(huì)有數(shù)字夾在中間,金錢數(shù)額不能夾帶文字。對(duì)話框的消息處理函數(shù)下面是完成上述所說(shuō)的兩件事中的第一件事的步驟:在對(duì)話框的任意位置雙擊鼠標(biāo)右鍵,進(jìn)入ClassWizard,在ClassName項(xiàng)填入類的名稱:CPenWidthsDlg,在類聲明文件處填寫類的PENWIDTH.h聲明文件,在類實(shí)現(xiàn)項(xiàng)填寫:PENWIDTH.H類的實(shí)現(xiàn)文件。單擊確認(rèn)按鈕于是類就產(chǎn)生了。下面是完成第二件事的步驟:要完成第二件事有兩個(gè)操作
6、需要完成:1、在CPenWidthsDlg中增加兩個(gè)變量,分別代表粗筆寬和細(xì)筆寬1、在CPenWidthsDlg中增加一個(gè)函數(shù),負(fù)責(zé)【Default】鈕被按下后的操作。以下是ClassWizard的操作步驟(增加一個(gè)函數(shù))1、進(jìn)入ClassWizard,選擇【messageMaps】選項(xiàng)卡,在選擇【ClassName】清單中的CpenWidthsDlg。2、【ObjectsIDs】清單列出對(duì)話框中各個(gè)控件的ID,請(qǐng)選擇其中的IDC_DEFAULT_PEN_WIDTH3、在右側(cè)的【Message】中選擇BN_CLICKED,我們處理的是控件,他們產(chǎn)生的消息是特別的一類,稱為No
7、tification消息。這種消息控件用來(lái)通知父窗口(通常是個(gè)對(duì)話框)某個(gè)事件產(chǎn)生了。4、按下【AddFuncation】鈕,接受默認(rèn)的OnClickDefaultPenWidths函數(shù)(也可以更改)5、單擊【EditCode】按鈕,光標(biāo)落在OnClickDefaultPenWidths函數(shù)身上。對(duì)話框數(shù)據(jù)交換與檢驗(yàn)(DDX&DDV)以兩個(gè)成員變量映射到對(duì)話框上的兩個(gè)Edit字段,當(dāng)【確認(rèn)】按鈕按下時(shí),第一個(gè)Edit字段的內(nèi)容自動(dòng)存儲(chǔ)m_nThinWidth中,第二個(gè)Edit字段的內(nèi)容自動(dòng)存儲(chǔ)m_nTh