MFC记录
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()
...
- // 为组合框控件的列表框添加列表项“鸡啄米”
- m_comboWeb.AddString(_T("鸡啄米"));
- // 为组合框控件的列表框添加列表项“百度”
- m_comboWeb.AddString(_T("百度"));
- // 在组合框控件的列表框中索引为1的位置插入列表项“新浪”
- m_comboWeb.InsertString(1, _T("新浪"));
- // 默认选择第一项
- m_comboWeb.SetCurSel(0);
- // 编辑框中默认显示第一项的文字“鸡啄米”
- SetDlgItemText(IDC_SEL_WEB_EDIT, _T("鸡啄米"));
方法2:
右击 组合框控件 选择 属性->数据 ,在文本框中输入列表项,按 ctrl + enter 换行
(2) 不设备 组合框控件的列表框自动排序
右击 组合框控件 选择 属性->样式 ,取消“分类”
2. 添加控件变量,用于获得控件的所有操作和数据
右击 控件 ->添加 类向导