本文介绍基本的 MFC 实现,通过选择应用程序向导中的选项,可以将默认工具栏添加到应用程序。 涵盖的主题包括:
应用程序向导工具栏选项
若要获取具有默认按钮的单个工具栏,请在标有用户界面功能的页面上选择“标准停靠”工具栏选项。 这会向应用程序添加以下代码:
创建工具栏对象。
管理工具栏,包括停靠或浮动的功能。
代码中的工具栏
工具栏是声明为应用程序类的数据成员的 CMainFrame
CToolBar 对象。 换句话说,工具栏对象嵌入在主框架窗口对象中。 这意味着 MFC 在创建框架窗口时创建工具栏,并在销毁框架窗口时销毁工具栏。 对于多个文档接口(MDI)应用程序,以下分部类声明显示嵌入工具栏和嵌入状态栏的数据成员。 它还显示成员函数的 OnCreate
重写。
class CMainFrame : public CMDIFrameWnd
{
// Implementation
protected: // control bar embedded members
CStatusBar m_wndStatusBar;
CToolBar m_wndToolBar;
// Generated message map functions
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
DECLARE_MESSAGE_MAP()
工具栏创建发生在 CMainFrame::OnCreate
. MFC 在为框架创建窗口后调用 OnCreate ,但在该窗口变为可见之前。 应用程序向导生成的默认值 OnCreate
执行以下工具栏任务:
调用对象的
CToolBar
Create 成员函数以创建基础 CToolBarCtrl 对象。调用 LoadToolBar 以加载工具栏资源信息。
调用函数以启用停靠、浮动和工具提示。 有关这些调用的详细信息,请参阅文章 “停靠”和“浮动工具栏”。
注释
MFC 常规示例 DOCKTOOL 包括旧 MFC 工具栏和新 MFC 工具栏的插图。 使用 COldToolbar
的工具条要求在步骤 2 LoadBitmap
中调用(而不是 LoadToolBar
)和调用 SetButtons
。 新工具栏需要调用 LoadToolBar
。
停靠、浮动和工具提示调用是可选的。 可以根据需要从 OnCreate
中删除这些行。 结果是一个保持固定的工具栏,无法浮动或重新停靠,并且无法显示工具提示。
编辑工具栏资源
使用应用程序向导获取的默认工具栏基于 MFC 版本 4.0 中引入 的RT_TOOLBAR 自定义资源。 可以使用 工具栏编辑器编辑此资源。 通过编辑器,可以轻松添加、删除和重新排列按钮。 它包含与 Visual C++ 中的常规图形编辑器非常相似的按钮的图形编辑器。 如果在以前版本的 Visual C++中编辑了工具栏,现在会发现任务要容易得多。
若要将工具栏按钮连接到命令,请为按钮提供命令 ID,例如 ID_MYCOMMAND
。 在工具栏编辑器的按钮属性页中指定命令 ID。 然后为命令创建处理程序函数(有关详细信息,请参阅 “将消息映射到函数 ”)。
新的 CToolBar 成员函数使用 RT_TOOLBAR 资源。 LoadToolBar 现在取代 LoadBitmap 来加载工具栏按钮图像的位图, SetButtons 用于设置按钮样式,并使用位图图像连接按钮。
有关使用工具栏编辑器的详细信息,请参阅 工具栏编辑器。
多个工具栏
应用程序向导提供一个默认工具栏。 如果应用程序中需要多个工具栏,可以根据默认工具栏的向导生成的代码为其他工具栏建模代码。
如果要将工具栏显示为命令的结果,则需要:
使用工具栏编辑器创建新的工具栏资源,并使用 LoadToolbar 成员函数加载它
OnCreate
。在主框架窗口类中嵌入新的 CToolBar 对象。
对停靠或浮动工具栏进行适当的函数调用
OnCreate
,设置其样式等。