如何查看是否选中了MFC复选框
How to see if an MFC checkbox is selected
我已经在很多地方找到了答案,他们推荐了我的方法,但这似乎对我不起作用,所以非常感谢任何帮助。
我有一个复选框,我希望它在选中时启用编辑框,在取消选中时禁用它。
以下代码是我创建的:
void CMFCApplication1Dlg::OnBnClickedCheck1()
{
UINT nCheck = CheckBox.GetState();
if (nCheck == BST_CHECKED)
{
EditBox.EnableWindow(TRUE);
}
else if (nCheck == BST_UNCHECKED)
{
EditBox.EnableWindow(FALSE);
}
else
{
EditBox.EnableWindow(TRUE);
}
当我在调试中运行它时,Check是520,所以直接转到else选项。
非常感谢
如果您阅读GetState
上的手册页面,您会看到它返回一个位掩码。
这意味着你不能直接在比较中使用它,你必须像口罩一样检查它:
if ((nCheck & BST_CHECKED) != 0)
{
// Button is checked
}
else
{
// Button is unchecked
}
但是,GetCheck
可能更适合您的情况。
CButton的GetState获取对话框对象的当前状态。您想要使用的是CButton的GetCheck。
或者,如MSDN上所示,您可以对返回值进行逐位掩码,以获得当前的Check状态,但GetCheck就在那里,所以您也可以使用它。
来自MSDN论坛:
CButton *m_ctlCheck = (CButton*) GetDlgItem(IDC_CHECKBOX);
int ChkBox = m_ctlCheck->GetCheck();
CString str;
if(ChkBox == BST_UNCHECKED)
str.Format(_T("Un Checked"));
else if(ChkBox == BST_CHECKED)
str.Format(_T("Checked"));
将名为IDC_CHECK1的复选框的状态读取到变量中:
bool IsCheck1Checked;
使用以下代码:
CButton *m_ctlCheck1 = (CButton*)GetDlgItem(IDC_CHECK1);
IsCheck1Checked = (m_ctlCheck1->GetCheck() == 1) ? true : false;
相关文章:
- 根据变量使Qt UI中的复选框为已选中/未选中
- "动态创建的事件处理程序"复选框
- 有没有办法在取消选中复选框时隐藏按钮?
- 如何删除Qt设计器中自定义插件的QString属性的"translatable"复选框?
- 设置复选框选项C++
- 如何在所有者描述的 MFC CMenu 派生菜单中显示复选框?
- 如何在MFC对话框应用程序中默认将复选框设置为选中?
- 如何使复选框独占
- AccessObjectFromPoint 返回客户端对象而不是复选框
- Windows 32 API:2个复选框作为一个
- 如何在 QT3 中将复选框添加到 QFileDialog 窗口
- 在 QComboBox 中切换复选框
- 调整QT创建者的复选框
- 如何在C 上创建复选框过滤器
- 如何设置按钮的背景颜色,包括复选框按钮
- 如何查看是否选中了MFC复选框
- Visual Studio MFC CListCtrl 复选框 - 空格键
- C++ 复选框就像单选按钮 WINAPI ( 无 MFC )
- C++ MFC、带复选框的自定义网格、单选按钮
- MFC:如何在LVS_EX_CHECKBOXES样式的列表ctrl中获得复选框按钮的wnd