演练VC中的COMMON一族(转贴)之二[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 happyparrot 的 blog

    tbstyle_check    表示建立检查状态按钮
    tbstyle_checkgroup表示建立检查按钮群
    tbstyle_group    表示建立按下状态按钮群
    tbstyle_sep      表示建立按钮分隔符
6.2.2.3 工具条控制的类属性
    工具条控制的类属性必然的联系判断按钮使能状态isbuttonenabled、判断按钮检查状态    isbuttonchecked、判断按钮按下状态isbuttonpressed、判断按钮是否隐藏isbuttonhidden、判断按钮变灰状态isbuttonindeterminate、设置按钮状态setstate、取得按钮状态getstate、取得按钮有关信息getbutton、取得按钮总数getbuttoncount、取得按钮矩形区域getitemrect、设置按钮结构大小setbuttonstructsize、设置按钮大小setbuttonsize、设置按钮位图大小setbitmapsize、取得按钮提示控制gettooltips、设置按钮提示控制settooltips等。
6.2.2.4 工具条控制类的操作方法
    工具条控制类的操作方法包括使能按钮enablebutton、检查按钮checkbutton、按下按钮pressbutton、隐藏按钮hidebutton、变灰按钮indeterminate、增加按钮addbuttons、插入按钮insertbutton、删除按钮deletebutton、取得控制符id对应的索引commandtoindex、恢复工具条状态restorestate、保存工具条状态savestate和重新确定工具条大小autosize等。
6.3 工具条控制的应用技巧
    可以这样说,工具条和上述常用控制是应用程序中不可缺少的功能元素,它的优劣会直接影响程序的基本功能和操作特性。所以这里将对工具条的建立技巧、状态保存与恢复、平面特性、停靠位置、排序方法、消息映射、状态更新、控制使用和属性控制等方面,全面阐述工具条的使用技巧。
6.3.1 工具条的建立技巧
6.3.1.1 普通工具条的建立方法
    如果应用程序在建立时就具有工具条,则只需对工具条中的按钮图标进行简单的增加、修改和删除等操作就可满足要求。如果未建立或者想增加其它工具条,则应按步骤追加建立。
    首先打开已建立好的基于单文档的框架工程文件ctool并选择"insert->resource->toolbar"选项,插入工具条资源并设置资源标识符;然后编辑工具栏中的按钮图标和相应的按钮标识符,并利用类向导classwizard 为按钮消息增加command和update_command_ui两种处理函数;在资源文件中增加和修改工具条图标的动态提示等内容;打开mainfrm.h包含文件在"ctoolbar m_wndmaintoolbar"后增加"ctoolbar m_wndtesttoolbar" 等来创建增加的工具条对象;在mainfrm.h 中设置建立函数所需的成员变量,如颜色变量为m_bcolor、动态提示功能变量为m_btooltips 等,注意成员变量名与其获取的参数应完全对应以便使用;最后在mainfrm.cpp中的oncreate()建立函数中按下述示例规则增加控制代码,其实现具体步骤如下:
    ①在mainfrm.h中增加工具条对象控制和成员变量
    #define toolleft   18
    class cmainframe:public cframewnd
    ......//其它代码
    public:
    bool m_btooltips;//工具条提示功能
    ......//其它代码
    protected://工具条控制成员变量
        cstatusbar   m_wndstatusbar;  file://框架程序的状态条
        ctesttoolbar m_wndmaintoolbar;//框架程序的工具条
        ctesttoolbar m_wndtesttoolbar;//新增工具条
        ctesttoolbar m_wnddocktoolbar;//浮动工具条
        ctesttoolbar m_wnddocknextbar;//浮动工具条
    ......//其它代码
    }
    框架程序中工具条的控制类正常应为ctoolbar,可以是自己设计的派生类ctesttoolbar(为笔者扩充平面特性等功能后的新工具条控制类名)等,具体根据实际需要而定。利用cdialogbar类和cstylebar 类还可以建立扩展类型的工具条,详见后面工具条中控制应用技巧,但在该文件头处必须
包含如下命令:
    #ifndef __afxext_h__
    #include <afxext.h>//直接存取ctoolbar和cstatusbar
    #endif
    ②在mainfrm.cpp中完善窗口建立函数
    int cmainframe::oncreate(lpcreatestruct lpcreatestruct)
    {  if (cframewnd::oncreate(lpcreatestruct) == -1)
        return -1;
        windowplacement wp;//保存主窗口及工具栏窗口位置状态
        if (readwindowplacement(&wp))//读取位置状态信息
           setwindowplacement(&wp);  file://设置位置状态信息
        m_btooltips=(afxgetapp()->getprofileint(//读提示功能
           _t("general"),_t("tooltips"),1)!=0); file://默认值为1
        m_wndmaintoolbar.setstate(toolleft,true);//设置初始状态
        enabledocking(cbrs_align_any);//停靠位置,必须提前位置
        if (!m_wndmaintoolbar.create(this,ws_child|ws_visible
           |cbrs_size_dynamic|cbrs_top|((m_btooltips)?
           (cbrs_tooltips|cbrs_flyby):0),idr_mainframe)||
           !m_wndmaintoolbar.loadtoolbar(idr_mainframe))
        {  file://cbrs_size_dynamic为锁定位置风格
           trace0("主工具条mainframe建立失败\n");
           return -1;} // 建立失败处理
        ......//建立其它工具条代码,基本相同
        if (!m_wndstatusbar.create(this)||
           !m_wndstatusbar.setindicators(indicators,

本文关键:界面,列表,树
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top