MFC中的toolbar一些相关知识
### MFC中的Toolbar相关知识详解 #### 一、引言 在Microsoft Foundation Classes (MFC)框架中,工具栏(Toolbar)是用户界面的一个重要组成部分,它可以为用户提供快速访问常用功能的方式。对于基于对话框的应用程序来说,添加工具栏比在文档/视图结构的应用程序中稍微复杂一些。本文将详细介绍两种向对话框类中添加工具栏的方法及其优缺点。 #### 二、使用CToolBar类添加工具栏 ##### 特点: - **支持资源加载**:使用`CToolBar`类可以直接加载工具栏资源。 - **代码简洁**:相对于其他方法,使用`CToolBar`类编写的代码更为简洁。 ##### 缺点: - **仅支持16位图标**:该方法只能支持16位图标,不适用于需要高分辨率图标的场景。 ##### 步骤: 1. **创建项目**:使用AppWizard创建一个基于对话框的新项目`Main`。 2. **设置对话框属性**:修改对话框的标题为“在对话框中添加工具栏(16位图标)”。 3. **设计工具栏资源**:使用工具栏设计器创建一个工具栏资源`ID_TOOLBAR1`并设计所需的工具按钮。 4. **添加成员变量**:在对话框类`CMain`中添加一个`CToolBar`类型的成员变量`m_ToolBar`。 5. **初始化工具栏**:在对话框的`OnInitDialog()`函数中,通过调用`CreateEx()`和`LoadToolBar()`方法来创建并加载工具栏。 6. **显示工具栏**:确保工具栏可见。 7. **运行程序**:通过运行程序查看效果。 #### 三、使用CToolBarCtrl类和CImageList类添加工具栏 ##### 特点: - **支持32位图标**:这种方法可以支持真彩色(32位)图标,适用于需要高质量图像的场景。 - **灵活性更高**:使用`CToolBarCtrl`和`CImageList`可以更加灵活地控制工具栏上的图像和行为。 ##### 缺点: - **代码复杂度较高**:与使用`CToolBar`相比,这种方法的代码量更大且更复杂。 ##### 步骤: 1. **创建项目**:同样使用AppWizard创建一个基于对话框的新项目`Main`。 2. **设置对话框属性**:修改对话框的标题为“在对话框中添加工具栏(32位图标)”。 3. **添加成员变量**:在对话框类`CMyDlg`中添加两个成员变量`CToolBarCtrl m_ToolBar`和`CImageList m_ImageList`。 4. **准备图标资源**:添加需要在工具栏上显示的多个32位图标资源。 5. **初始化ImageList和ToolBar**:在对话框的`OnInitDialog()`函数中创建`CImageList`对象和`CToolBarCtrl`对象,并设置相应的属性。 6. **加载图标到ImageList**:使用循环将图标资源加载到`CImageList`中。 7. **创建工具栏按钮**:定义一个工具栏按钮数组,用于添加到工具栏中。 8. **添加按钮到工具栏**:通过循环将每个按钮添加到工具栏上。 9. **显示工具栏**:确保工具栏可见。 10. **运行程序**:通过运行程序查看效果。 #### 四、总结 在MFC中,根据不同的需求可以选择不同的方式来实现工具栏的功能。如果只需支持基本的16位图标并且追求代码简洁性,则使用`CToolBar`类是更好的选择;而如果需要支持高质量的32位图标并且希望有更多自定义选项,则应该考虑使用`CToolBarCtrl`类结合`CImageList`类的方法。无论采用哪种方法,都能够有效地增强基于对话框的应用程序的用户体验。
- tiantianlll2012-12-21还行吧,不错哈
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言-leetcode题解之28-implement-strstr.c
- C语言-leetcode题解之27-remove-element.c
- C语言-leetcode题解之26-remove-duplicates-from-sorted-array.c
- C语言-leetcode题解之24-swap-nodes-in-pairs.c
- C语言-leetcode题解之22-generate-parentheses.c
- C语言-leetcode题解之21-merge-two-sorted-lists.c
- java-leetcode题解之Online Stock Span.java
- java-leetcode题解之Online Majority Element In Subarray.java
- java-leetcode题解之Odd Even Jump.java
- 计算机毕业设计:python+爬虫+cnki网站爬