第六章 通用控件

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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向工具栏发送消息。

常用工具栏及消息说明:

相关文档
最新文档