資源描述:
《對話框和控件編程》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、對話框與控件編程一、對話框編程l創(chuàng)建一個基于單文檔視圖框架的應(yīng)用程序。l執(zhí)行菜單命令:視圖/資源視圖,進(jìn)入資源視圖窗口,點(diǎn)擊Dialog資源項,右鍵添加一個對話框資源。l在對話框資源窗口上右鍵,添加對話框類。l在主菜單資源的視圖菜單中添加新菜單項,用于顯示對話框。將新添加的菜單項的消息處理函數(shù)映射到View類中。一、添加對話框類l在新加的菜單消息處理函數(shù)中添加代碼lCDlgExam1dlg;dlg.DoModal();通過調(diào)用Cdialog類的DoModal()函數(shù)顯示的對話框都是模態(tài)對話框?!澳B(tài)對話框”指對話框被彈出后,用
2、戶必須在對話框中作出相應(yīng)的操作,在退出對話框之前,對話框所在應(yīng)用程序的其他操作不能繼續(xù)執(zhí)行?!胺悄B(tài)對話框”指對話框被彈出后,一直保留在屏幕上,用戶可繼續(xù)在對話框所在應(yīng)用程序中執(zhí)行其他操作。當(dāng)需要使用對話框時,只需像激活窗口一樣單擊對話框所在區(qū)域即可。非模態(tài)對話框的編寫和使用1.添加一個新的對話框資源2.添加一個新的對話框類CDlgNonModal3.為對話框添加一個靜態(tài)整型變量NumOfInstance,初始化為0;3.重載對話框類的OnCancel和PostNcDestroy函數(shù)voidCDlgNonModal::OnCa
3、ncel(){DestroyWindow();CDlgNonModal::NumOfInstance=0;}voidCDlgNonModal::PostNcDestroy(){CDialog::PostNcDestroy();deletethis;}intCDlgNonModal::NumOfInstance=0;CDlgNonModal::CDlgNonModal(CWnd*pParent/*=NULL*/):CDialog(CDlgNonModal::IDD,pParent){CDlgNonModal::NumOfInst
4、ance++;}4.在View類中添加菜單命令處理函數(shù)if(CDlgNonModal::NumOfInstance==0){CDlgNonModal*pDlg=newCDlgNonModal(0);pDlg->Create(IDD_DIALOG1);pDlg->ShowWindow(SW_SHOW);}思考:如果需要在對話框類的成員函數(shù)中調(diào)用View類的成員函數(shù)?應(yīng)該如何設(shè)計對話框類?在對話框類的成員函數(shù)中如何獲取應(yīng)用程序的View類實(shí)例的指針?只要為新創(chuàng)建的對話框類的構(gòu)造函數(shù)添加一個View類的指針,在創(chuàng)建對話框類時,傳入V
5、iew的指針即可。二、按鈕控件l1、單選按鈕l添加groupbox控件l將單選按鈕控件放在groupbox控件中l(wèi)將每個groupbox控件中的第一個單選按鈕的Group屬性值設(shè)為true,保證不同groupbox控件中的單選按鈕互不影響初始化單選按鈕的選擇狀態(tài)重載對話框的OnInitDialog()函數(shù),使用對話框成員函數(shù)CheckRadioButton(…)初始化一個groupbox中的單選按鈕選擇狀態(tài)。voidCheckRadioButton(intnIDFirstButton,intnIDLastButton,intn
6、IDCheckButton)獲取一個groupbox中的單選按鈕選擇值:使用對話框的GetCheckedRadioButton(…)成員函數(shù)獲取選中的單選按鈕的ID號,使用對話框的GetDlgItemTextW(…)獲取單選按鈕的文本。intGetCheckedRadioButton(intnIDFirstButton,intnIDLastButton);長春理工大學(xué)計算機(jī)科學(xué)技術(shù)學(xué)院陳純毅CheckRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE,IDC_RADIO_MALE);void
7、CDlgExam1::OnBnClickedButOk(){intnID=GetCheckedRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE);CStringstrAge,strSex;GetDlgItemTextW(nID,strSex);CDialog::OnOK();MessageBox(CString(L"你的選擇是:")+strSex);}2、復(fù)選框按鈕一個groupbox中的復(fù)選框按鈕的初始化使用對話框類的GetDlgItem(…)獲得復(fù)選框按鈕對象的指針,將該指針轉(zhuǎn)換成Cb
8、utton類型指針,使用Cbutton的SetCheck成員函數(shù)設(shè)置復(fù)選框按鈕。獲取一個groupbox中被勾選的復(fù)選框按鈕的文本將所有復(fù)選框按鈕的ID號存在一個數(shù)組中。通過循環(huán),使用GetDlgItem(…)獲得每個復(fù)選框按鈕對象的指針,并轉(zhuǎn)換成Cbutton指針,通過CB