在VC下,如何得到combobox控件得到在其选择改变后的值

CBN_SELCHANGE只能检测其改变的时候,不能得到其改变后确定的值。试了许多宏都不行。未解... CBN_SELCHANGE只能检测其改变的时候,不能得到其改变后确定的值。试了许多宏都不行。未解 展开
 我来答
darkelemental
推荐于2016-06-09 · TA获得超过242个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:97.3万
展开全部
如果你是用win32 api,在msdn上搜索wm_command消息与combobox相关的内容,你说的CBN_开头的消息是combobox notify的简写,尝试响应WM_NOTIFY消息,这也是微软推荐的消息,适合多重嵌套的复杂窗口,具体内容太多,msdn吧

帮你查了下,收到wm_notify的时候lparam应该是一个NMCOMBOBOXEXW*它里面的COMBOBOXEXITEMW ceItem成员里面有个UINT mask,这个应该就是你要的东西
更多追问追答
追问
对,但是CBN_EDITCHANGE也没用。我不知道是否还要后续一些处理工作
追答
相应wm_notify需要用到一些预定义的数据结构,lparam是这些结构的指针,消息就封装在这些结构里面,比如NMCOMBOBOXEXW,NMTVITEMCHANGE等等,内容比较多,最好到msdn上查一查,如果网站很慢,是因为我们国家限制访问外国网站,怎么办我就不教你了,不过微软的网站应该可以访问的。

项目里有用过,treeview+checkbox,应该比你这个复杂,具体不记得了,思路就是对那个mask做位运算然后判断是不是选中,具体的真记不清,控件消息一般就是响应wm_command和wm_notify,到msdn查查就很清楚了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舒畅还温文尔雅丶繁星i
2015-10-23 · TA获得超过2.9万个赞
知道大有可为答主
回答量:6427
采纳率:65%
帮助的人:511万
展开全部
如果是用win32 api,在msdn上搜索wm_command消息与combobox相关的内容,说的CBN_开头的消息是combobox notify的简写,尝试响应WM_NOTIFY消息,这也是微软推荐的消息,适合多重嵌套的复杂窗口,具体内容太多,msdn吧

收到wm_notify的时候lparam应该是一个NMCOMBOBOXEXW*它里面的COMBOBOXEXITEMW ceItem成员里面有个UINT mask。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沈阳佳控
2019-01-04
知道答主
回答量:1
采纳率:0%
帮助的人:770
展开全部
//还是CBN_SELCHANGE的响应函数里这样写
void CTestDigital::OnCbnSelchangeCmbIoName()
{
TCHAR buf[MAX_PATH] = { 0 };
int idx = m_Cmb.GetCurSel();
if (-1 != idx)
{
m_Cmb.GetLBText(idx, buf);// buf 就是选择改变后的值
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
账号狠安全
2015-03-04 · TA获得超过207个赞
知道小有建树答主
回答量:233
采纳率:58%
帮助的人:119万
展开全部
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetWindowText(strTemp); //将获取的值存放到CString类型变量strTemp中。IDC_COMBO_CF是你控件的ID
追问
CComboBox不能用这个类。而且你这个应该只能得到静态的结果。我现在是要一改变就得到当前所选值。所以我得触发一个宏消息
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式