MFC分析工具条和状态条的创建的分析

工具条和状态条的在comctl32.lib当中实现,要想得到TOOLBAR和STATUS的支持,程序必须添加CommCtrl头文件,并且在初始化TOOLBAR和STATUSBAR之前,调用函数InitCommonControls函数对整个库进行初始化。

工具条和状态条都属于主窗口的子窗口,所以创建的时机是在主窗口的ON_WM_CREATE消息当中。第一步,需要调用相应的函数创建出窗口句柄出来,这个函数就是CreateWindowEx。

HWND hToolBar = CreateWindowEx(0,
		TOOLBARCLASSNAME,
		NULL,
		WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_CLIPSIBLINGS |
		TBSTYLE_FLAT | CCS_BOTTOM | TBSTYLE_TOOLTIPS,
		0,
		40,
		340,
		30,
		hwnd,
		NULL,
		hInst,
		NULL);

其中TOOLBARCLASSNAME在CommCtrl头文件中被定义,

#define TOOLBARCLASSNAMEW       L"ToolbarWindow32"
#define TOOLBARCLASSNAMEA       "ToolbarWindow32"
#ifdef  UNICODE
#define TOOLBARCLASSNAME        TOOLBARCLASSNAMEW
#else
#define TOOLBARCLASSNAME        TOOLBARCLASSNAMEA
#endif

接下来是向刚刚创建的工具条发送TB_ADDBUTTONS消息,这个消息是由系统处理的,用于向系统添加TOOLBAR的按钮信息。这个按钮信息由TBBUTTON结构体数组组成,

typedef struct _TBBUTTON {
    int iBitmap;			//图片在IMAGELIST当中的索引号
    int idCommand;		//与这个工具条项目相对应的空间ID号
    BYTE fsState;		//工具条项目的状态,使能或者禁止
  BYTE fsStyle;		//工具条项目的风格,也就是工具条项目的表现形式,
  BYTE bReserved[2];//保留用于对齐          
    DWORD_PTR dwData; //用于存放与工具条项目相关的数据地址
    INT_PTR iString;  //用于存放与工具条项目相关的字符串的地址,
} TBBUTTON

其中iBitMap和dwData、iString互斥使用,也就是说这个只能是三个当中的一个有效。

由于当使用iBitmap的时候,需要一个HIMAGELIST管理TBBUTTON相关的图片,其中iBitmap是HIMAGELIST的索引,所以首先需要创建一个HIMAGELIST。调用相应的宏ImageList_Create就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值