1、在單文檔創建一個組合框,具體步驟如下:
.h文件定義一個CComboBox *MyBox;
.cc文件中的一個ID:#define WM_MY_CHGCOMBOBOX 1
在消息映射create函數中添加如下代碼:
MyBox= new CComboBox;
MyBox->Create(ES_MULTILINE|CBS_DROPDOWN|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP|CBS_DROPDOWNLIST,CRect(10,355+25,180,500+25),this, WM_MY_CHGCOMBOBOX);//500 |CBS_AUTOHSCROLL
2、添加選擇消息映射
.h文件中添加afx_msg void OnMySelchangeCombo();
.cpp文件中,在消息映射的申明處添加ON_CBN_SELCHANGE(WM_MY_CHGCOMBOBOX, OnMySelchangeCombo)//WM_MY_CHGCOMBOBOX爲該組合框的ID
然後編寫void Boxtest::OnMySelchangeCombo()實現指定的功能。
例如要將當前行的文本信息顯示在指定的編輯框中,就可以OnMySelchangeCombo()函數中添加如下代碼:
//獲取當前組合框的當前選項的文本值
int nSel = MyBox->GetCurSel();
CString strText;
MyBox->GetLBText(nSel,strText);
//在編輯框中顯示字符串的值
Edit1->SetWindowText(strText);
3、消息響應
.h文件中添加afx_msg LRESULT OnMyChkboxMsg(WPARAM wParam, LPARAM lParam);
.cpp文件中添加ON_MESSAGE(WM_MY_UPDATACHKBOX, OnMyChkboxMsg)//WM_MY_UPDATACHKBOX爲消息映射的ID
然後編寫LRESULT CEDIDPRJ7View::OnMyChkboxMsg(WPARAM wParam, LPARAM lParam)函數實現功能;
並且還要在添加消息發送代碼:SendMessage(WM_MY_UPDATACHKBOX)。
4、防止消息框中的消息重複
在使用的過程中,我們可能會在某個按鍵的觸發下爲組合框添加我們所需要的文本。但是這樣沒按下一次,組合框就添加了一次文本信息,這樣就會導致重複。故可在函數中添加這樣的一行代碼。實現對上次組合框內容的清除。代碼如下:
((CComboBox*)GetDlgItem( WM_MY_CHGCOMBOBOX))->ResetContent();