第六章 通用控件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章通用控件
6.1 概述6.1.1 分类用其功能
6.1.2 创建
创建通用控件包含以下三个步骤:
1.在源文件中包含COMCTL.H文件
除在源文件中包含COMCTL.H文件外,还应将COMCTL32.LIB库文件加入到链接程序可访问的库文件中。
2.初始化通用控件
通过调用API函数InitCommonControls初始化通用控件,该函数的原型为: Void InitCommonControls();
3. 调用API函数生成通用控件
Windows通用控件也是应用程序创建的子窗口,因此可通过调用函数CreateWindow创建。应用程序救灾可调用特定函数创建某些通用控件,例如调用函数CreateToolBarEx创建工具栏,调用函数CreateStatusWindowEx创建状态栏等。
6.1.3 通用控件与应用程序间消息传递
与Windows标准控件相似,应用程序操作Windows通用控件也通过消息传递完成。
1.通用控件向应用程序发送消息
大多数的通用控件向应用程序发送WM_NOTIFY消息而非WM_COMMAND消息,以通知用户的交互请求。通常情况下,WM_NOTIFY消息的字参数(wParam)中包含通用控件的标识(ID),长参数(lParam)中包含如下定义的NMHDR数据结构地址:typedef struct tagNMHDR
{
HWND hwndFrom;//控件句柄
UINT idFrom; //控件标识
UINT code; //通知码
}NMHDR;
下面的程序段说明应用程序在窗口函数中处理通用控件的常用过程:
LPNMHDR lpnmhdr;
……
case WM_NOTIFY
{
……
lpnmhdr=(LPNMHDR)lParam;
……
switch(lpnmhdr->idFrom)
{
case …://通用控件标识
switch(lpnmhdr->code)
{
case…: //通知码
…
break;
case…:
…
break;
}
break;
case…: //通用控件标识
……
break;
}
并非所有通用控件均响应用程序发出WM_NOTIFY消息。例如当用户单击工具栏中的按钮后,工具将向应用程序发出WM_COMMAND消息,该消息的字参数和长参数所包含的内容与标准控件中按钮相似。当用户操作滚动类通用控件时,该类控件将向应用程序发出WM_VSCROLL或WM_HSCROLL消息,而非WM_NOTIFY消息。 2.应用程序向通用控件发送消息
与标准控件相似,应用程序通过函数Sendmessage发送消息给通用控件。
6.2 窗口控件类通用控件
窗口类通用控件包括工具栏、工具栏提示和状态栏。
6.2.1 工具栏
工具栏是WindowsGUI中常使用的控件。
1.功能与特点
工具栏实际上是一种图形化的菜单按钮,程序员通过工具栏将常用选项以图形化、平面化方式提供给用户,不但使图形用户界面生动形象,而且方便了用户操作。
2.创建
应用程序中工具栏的创建常使用函数CreateToolBarEx完成,该函数原型为:
HWND CreateToolBarEx(HWND hwnd,//工具栏父窗口句柄
DWORD dwStyle, //工具栏风格
UINT wID, //工具栏标识
int nBitMaps, //工具栏按钮数
HINSTANCE hInstBitMap, //位图的实例句柄
UINT wBitMapID, //工具栏位图资源标识
LPCTBUTTON lpButtons,//指向TBBUTTON数据结构指针
Int nNumButtons, //工具栏中按钮数目
Int nButtonWidth, //工具栏宽度
Int nButtonHeight, //工具栏高度
Int nBitMapWidth,//按钮位图宽度
Int nBitMapheight,//按钮位图高度
UINT uStructSize//TBBUTTON结构的大小
)
每个工具栏按钮均定义在一个TBBUTTON数据结构中,其定义如下:
typedef struct tagTBBUTTON
{
int idBitMap;
int idCommand;
BYTE fsState;
BYTE fsStyle;
BYTE bReserved[2];
DWORD dwData;
int iString;
}TBBUTTON;
工具栏中按钮的定义常通过定义TBBUTTON结构的数组实现,下面程序段为定义一个文件操作工具栏按钮的常用语法:
……
TBBUTTON tbButton[]=
{
index0,IDM_NEW, TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0,
index1,IDM_OPEN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0,0,0, ……
}
3.工具栏与应用程序之间的消息传递
(1)工具栏向应用程序发送消息
用户按下工具栏按钮后,工具栏控件向应用程序发送WM_COMMAND消息。其中字参数(wParam)包含按钮的命令标识,应用程序获取该标识并转入相应的处理过程。
(2)应用程序向工具栏控件发送消息
应用程序调用函数SendMessag向工具栏发送消息。
常用工具栏及消息说明: