如何获得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))
但这也不起作用。
答案 0 :(得分:4)
ODS_CHECKED仅适用于菜单。 BM_GETCHECK和BM_GETSTATE都可以提供检查状态:
if (Button_GetState(lpDIS->hwndItem) & BST_CHECKED)
答案 1 :(得分:1)
根据documentation,ODS_CHECKED
标志仅适用于菜单项:
ODS_CHECKED
如果要检查菜单项,则设置此位。该位仅用于菜单。
相反,要确定按钮的已检查状态,您应该调用CButton::GetCheck
function。它将返回以下值之一:
BST_UNCHECKED
该按钮未选中
BST_CHECKED
选中该按钮
BST_INDETERMINATE
按钮状态不确定 (仅在设置BS_3STATE
或BS_AUTO3STATE
时)。
例如:
CButton myBtn;
if (myBtn.GetCheck() = BST_CHECKED)
{
// Drawing code here...
}