在VC下,如何得到combobox控件得到在其选择改变后的值
CBN_SELCHANGE只能检测其改变的时候,不能得到其改变后确定的值。试了许多宏都不行。未解...
CBN_SELCHANGE只能检测其改变的时候,不能得到其改变后确定的值。试了许多宏都不行。未解
展开
4个回答
展开全部
如果你是用win32 api,在msdn上搜索wm_command消息与combobox相关的内容,你说的CBN_开头的消息是combobox notify的简写,尝试响应WM_NOTIFY消息,这也是微软推荐的消息,适合多重嵌套的复杂窗口,具体内容太多,msdn吧
帮你查了下,收到wm_notify的时候lparam应该是一个NMCOMBOBOXEXW*它里面的COMBOBOXEXITEMW ceItem成员里面有个UINT mask,这个应该就是你要的东西
帮你查了下,收到wm_notify的时候lparam应该是一个NMCOMBOBOXEXW*它里面的COMBOBOXEXITEMW ceItem成员里面有个UINT mask,这个应该就是你要的东西
更多追问追答
追问
对,但是CBN_EDITCHANGE也没用。我不知道是否还要后续一些处理工作
追答
相应wm_notify需要用到一些预定义的数据结构,lparam是这些结构的指针,消息就封装在这些结构里面,比如NMCOMBOBOXEXW,NMTVITEMCHANGE等等,内容比较多,最好到msdn上查一查,如果网站很慢,是因为我们国家限制访问外国网站,怎么办我就不教你了,不过微软的网站应该可以访问的。
项目里有用过,treeview+checkbox,应该比你这个复杂,具体不记得了,思路就是对那个mask做位运算然后判断是不是选中,具体的真记不清,控件消息一般就是响应wm_command和wm_notify,到msdn查查就很清楚了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是用win32 api,在msdn上搜索wm_command消息与combobox相关的内容,说的CBN_开头的消息是combobox notify的简写,尝试响应WM_NOTIFY消息,这也是微软推荐的消息,适合多重嵌套的复杂窗口,具体内容太多,msdn吧
收到wm_notify的时候lparam应该是一个NMCOMBOBOXEXW*它里面的COMBOBOXEXITEMW ceItem成员里面有个UINT mask。
收到wm_notify的时候lparam应该是一个NMCOMBOBOXEXW*它里面的COMBOBOXEXITEMW ceItem成员里面有个UINT mask。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//还是CBN_SELCHANGE的响应函数里这样写
void CTestDigital::OnCbnSelchangeCmbIoName()
{
TCHAR buf[MAX_PATH] = { 0 };
int idx = m_Cmb.GetCurSel();
if (-1 != idx)
{
m_Cmb.GetLBText(idx, buf);// buf 就是选择改变后的值
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp); //将获取的值存放到CString类型变量strTemp中。IDC_COMBO_CF是你控件的ID
追问
CComboBox不能用这个类。而且你这个应该只能得到静态的结果。我现在是要一改变就得到当前所选值。所以我得触发一个宏消息
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询