文档详情

第六章 通用控件.doc

cl****1
实名认证
店铺
DOC
593KB
约14页
文档ID:536122571
第六章 通用控件.doc_第1页
1/14

第六章 通用控件6.1 概述6.1.1 分类用其功能Windows系统通用控件分类及其功能说明 类别控件名功能说明窗口控制类工具栏一组快捷的操作按钮工具栏提示工具栏的简要说明状态栏显示窗口信息资源管理类列表视图显示列表项的细节树形视图显示列表项的层次滚动类跟踪条度量标志微调按钮控件文本框中使用的递增或递减按钮其他属性表显示对象一系列属性的对话框拖动列表支持拖放操作的列表框大容量文本框支持多种字体及基本OLE功能的文本框热键支持用户创建的热键动画播放动画显示长时间操作的进度标题头列表视图标题标签显示项目列表进度指示器指示长时间操作的进度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向工具栏发送消息常用工具栏及消息说明: 消息 说明TB_ENABLEBUTTON激活或禁止按钮(消息的长参数为非0,激活按钮;为0,禁止按钮)TB_CHECKBUTTON标记或不标记按钮(消息的长参数为非0,标记按钮;为0,不标记按钮) TB_HIDEBUTTON隐藏或显示按钮(消息的长参数为非0,隐藏按钮;为0,显示按钮) 6.2.2 工具栏提示 工具栏提示经常与工具栏一同使用的通用控件 1.功能工具栏提示是指将光标停在工具栏按钮上时显示的关于该按钮的文本说明,其功能是使用户可快速地了触该按钮的作用2.编程在具有 TBSTYLE_TOOLTIPS风格的工具栏中,当用户将光标停在工具栏按钮上时,工具栏将向应用程序发出WM_NOTIFY消息其长参数(lParam)包含一个指向TOOLTIPTEXT数据结构的指针,可通过该结构确定用户所指按钮并显示按钮的说明文本Typedef struct tagTOOLTIPTEXT { NMHDR hdr; LPTSTR lpszText; Char szText[80]; HINSTANCE hInst; UINT uFlags; }TOOLTIPTEXT;6.2.3 状态栏 1.功能状态栏常位于窗口的底部,其主要功能是显示窗口的一些辅助信息。

应用程序可通过状态栏提示用户可使用的热键、指示程序的进展状态及说明注意事项等等2.创建创建状态栏可通过调用CreateStatusWindow函数实现,该函数的原型为:HWND CreateStatusWindow(DWORD dwStyle, LPCTSTR lpstr, HWND hwndParent, DWORD dwID }3. 发送消息创建状态栏后,并不向应用程序发送消息而应用程序可通过调用SendMessage函数向状态栏发送消息,实现对状态栏的操作例如:应用程序向状态栏发送消息SB_SETPART,状态栏划分为若干个部分,其形式为:SendMessage(hwndStatus,SB_SETPART,(WPARAM)nPart,(LPARAM)nRightEnd);应用程序划分状态栏后,即可使用各部分的标识值操作有关部分例如通过向状态栏发送消息SB_SETPART,设置各部分的状态文本,其形式为:SendMessage(hwndStatus,SB_SETPART,dwPartID,(LPARAM)lpstr);6.2.4 综合示例6.3 滚动类通用控件除包括窗口控制类通用控件外,资源管理器中还包括两种资源管理类通用控件:树形视图和列表视图。

6.3.1 跟踪条控件跟踪条控件是Windows应用程序中常使用的控件类型1.功能跟踪条控件的功能是使用用户可便捷地设置某一对象(如音量)的量度,用户可通过拖动跟踪条控件中的量度指示指针到跟踪条的某一特定位置完成设置此外,跟踪条还可作为指示任务完成进度的标志2.创建应用程序调用函数CreateWindow创建跟踪条,其形式如下:hwndTrack= CreateWindow (TRACKBAR_CLASS, NULL, WS_CHILD|WS_VISIBLE|TBS_…, 0, 0, 0,0, hwnd, NULL, hInst, NULL);其中TRACKBAR_CLASS为跟。

下载提示
相似文档
正为您匹配相似的精品文档