對(duì)話框1
記得以前上學(xué)的時(shí)候聽一個(gè)老師說過,計(jì)算機(jī)技術(shù)的核心是輸入輸出和二進(jìn)制。Windows應(yīng)用程序工作的基本流程就是從用戶那里得到數(shù)據(jù),經(jīng)過相應(yīng)的處理之后,再把處理結(jié)果輸出到屏幕和其他的輸出設(shè)備上。為了實(shí)現(xiàn)這個(gè)過程,就需要一個(gè)很重要的接口-對(duì)話框。
7.1對(duì)話框的基本知識(shí)
在MFC中,所有的控件類都是從CWnd類派生而來。以前做過一些其他開發(fā)技術(shù)的開發(fā)工作,相對(duì)其他IDE而言,VC下提供的控件很少,但是基本可以滿足開發(fā)需要了。
對(duì)話框的種類主要分2中,模態(tài)對(duì)話框和非模態(tài)對(duì)話框。
模態(tài)對(duì)話框:指當(dāng)前顯示時(shí),程序會(huì)暫停執(zhí)行,知道關(guān)閉這個(gè)模態(tài)對(duì)話框后才能繼續(xù)執(zhí)行其他任務(wù)(個(gè)人感覺這個(gè)只是一個(gè)相對(duì)暫停的概念,暫停的只是針對(duì)用戶操作部分,我們運(yùn)行一個(gè)殺毒軟件程序,殺毒過程中如果有一些參數(shù)設(shè)定,會(huì)出現(xiàn)一些模態(tài)對(duì)話框,但是這個(gè)時(shí)候殺毒程序還是會(huì)繼續(xù)執(zhí)行的)。
非模態(tài)對(duì)話框:對(duì)其他操作沒有影響,這個(gè)容易理解些。
7.2 對(duì)話框的創(chuàng)建和顯示
在Resources選項(xiàng)卡Dialog目錄下,可以添加一個(gè)新的對(duì)話框。添加一個(gè)對(duì)話框之后,類視圖可以看到也相應(yīng)添加了一個(gè)新的類。在創(chuàng)建一個(gè)MFC單文檔應(yīng)用程序的時(shí)候,系統(tǒng)為默認(rèn)創(chuàng)建一個(gè)CAboutDlg類,在Dialog文件夾下可以看到IDD_ABOUTBOX這個(gè)對(duì)話框。在 View類和Frame類中操作對(duì)話框的時(shí)候,首先需要在cpp文件中引入該對(duì)話框的頭文件。
顯示一個(gè)對(duì)話框
1 void CMyboleView::OnDialog()
2 {
3 // TODO: Add your command handler code here
4 CTestDlg dlg;
5 dlg.DoModal();//DoModal是一個(gè)函數(shù),剛不小心忘了括號(hào),記清楚了
6
7 }
如果要顯示一個(gè)非模態(tài)對(duì)話框,需要調(diào)用Dialog類的Create函數(shù)。MSDN中,Create類的聲明如下
1 BOOL Create( LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL );
2 BOOL Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );
由于非模態(tài)對(duì)話框顯示的時(shí)候程序不會(huì)暫停等待用戶操作,如果使用臨時(shí)變量的話,對(duì)象的生命周期在OnDialog()執(zhí)行完之后就結(jié)束,這樣就無法正常顯示,所以可采用創(chuàng)建對(duì)象指針的方式,由于動(dòng)態(tài)創(chuàng)建的指針對(duì)象是分配在堆內(nèi)存上,堆內(nèi)存上的變量周期可應(yīng)用程序相同。
1 CTestDlg *pDlg=new CTestDlg;
2 pDlg->Create(IDD_DIALOG1,this);
3 pDlg->ShowWindow(SW_SHOW);
這里又涉及一個(gè)動(dòng)態(tài)內(nèi)存釋放的問題
相關(guān)推薦:
2012年計(jì)算機(jī)等考四級(jí)數(shù)據(jù)庫工程師備考筆記匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |