利用對話框的一個好處是可以利用ClassWizard對對話框中各個控件產生的消息進行映射,ClassWizrd可以列出各種控件可以使用的消息,並能自動產生代碼。在本節中我們以一個例子來講解如何在對話框中對子窗口消息進行映射同時還講解如何對對話框中的子窗口進行初始化。
首先我們產生編輯好一個對話框,如圖,
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
在對話框中使用的控件和ID號如下表:
ID
類型
IDC_RADIO_TEST_1
圓形按鈕
IDC_RADIO_TEST_2
圓形按鈕
IDC_BUTTON_TEST
按鈕
IDC_CHECK_TEST
檢查按鈕
IDC_TREE_TEST
樹形控件
IDC_LIST_CTRL
List Ctrl
IDC_TAB_CTRL
Tab Ctrl
IDC_LIST_TEST
列表框
IDC_COMBO_TEST
組合框
IDC_EDIT_TEST
輸入框
首先我們需要在對話框的OnInitDialog()函數中對各個控件進行初始化,這裡我們使用CWnd* GetDlgItem( int nID )來通過ID號得到子窗口指針。(類似的函數還有UINT GetDlgItemInt( int nID, BOOL* lpTrans = NULL, BOOL bSigned = TRUE ) 通過ID號得到子窗口中輸入的數字,int GetDlgItemText( int nID, CString& rString ) 通過ID號得到子窗口中輸入的文字)。代碼如下:
BOOL CMy54_s1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
/*添加初始化代碼*/
//初始化輸入框
((CEdit*)GetDlgItem(IDC_EDIT_TEST))->SetWindowText("this is a edit box");