多工具条编程秘技

本文详细介绍了在VC++ 6.0环境下如何创建和管理多个工具条,包括使用CToolBar和CDialogBar实现工具栏,派生自定义工具栏类,添加消息映射条目,以及响应右键菜单和显示按钮文字的方法。此外,还讨论了如何显示256种颜色的按钮,提供了一种提高程序易用性和商业化水平的技术。
摘要由CSDN通过智能技术生成

 

声明:

工具栏是一个比较传统的话题,如果您认为本文的内容比较陈旧的话,请您不要阅读,以免浪费你的宝贵精力和时间。

多工具条编程秘技


李安东


2001年10月1日


关键字:  工具栏  真彩色按钮  按钮标签


对于一个应用程序来说,用户界面始终是至关重要的问题之一,因为它不仅决定了用户使用的方便程度,而且还能增加用户对软件的信赖程度。下面就如何利用VC++ 6.0编写带有多个工具条的应用程序的问题,谈一点自己的体会。
一、实现多个工具栏
通常在每个新建的工程项目中,AppWizard已经创建了一个默认的工具栏,其资源标识符ID为IDR_MAINFRAME,并且在主窗口类(如CMainFrame)内添加了一个CToolBar类型的变量m_wndToolBar。而工具栏的实际创建则是在主窗口类的OnCreate()成员函数内进行的。我们在实现多工具栏时,也应遵循这些原则,将多工具栏集中在主窗口类内,进行统一实现和管理,这样做比较方便。
利用MFC提供的CToolBar和CDialogBar类实现多个工具栏,步骤是比较容易的。主要分如下几个步骤:
(一)、创建工具栏资源模板
如果要添加由CToolBar实现的工具栏,在资源编辑器(Resource editor)中:
1、创建一个新的工具栏资源,分配资源标识符ID(例如IDR_MYTOOLBAR);
2、添加并编辑该工具栏上的各个工具按钮。
CToolBar工具栏的特点就是包含多个按钮,但如果要在工具栏上包含其他控件,如编辑框、组合式列表框等,则应使用CDialogBar来实现,步骤如下:
1、单击“Project / Add to Project / Components and Controls...”菜单项;
2、在出现的“Components and Controls Gallery”对话框中,双击“Visual C++ Components”;
3、在出现的列表中选中“Dialog bar”,然后单击“Insert”按钮;
4、最后单击“Close”关闭该对话框。
这样AppWizard就自动为我们在CMainFrame类内产生了该工具栏所需的代码,并为其建立了一个资源模板,其资源ID为CG_IDD_MYDIALOGBAR。
注意Dialog bar的资源是一个对话框模板,而不是工具栏模板。
按上述步骤,为要添加的每个工具栏均添加一个资源,并分配一个资源标识ID。至于如何在工具栏上添加按钮,以及如何建立每个按钮的响应函数,这里就不一一赘述了。
(二)、派生新的工具栏类
一般情况下,可以直接使用MFC中的CToolBar或CDialogBar类实现工具栏。但若要实现某些特定的操作,就必须派生自己的工具栏类。在派生时有一点小技巧,介绍如下:
在由ClassWizard或ClassView派生新类时,其中的基类列表框中找不到CToolBar和CDialogBar这两个类。此时可暂时先选CToolBarCtrl或CDialog作为基类,然后再将基类改为CToolBar或CDialogBar。下面仅介绍一下由CDialogBar派生出CMyDialogbar类的具体步骤:
1、在ClassView中右击第一个项目;
2、在出现的快捷菜单中单击“New Class...”;
3、在出现的“New Class”对话框中,输入新产生的类的名称“CMyDialogbar”;
4、选择基类为CDialog,并指定Dialog ID为在第(一)节中创建的Dialog bar的对话框资源的ID,如CG_IDD_MYDIALOGBAR。
5、打开MyDialogbar.h文件,将CMyDialogbar的基类修改为CDialogBar;
6、打开MyDialogbar.cpp文件,将所有出现的CDialog 均替换为CDialogBar。
注意CDialogBar的构造函数没有参数,所以还要将“: CDialogBar(CMyDialogbar::IDD, pParent)”中的参数删去,改为“: CDialogBar()”。
按类似方法可由CToolBar派生出CMyToolbar类。
然后,在CMainFrame类内添加这两个类的对象,如:
CMyToolbar m_myToolBar;
CMyDialogbar m_wndMyDialogBar;
//This variable is generated by AppWizard formerly. At this point, your work is //simply replacing it’s base class with CMyDialogbar .
为了允许程序中的所有代码均能访问工具栏,最好将这两个变量设为public。当然请不要忘了将上述两个类的头文件用#include指令包含进来。
(三)、创建工具栏控件
打开MainFrm.cpp文件,在CMainFrame类的OnCreate()成员函数内添加如下代码:
 //Toolbar2:
 if (!m_myToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD|CBRS_GRIPPER
  | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC|CBRS_TOP
  ,CRect(0, 0, 0, 0), ID_VIEW_MYTOOLBAR) ||
  ! m_myToolBar.LoadToolBar(IDR_MYTOOLBAR))
 {
  TRACE0("Failed to create toolbar/n");
  return -1;    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值