1

by是否有bug在控制?还是我做错了什么?


CMFCToolBar m_wndToolBar;
在消息映射中的.h中
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);
}

通过单击按钮,我需要设置按下按钮,当用户再次单击时,按钮变为未按下状态。

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

4

2 回答 2

1

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

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

于 2013-10-15T09:57:55.067 回答
0

您的描述表明您希望按钮具有“复选框”的行为。如果正确,请确保为按钮样式指定TBBS_CHECKBOX。您不需要在每次按下按钮时手动处理呈现复选框状态。

于 2013-10-15T12:58:44.843 回答