工具栏基础知识

本文介绍基本的 MFC 实现,通过选择应用程序向导中的选项,可以将默认工具栏添加到应用程序。 涵盖的主题包括:

应用程序向导工具栏选项

若要获取具有默认按钮的单个工具栏,请在标有用户界面功能的页面上选择“标准停靠”工具栏选项。 这会向应用程序添加以下代码:

  • 创建工具栏对象。

  • 管理工具栏,包括停靠或浮动的功能。

代码中的工具栏

工具栏是声明为应用程序类的数据成员的 CMainFrameCToolBar 对象。 换句话说,工具栏对象嵌入在主框架窗口对象中。 这意味着 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 执行以下工具栏任务:

  1. 调用对象的 CToolBarCreate 成员函数以创建基础 CToolBarCtrl 对象。

  2. 调用 LoadToolBar 以加载工具栏资源信息。

  3. 调用函数以启用停靠、浮动和工具提示。 有关这些调用的详细信息,请参阅文章 “停靠”和“浮动工具栏”。

注释

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 ,设置其样式等。

想要详细了解哪些内容

另请参阅

MFC 工具栏实现