具有 BS_AUTORADIOBUTTON 样式的所有者绘制的按钮

发布于 2024-10-18 16:28:34 字数 364 浏览 8 评论 0原文

如何获取 BS_AUTORADIOBUTTON 的选中/未选中状态?我的代码目前不起作用。

void CPngButton::DrawItem( LPDRAWITEMSTRUCT lpDIS )
{
    ASSERT(lpDIS != NULL);

    UINT state = lpDIS->itemState;
    if (state & ODS_CHECKED)
    {
    // do stuff
    }
}

我也尝试过,

if (BST_CHECKED == SendMessage(BM_GETCHECK))

但这也不起作用。

How do I get the checked/unchecked state of BS_AUTORADIOBUTTON? My code currently doesn't work.

void CPngButton::DrawItem( LPDRAWITEMSTRUCT lpDIS )
{
    ASSERT(lpDIS != NULL);

    UINT state = lpDIS->itemState;
    if (state & ODS_CHECKED)
    {
    // do stuff
    }
}

I've also tried

if (BST_CHECKED == SendMessage(BM_GETCHECK))

but this doesn't work either.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浪荡不羁 2024-10-25 16:28:34

ODS_CHECKED 仅适用于菜单。 BM_GETCHECK 和 BM_GETSTATE 都可以提供检查状态:

if (Button_GetState(lpDIS->hwndItem) & BST_CHECKED)

ODS_CHECKED only applies to menus. BM_GETCHECK and BM_GETSTATE can both provide the checked state:

if (Button_GetState(lpDIS->hwndItem) & BST_CHECKED)
你没皮卡萌 2024-10-25 16:28:34

根据文档ODS_CHECKED标志仅适用于菜单项:

ODS_CHECKED   如果要检查菜单项,则设置此位。该位仅在菜单中使用。

相反,要确定按钮的选中状态,您应该调用 CButton ::GetCheck函数。它将返回以下值之一:

BST_UNCHECKED          按钮未选中

BST_CHECKED 按钮已选中

BST_INDETERMINATE   按钮状态不确定
(仅当 BS_3STATEBS_AUTO3STATE 设置时)。

例如:

CButton myBtn;
if (myBtn.GetCheck() = BST_CHECKED)
{
    // Drawing code here...
}

According to the documentation, the ODS_CHECKED flag is only applicable to menu items:

ODS_CHECKED   This bit is set if the menu item is to be checked. This bit is used only in a menu.

Instead, to determine the checked state of a button, you should call the CButton::GetCheck function. It will return one of the following values:

BST_UNCHECKED           The button is unchecked

BST_CHECKED               The button is checked

BST_INDETERMINATE   Button state is indeterminate
(only if BS_3STATE or BS_AUTO3STATE set).

For example:

CButton myBtn;
if (myBtn.GetCheck() = BST_CHECKED)
{
    // Drawing code here...
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文