MFC:CMFCToolBar SetButtonStyle无法使用样式TBBS_PRESSED?

时间:2013-10-15 09:29:09

标签: c++ mfc toolbar cmfctoolbar

是否存在控制中的错误?或者我做错了什么?

在.h
CMFCToolBar m_wndToolBar;
在留言地图中 ON_COMMAND(ID_MYID, &CMainFrame::OnToolBar)

void CMainFrame::OnToolBar()
{
int nIndex = m_wndToolBar.CommandToIndex(ID_MYID);
UINT nState = m_wndToolBar.GetButtonStyle(nIndex);
if(nState & TBBS_PRESSED)
nState &= ~TBBS_PRESSED;
else
nState |= TBBS_PRESSED;
m_wndToolBar.SetButtonStyle(nIndex,nState);
m_wndToolBar.InvalidateButton(nIndex);
}

点击按钮,我需要按下按钮,当用户再次点击时,按钮会被按下。

单击按钮没有任何反应:(

2 个答案:

答案 0 :(得分:0)

只需为特定项创建一个ON_UPDATE_COMMAND处理程序。 使用pCmdUI-> SetCheck来指示向下或向上状态。

MFC永远不会直接更新工具栏和菜单。他们要求框架更新按钮和菜单项的状态。

答案 1 :(得分:0)

您的说明表明您希望按钮具有“复选框”的行为。如果这是正确的,请确保为按钮样式指定 TBBS_CHECKBOX 。每次按下按钮时,您都不需要手动处理渲染复选框状态。