• 当前位置:首页>>VC语言>>VC基础教程>>使用Visual C++工具条
  • 使用Visual C++工具条
  •     如果说加速键是提高程序访问速度的键盘方法,那么工具条就和鼠标操作对应起来。你会看到,工具条不再仅仅是附属品了,它已经成为用户界面必不可少的一部分。但是,如果使用很多能够满足或者不能满足用户需要的按钮填满整个工具条的话,它很快就会变得过于臃肿。这个问题的一个解决办法是,创建多个工具条,允许用户自己决定当前需要哪些工具条。
        使用工具条和使用菜单与加速键一样容易。不过在这里,必须创建工具条及其相关菜单命令之间的链接。缺省工具条IDR_MAINFRAME包括一些更为常见的按钮,比如打开文件或创建新文件时用到的按钮。

        让我们以创建新的工具条来开始这个示例吧棗这个工具条允许用户格式化文本。在ResourceView中右击Toolbar文件夹,然后从上下文相关菜单中选择Insert Toolbar(插入工具条)。Visual C++会自动创建一个新的工具条。但是,它给出的名字(IDR_TOOLBAR1)并不具有清晰的意义。右击IDR_TOOLBAR1条目,然后从上下文菜单中选择Properties(属性)。你会看到如下图所示的ToolbarProperties(工具条属性)对话框。
        在ID域中输入IDR_FORMAT(不必担心要修改File Name(文件名)域;修改ID域时它会自动修改)。完成修改后,单击Close(关闭)框关闭ToolbarProperties(工具条属性)对话框。

        现在我们要向这个工具条中添加一些按钮。这些按钮将允许用户执行各种各样的任务,而不必借助于使用键盘或在菜单系统间移动。图3.6显示了我们将为本示例使用的样本工具条(这些按钮分别代表了加下划线、删除线、粗体、斜体和打开字体对话框)。
        向工具条上添加按钮并不需要做太多的工作。你真正需要具备的东西是将来要进行操作的位图。双击下划线按钮,会看到ToolBar Properties(工具条属性)对话框,如下所示。

        如你所见,我已经把ID域修改为ID_UNDERLINE了,将Prompt(提示)域修改为Underline(下划线)了。用相似的方法修改其它所有的按钮棗ID_STRIKETHROUGH(删除线),ID_BOLD(粗体),ID_99vALIC(斜体)和ID_FORMAT_FONT(字体对话框)。一定要仔细地输入所有的ID,否则,在今后使用按钮时会出问题。我为最后一个按钮使用ID_FORMAT_FONT的原因是,减少所需的代码编写数量。使用这个ID意味着,无须添加一行代码就可以让这个按钮发挥作用,Visual C++会通过MFC自动处理这个按钮。
        注 要了解MFC提供的其它标准ID,请不要忘了浏览MFC\INCLUDE文件夹中的AFXRES.H文件。
        现在让我们把工具条与应用程序的其它部分联系起来。按住CTRL键并双击下划线按钮,你会看到MFC ClassWizard(类向导),然后系统显示Adding aClass(添加类)对话框。IDR_FORMAT是一种新的资源,Visual C++不能确定你想用它做什么。你要把它和现有类联系起来,现在只要单击OK,接受缺省设置。Visual C++会显示Select Class(选择类)对话框。选择CMainFrame类,然后单击Select(选择)。你现在已经把工具条和应用程序联系起来了。
        创建和按钮相关的函数是很容易的。单击MFC ClassWizard的Object IDS列表中的按钮,比如ID_UNDERLINE,然后单击Messages(消息)列表中的COMMAND。单击Add Function(添加函数)按钮创建函数。Visual C++显示Add Member Function(添加成员函数)对话框。只需单击OK接受缺省函数名。最后,你会看到一个成员函数列表,如下图所示。

        现在我们可以向程序中添加使按钮发挥作用的代码了。单击任一成员函数名(比如OnUnderline),然后单击Edit Code按钮。Visual C++会显示代码编辑区。你会看到我们刚刚创建的函数的框架。程序列表3.4显示了需要添加的代码。




        正如从源代码中所看到的,对选定的一组字符,有两种不同的方法更改字符的字体属性。第一种方法要容易一些,只需得到活动视图棗即包含用户正编辑文本的窗口部分。一旦拥有了这个视图,就可以用名为OnCharEffect()的特殊函数更改字体属性。要使这个函数真正发挥功能,还要为两个参数提供相同的字体属性(CHARFORMAT文档包含了一系列完整的属性及相关定义)。
        第二种方法要求再做一些工作,但同时它也更灵活。这时,必须获得活动视图的一个拷贝。但是这一次,用它把当前字体特性填入CHARFORMAT(特性格式)结构。该结构包括你需要知道的一切,比如字体名和颜色,以及字体属性,比如粗体和斜体。一旦获得已填好的CHARFORMAT(特性格式)结构,就在屏幕上更改想修改的成员,然后用SetCharFormat()函数做实际的更改。
        在很多情况下,你会想用我演示的第一种方法改变字体属性,如粗体和斜体。这样做的话,编码要少得多,并且实现起来也不必非得与结构打交道。但是,在进行更详细的屏幕更改时可以使用CHARFORMAT(字符格式)结构,了解这一点对编程工作将会起到重要作用。
        我们已经有了工具条和一些使其发挥作用的代码。我们的示例程序仍然缺少一个重要的特征。如果现在就运行它,会看不到工具条。最后一步是添加菜单项和一些让工具条用起来更方便的代码。我们从菜单项开始。我要做的,只是用和讨论Format(格式)菜单时一样的过程,向View(视图)菜单中添加一个新的菜单项。在Menu Item Properties(菜单项属性)对话框中,我把ID_VIEW_FORMATTOOLBAR用作ID,把&Format Toolbar用作标题,把显示或隐藏格式工具条的\nToggle Format ToolBar用作提示。由于我们缺省显示工具条,所以你还要选中Checked复选框。
        创建程序框架相当容易。按下CTRL键并双击新的Format Toolbar(格式工具条)菜单项。你会看到MFC ClassWizard(MFC类向导)对话框。Visual C++应该自动加亮Object Ids(对象ID)列表中的ID_VIEW_FORMATTOOLBAR项。加亮Messages(消息)列表中的COMMAND选项,然后单击Add Function(添加函数)。最后,单击Edit Code(编辑代码)显示代码窗口。
        有三个地方需要添加工具条代码。第一块代码出现在MAINFRAME.H文件中。要在初始工具条变量右下方的Protected(受保护)节中添加新的变量。新的声明变量的代码如下所示:
        CToolBar m_wndToolBar2;
        下一块代码出现在MAINFRAME.CPP文件中(见程序列表3.5)。这块代码设置工具条的特性,使你在启动程序时能看见它。请注意,为了使工具条成为可“浮动”工具条(这样可以在应用程序中把它从一个地方移到另一个地方),要考虑进行一些特殊的编码。

    [1] [2] 下一页  

  • 上一篇:ADO与ODBC
    下一篇:使用Visual C++加速键和菜单