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

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

本文简介:选择自 happyparrot 的 blog

第6章 演练ctoolbar
6.1 工具条控制的主要功能
    所谓工具条就是具有位图和分隔符组成的一组命令按钮,位图按钮部分可以是下推按钮、检查盒按钮、无线按钮等。工具条对象类派生于主窗口架框类cframewnd或cmdiframewnd,其类控制ctoolbar::gettoolbarctrl是mfc类库中封装的一个成员函数,允许使用类库中提供的一般控制和附加功能,ctoolbar类控制成员控制提供了windows一般控制的所有功能,然而,通过调用 gettoolbarctrl成员函数取得引用后,可以使工具条具有更强的特性。
    工具条的创建具有四个步聚:首先是建立工具条资源;然后建立工具条对象结构;其次通过调用建立函数建立工具条对象并绑定;最后调用loadtoolbar调入工具条资源。
    另外,还可以通过直接加载位图的方法来建立,步骤如下:首先建立工具条对象;然后通过调用建立函数建立工具条并绑定对象;其次调入包含按钮的位图;最后利用setbuttons 函数设置按钮的风格并与位图建立联系。
    其中,所有按钮位图均存放在一个位图文件中,按钮位图的大小相同,默认为16点宽、15点高,位图必须从左至右存放。设置按钮函数具有指向一组控制标识符id的指针和索引值,用来确定每个按钮的位置,如果存在分隔符id_separator, 那么该图像就不存在索引值。正常情况下工具条中的按钮都是单排从左至右排列的,可以通过setbuttoninfo函数改变排序规则。 工具条中最终形成的按钮大小相同,均为24 x 22 象素,每个按钮只对象一幅图像。工具条中的按钮默认为下推按钮,通过设置tbbs_checkbox风格可以实现检查盒按钮,通过调用setradio成员函数可以实现无线按钮。
6.2 工具条控制的对象结构
6.2.1 工具条的对象结构
6.2.1.1 工具条的建立方法
    ctoolbar &toolbar  建立工具条对象结构
    create              建立工具条对象并绑定
    工具条类ctoolbar::create 的调用格式如下:
    bool create( cwnd* pparentwnd, dword dwstyle = ws_child | ws_visible | cbrs_top,
    uint nid = afx_idw_toolbar );
    其中参数pparentwnd用来确定指向工具条父窗口的指针;参数dwstyle用来确定工具条的风格,其取值如下;参数nid用来确定工具条子窗口的标识符。
    cbrs_top          表示工具条在框架窗口的顶部
    cbrs_bottom       表示工具条在框架窗口的底部
    cbrs_noalign      表示工具条在父窗口改变大小时不响应
    cbrs_tooltips     表示工具条具有动态提示功能
    cbrs_size_dynamic 表示工具条是静态的不能改变
    cbrs_size_fixed   表示工具条是动态的可以改变
    cbrs_floating     表示工具条是浮动的
    cbrs_flyby        表示状态条上显示工具条中按钮的信息
    cbrs_hide_inplace 表示工具条隐藏
    除以上函数外,还包括设置按钮和位图的大小setsizes、设置工具条的高度setheight、调入工具条资源loadtoolbar、调入工具条按钮位图loadbitmap、设置工具条按钮位图setbitmap、设置工具条中位图按钮的风格和索引值setbuttons等控制函数。
6.2.1.2 工具条的类属性
  工具条控制类的属性包括取得标识符id对象按钮索引commandtoindex、取得索引对应的命令标识符id或分隔符getitemid、取得索引对应的矩形区域getitemrect、取得按钮风格    getbuttonstyle、设置按钮风格setbuttonstyle、取得按钮的id标识-风格-图象数getbuttoninfo、设置按钮id标识-风格-图象数setbuttoninfo、取得按钮提示文本getbuttontext、设置按钮提示文本setbuttontext和取得工具条直接存取控制gettoolbarctrl等。
6.2.2 工具条控制的对象结构
6.2.2.1 工具条控制的建立方法
    ctoolbarctrl &toolbarctrl  建立工具条控制对象结构
    create                     建立工具条控制对象并绑定
    工具条控制类ctoolbarctrl::create的调用格式如下:
    bool create( dword dwstyle, const rect& rect, cwnd* pparentwnd, uint nid );
    其中参数dwstyle用来确定工具条控制的风格,必须存在ws_child风格;参数rect用来确定工具条控制的大小和位置;参数pparentwnd用来确定工具条控制的父窗口指针,不能为null;参数nid用来确定工具条控制的标识符。
    可以利用ws_child、ws_visible和ws_disabled来设置工具条窗口的风格,但必须合理设置如下控制风格:
ccs_adjustable  允许用户处理工具条窗口大小,如果存在工具条窗口必须处理相应信
ccs_bottom      使控制处于父窗口客户区域底部并与窗口同样宽
ccs_nodivider   禁止在控制的顶部绘制2个象素的高亮条
ccs_nohilite    禁止在控制的顶部绘制1个象素的高亮条
ccs_nomovey     使控制改变大小和移动时自动水平对齐,垂直对齐必须处理wm_size消息
    如果ccs_noresize风格有效,则该风格无效
ccs_noparentalign禁止控制自动移到父窗口顶部或底部,如果ccs_top或 ccs_bottom风格
    有效,则高度调整为默认而宽度可以改变
ccs_noresize    禁止设置新的大小或无效值时使用默认宽度和高度值,而使用建立值
ccs_top         使控制自动停靠在父窗口客户区域顶部并与父窗口同样宽度
    最后,还必须利用下面的风格来控制工具条
tbstyle_tooltips   使工具条建立并管理动态提示控制
tbstyle_wrapable   使工具条控制按钮具有多行排列格式
6.2.2.2 工具条控制中的数据结构
    工具条控制中最常用的数据结构为tbbutton,其具体结构如下:
    typedef struct _tbbutton {
    int ibitmap;    // 基于0的位图索引值
    int idcommand;  // 按钮按下时发送的命令值
    byte fsstate;   // 按钮的状态
    byte fsstyle;   // 按钮的风格
    dword dwdata;   // 应用程序定义的数据
    int istring;    // 基于0的按钮标签字符串索引值
    } tbbutton;
    其中按钮状态fsstate的值如下:
tbstate_checked  表示按钮具有tbstyle_checked风格并且被按下
    tbstate_enabled  表示按钮允许接受输入,否则变灰不接受任何输入
    tbstate_hidden   表示按钮不可见并且不接受任何输入
    tbstate_indeterminate  表示按钮是变灰的
    tbstate_pressed  表示按钮正被按下
    tbstate_wrap     表示按钮具有换行特性,该按钮必须具有tbstate_enabled状态
    按钮风格style可以是下列值的组合:
    tbstyle_button   表示建立标准下推按钮

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

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

go top