C++ 具有BS_AUTORADIOBUTTON样式的所有者绘制按钮
我如何获得BS_AUTORADIOBUTTON的选中/未选中状态?我的代码目前不起作用C++ 具有BS_AUTORADIOBUTTON样式的所有者绘制按钮,c++,windows,winapi,mfc,ownerdrawn,C++,Windows,Winapi,Mfc,Ownerdrawn,我如何获得BS_AUTORADIOBUTTON的选中/未选中状态?我的代码目前不起作用 void CPngButton::DrawItem( LPDRAWITEMSTRUCT lpDIS ) { ASSERT(lpDIS != NULL); UINT state = lpDIS->itemState; if (state & ODS_CHECKED) { // do stuff } } 我也试过了 if (BST_CHECKED
void CPngButton::DrawItem( LPDRAWITEMSTRUCT lpDIS )
{
ASSERT(lpDIS != NULL);
UINT state = lpDIS->itemState;
if (state & ODS_CHECKED)
{
// do stuff
}
}
我也试过了
if (BST_CHECKED == SendMessage(BM_GETCHECK))
但这也不起作用。ODS\u CHECKED仅适用于菜单。BM_GETCHECK和BM_GETSTATE都可以提供选中状态:
if (Button_GetState(lpDIS->hwndItem) & BST_CHECKED)
根据ODS_CHECKED标志仅适用于菜单项:
ODS\u CHECKED
如果要检查菜单项,则设置此位。此位仅在菜单中使用
相反,要确定按钮的选中状态,应该调用。它将返回以下值之一:
BST\u未选中
按钮未选中
BST\u已选中
按钮已选中
BST\u不确定
按钮状态不确定
(仅当BS_3STATE
或BS_AUTO3STATE
设置时)
例如:
CButton myBtn;
if (myBtn.GetCheck() = BST_CHECKED)
{
// Drawing code here...
}
请注意,您需要包含
windowsx.h
才能使用按钮\u GetState
宏。