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