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();