win32强化练习4.5_标准工具栏的使用

时间:2022-02-28 19:49:03

菜单下方的工具栏,在许多的程序中都会使用。

这次的练习是快速用WIN32 SDK建立一个可以使用的工具栏,为了方便练习,先从标准的工具栏入手。

步骤如下:

1. 必须先包含头文件:

2. 声明全局变量 HWND hToolBar;

3. 使用CreateWindowEx创建工具栏的窗口(墙面)

4. 准备好要用的图(海报,这个图是很大的,需要裁减),这是个结构体TBADDBITMAP,指定要用的图以及用大图1还是小图0

5. 将图用SendMessage的TB_ADDBITMAP消息将图指定给工具栏;

6. 使用TTBUTTON创建按钮的数组,给每个按钮的属性赋值,包括ID,使用的图的编号,可用状态和风格等

7. 注意:如果使用CreateWindow创建的工具栏,需要指定TTBUTTON的大小,要用到TB_BUTTONSTRUCTSIZE消息

8. 将按钮(已经设定好的)指定给工具栏,OK,并可以发送消息尺寸自动AUTOSIZE

9.  处理WM_COMMAND消息

代码如下:

1. 

#include <commctrl.h>
2. 

HWND hToolBar;
3. 

hToolBar = CreateWindow(TOOLBARCLASSNAME,NULL,WS_CHILD| 
				WS_VISIBLE|WS_BORDER,0,0,0,0, hwnd ,(HMENU)100312,g_hInst,NULL);
4.&5.

TBADDBITMAP tBitmap;
			tBitmap.hInst = HINST_COMMCTRL;	//标准工具栏 
			tBitmap.nID = 0;	//0是小图,1是大图 
			SendMessage(hToolBar, TB_ADDBITMAP, 0, (LPARAM)&tBitmap); 
6. 

TBBUTTON tb[2];
			
			tb[0].iBitmap = STD_FILENEW;	//使用图编号6 
			tb[0].fsState = TBSTATE_ENABLED;
			tb[0].fsStyle = TBSTYLE_BUTTON;
			tb[0].idCommand = 10038;	//指定ID 
			
			tb[1].iBitmap = 1;				//使用图编号1- copy  
			tb[1].fsState = TBSTATE_ENABLED;
			tb[1].fsStyle = TBSTYLE_BUTTON;
7. 

SendMessage(hToolBar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON),0); //必须指定结构体大小
8. 

SendMessageA(hToolBar,TB_AUTOSIZE,0,0);

SendMessage(hToolBar, TB_ADDBUTTONS, (WPARAM)2, (LPARAM)&tb);
9. 

switch(LOWORD(wParam))
			{
			case 10038: MessageBox(0,"HELEL",0,0);
				break;
			}

这样一个标准工具栏就形成了,至于工具栏的消息会比较特殊一些,如果有需要再去学习,一般的用途已经可以实现了~