1,下拉列表式组合框

合框被操作时会向父窗口发送通知消息,这些通知消息及其含义如下:

CBN_CLOSEUP:组合框的列表框组件被关闭,简易组合框不会发送该通知消息
       CBN_DBLCLK:用户在某列表项上双击鼠标,只有简易组合框才会发送该通知消息
       CBN_DROPDOWN:组合框的列表框组件下拉,简易式组合框不会发送该通知消息
       CBN_EDITUPDATE:在编辑框准备显示改变了的正文时发送该消息,下拉列表式组合框不会发送该消息
       CBN_EDITCHANGE:编辑框的内容被用户改变了,与CBN_EDITUPDATE不同,该消息是在编辑框显示的正文被刷新后才发出的,下拉列表式组合框不会发送该消息
       CBN_ERRSPACE:组合框无法申请足够的内存来容纳列表项
       CBN_SELENDCANCEL:表明用户的选择应该取消,当用户在列表框中选择了一项,然后又在组合框控件外单击鼠标时就会导致该消息的发送
       CBN_SELENDOK:用户选择了一项,然后按了回车键或单击了下滚箭头,该消息表明用户确认了自己所作的选择
       CBN_KILLFOCUS:组合框失去了输入焦点
       CBN_SELCHANGE:用户通过单击或移动箭头键改变了列表的选择
       CBN_SETFOCUS:组合框获得了输入焦点

目前使用:CBN_SELCHANGE

如下代码是:获取当前选择的item

void CxxxDlg::OnSelchangeCombBaudRate()
{
// TODO: Add your control notification handler code here
TRACE("DDDDDDDDDDD");
CString baudTemp = "";
int nSel = m_baud_rate.GetCurSel();// 获取组合框控件的列表框中选中项的索引 
m_baud_rate.GetLBText(nSel, baudTemp);// 根据选中项索引获取该项字符串

baudRate = atoi(baudTemp);//将CString转为int

CString str = "";
str.Format("baud rate: %d", baudRate);//将int转为CString
//AfxMessageBox(str);//通过弹窗显示,用于调试,也可以使用TRACE显示

}

(1) 下拉列表式组合框 中添加列表项

方法1:

BOOL CExample25Dlg::OnInitDialog()

...

  1. // 为组合框控件的列表框添加列表项“鸡啄米”
  2. m_comboWeb.AddString(_T("鸡啄米"));
  3. // 为组合框控件的列表框添加列表项“百度”
  4. m_comboWeb.AddString(_T("百度"));
  5. // 在组合框控件的列表框中索引为1的位置插入列表项“新浪”
  6. m_comboWeb.InsertString(1, _T("新浪"));
  7. // 默认选择第一项
  8. m_comboWeb.SetCurSel(0);
  9. // 编辑框中默认显示第一项的文字“鸡啄米”
  10. SetDlgItemText(IDC_SEL_WEB_EDIT, _T("鸡啄米"));

方法2:

右击 组合框控件 选择 属性->数据 ,在文本框中输入列表项,按 ctrl + enter 换行

(2) 不设备 组合框控件的列表框自动排序

右击 组合框控件 选择 属性->样式 ,取消“分类”

2. 添加控件变量,用于获得控件的所有操作和数据

右击 控件 ->添加 类向导

04-15 12:29