对话框中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
在对话框程序中添加工具栏其实很简单,网上能找到很多的例子。一般的步骤就是:1、在资源中添加工
具栏资源;2、在对话框类中定义一个工具栏变量;3、在对话框的OnInitDialog函数中Create工具栏。程
序如下:
在对话框类中定义工具栏成员变量:
CToolBar m_ToolBar;
在OnInitDialog函数中Create之:
if(!m_ToolBar.CreateEx(this, TBSTYLE_FLAT,
WS_CHILDWS_VISIBLECBRS_TOPCBRS_GRIPPERCBRS_TOOLTIPSCBRS_SIZE_DYNAMIC)
!m_ToolBar.LoadToolBar(IDR_TOOLBAR_GRAPHICS))
{
TRACE0(_T("创建工具条失败\n"));
return FALSE;
}
RepositioNBArs(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
但是要让对话框中的工具栏响应UPDATE_COMMAND_UI消息,做到按下保持的状态仅仅重载
UPDATE_COMMAND_UI消息并使用SetCheck是不行的,因为此时的工具栏上的按钮属性为普通的按钮,可以
通过下面的方法测试:
if(m_ToolBar.GetButtonStyle(0) == TBBS_BUTTON)
{
AfxMessageBox("This is Button Style");
}
必须添加以下的设置:
m_ToolBar.SetButtonStyle(0,TBBS_CHECKBOX);
m_ToolBar.SetButtonStyle(1,TBBS_CHECKBOX);
SetButtonStyle函数的原型及其相关的说明:(引自MSDN)
1、void SetButtonStyle( int nIndex, UINT nStyle );
Parameters
nIndex
Index of the button or separator whose information is to be set.
nStyle
The button style. The following button styles are supported:
TBBS_BUTTON Standard pushbutton (default)
TBBS_SEPARATOR Separator
TBBS_CHECKBOX Auto check-box button
TBBS_GROUP Marks the start of a group of buttons
TBBS_CHECKGROUP Marks the start of a group of check-box buttons
Remarks
Call this member function to set the style of a button or separator, or to group buttons. A
button's style determines how the button appears and how it responds to user input.
2、还有一种修改Button属性的函数