初步想法:对话框三个按钮,分别对应工具栏上的三个按钮与菜单栏中的三项
点击按钮,只有工具栏上对应的按钮与菜单项处于使能状态,工具栏上其他两个按钮与菜单项处于禁用状态
1、在.h文件中定义三个按钮的使能与禁止状态 ,TRUE—使能,FALSE—禁止
BOOL a;
BOOL b;
BOOL c;
2、对话框右键—类向导—命令,找到三个工具栏按钮的ID,消息选择UPDATE_COMMAND_UI,点击添加处理程序
在上一步添加的函数里添加如下内容:
然后在按钮响应事件中添加以下内容(以a为例)其中m_wndToolBar为工具栏的变量名,ID_xxxx为对应对话框里的按钮ID
SetButtonStyle用法如下:virtual void SetButtonStyle(int nIndex, UINT nStyle);
nIndex
[in] 要设置其样式的工具栏按钮的从零开始的索引。
nStyle
[in] 按钮的样式。 有关可用工具栏按钮样式的列表。
样式列表如下:
0——使能。TBBS_DISABLED ——禁用状态
EnableMenuItem(ID,uEnable)其中ID为菜单栏子项对应的ID,uEnable如下
{
//工具栏设置
a = TRUE;
b = FALSE;
c = FALSE;
int id1 = m_wndToolBar.CommandToIndex(ID_xxxx);
m_wndToolBar.SetButtonStyle(id1, 0);
int id2 = m_wndToolBar.CommandToIndex(ID_xxxx);
m_wndToolBar.SetButtonStyle(id2, TBBS_DISABLED);
int id = m_wndToolBar.CommandToIndex(ID_xxxx);
m_wndToolBar.SetButtonStyle(id, TBBS_DISABLED);
//菜单栏设置
CMenu* pMenu;
pMenu = AfxGetMainWnd()->GetMenu();
pMenu->EnableMenuItem(ID_xxxx, MF_GRAYED);
pMenu->EnableMenuItem(ID_xxxx, MF_GRAYED);
pMenu->EnableMenuItem(ID_xxxx, MF_ENABLED)
}
通过以上操作即可完成工具栏与菜单栏的同步使能与禁用