工具栏基础知识
本文介绍基础 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 工具栏的说明。 使用 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
中进行适当的函数调用以使工具栏停靠或浮动、设置其样式等。