关于获取checkbox选中状态的一个奇怪问题?没分的孩子好可怜

雷格 2013-10-30 05:04:53

void CControlPanelDlg::OnBnClickedMuteCheck()
{
// TODO: 在此添加控件通知处理程序代码
//AfxMessageBox(L"CHEK");
if (m_MuteCheckBox.GetState() == BST_CHECKED)
{
GetParent()->PostMessage(WM_MUTE);
}
else
{
GetParent()->PostMessage(WM_UNMUTE);
}

}

我在checkbox的click事件的处理函数中获得checkbox的状态。发现不管checkbox是否选中,每次获得值都是521。而在获取状态前加一条AfxMessageBox(L"CHEK")语句就能获得正确的状态值了。难道是因为click后,获取操作来的太快而状态还没来得及更新呢?
我该怎么样才能获得checkbox的正确值呢?难道非要加一条AfxMessageBox(L"CHEK")语句不可
...全文
106 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
雷格 2013-10-30
  • 打赏
  • 举报
回复
谢谢楼上的几位,原来是我自己犯了低级错误。 本来应该用getcheck的,结果我用的是getstate。 可是根据msdn getstate也可以检测是否check的。还是用getcheck
雷格 2013-10-30
  • 打赏
  • 举报
回复
引用 2 楼 u012546037 的回复:
在取值之前 先更新对象内容 m_MuteCheckBox.UpdateData();
没用啊,是不是我创建的有问题。 我是直接给窗口上的checkbox添加的变量。
打你屁屁 2013-10-30
  • 打赏
  • 举报
回复
把check当button使
qinken547 2013-10-30
  • 打赏
  • 举报
回复
你在其他函数里面用GetState()获取就行了,check的click事件正在发生check状态改变。 2楼的方法我没试过,你可以试下
雷格 2013-10-30
  • 打赏
  • 举报
回复
引用 1 楼 qinken547 的回复:
应当是check点击事件完成之后再去获取check状态,在check点击事件函数中去取值是不合适的,此时check的值正在改变
那check点击事件完成后的消息或事件是什么呢?
Lordard 2013-10-30
  • 打赏
  • 举报
回复
在取值之前 先更新对象内容 m_MuteCheckBox.UpdateData();
qinken547 2013-10-30
  • 打赏
  • 举报
回复
应当是check点击事件完成之后再去获取check状态,在check点击事件函数中去取值是不合适的,此时check的值正在改变

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧