分享
分享赚钱 收藏 举报 版权申诉 / 14

类型第六章 通用控件.doc

  • 上传人:sjmd695
  • 文档编号:8874877
  • 上传时间:2019-07-15
  • 格式:DOC
  • 页数:14
  • 大小:593KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第六章 通用控件.doc
    资源描述:

    1、第六章 通用控件61 概述611 分类用其功能Windows 系统通用控件分类及其功能说明。类别 控件名 功能说明工具栏 一组快捷的操作按钮工具栏提示 工具栏的简要说明窗口控制类状态栏 显示窗口信息列表视图 显示列表项的细节资源管理类树形视图 显示列表项的层次跟踪条 度量标志滚动类微调按钮控件 文本框中使用的递增或递减按钮属性表 显示对象一系列属性的对话框拖动列表 支持拖放操作的列表框大容量文本框 支持多种字体及基本 OLE 功能的文本框热键 支持用户创建的热键动画 播放动画显示长时间操作的进度标题头 列表视图标题标签 显示项目列表其他进度指示器 指示长时间操作的进度612 创建创建通用控件包

    2、含以下三个步骤:1在源文件中包含 COMCTL.H 文件除在源文件中包含 COMCTL.H 文件外,还应将 COMCTL32.LIB 库文件加入到链接程序可访问的库文件中。2初始化通用控件通过调用 API 函数 InitCommonControls 初始化通用控件,该函数的原型为:Void InitCommonControls();3. 调用 API 函数生成通用控件Windows 通用控件也是应用程序创建的子窗口,因此可通过调用函数CreateWindow 创建。应用程序救灾可调用特定函数创建某些通用控件,例如调用函数 CreateToolBarEx 创建工具栏,调用函数 CreateSta

    3、tusWindowEx 创建状态栏等。613 通用控件与应用程序间消息传递与 Windows 标准控件相似,应用程序操作 Windows 通用控件也通过消息传递完成。1通用控件向应用程序发送消息大多数的通用控件向应用程序发送 WM_NOTIFY 消息而非 WM_COMMAND 消息,以通知用户的交互请求。通常情况下,WM_NOTIFY 消息的字参数(wParam)中包含通用控件的标识(ID),长参数(lParam)中包含如下定义的 NMHDR 数据结构地址:typedef struct tagNMHDRHWND hwndFrom;/控件句柄UINT idFrom; /控件标识UINT code

    4、; /通知码NMHDR;下面的程序段说明应用程序在窗口函数中处理通用控件的常用过程:LPNMHDR lpnmhdr;case WM_NOTIFYlpnmhdr=(LPNMHDR)lParam;switch(lpnmhdr-idFrom)case :/通用控件标识switch(lpnmhdr-code)case: /通知码break;case:break;break;case: /通用控件标识break;并非所有通用控件均响应用程序发出 WM_NOTIFY 消息。例如当用户单击工具栏中的按钮后,工具将向应用程序发出 WM_COMMAND 消息,该消息的字参数和长参数所包含的内容与标准控件中按钮相

    5、似。当用户操作滚动类通用控件时,该类控件将向应用程序发出 WM_VSCROLL 或 WM_HSCROLL 消息,而非 WM_NOTIFY消息。2应用程序向通用控件发送消息与标准控件相似,应用程序通过函数 Sendmessage 发送消息给通用控件。62 窗口控件类通用控件窗口类通用控件包括工具栏、工具栏提示和状态栏。621 工具栏工具栏是 WindowsGUI 中常使用的控件。1功能与特点工具栏实际上是一种图形化的菜单按钮,程序员通过工具栏将常用选项以图形化、平面化方式提供给用户,不但使图形用户界面生动形象,而且方便了用户操作。2创建应用程序中工具栏的创建常使用函数 CreateToolBar

    6、Ex 完成,该函数原型为: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

    7、,/按钮位图宽度Int nBitMapheight,/按钮位图高度UINT uStructSize/TBBUTTON 结构的大小)每个工具栏按钮均定义在一个 TBBUTTON 数据结构中,其定义如下:typedef struct tagTBBUTTONint idBitMap;int idCommand;BYTE fsState;BYTE fsStyle;BYTE bReserved2;DWORD dwData;int iString;TBBUTTON;工具栏中按钮的定义常通过定义 TBBUTTON 结构的数组实现,下面程序段为定义一个文件操作工具栏按钮的常用语法:TBBUTTON tbBut

    8、ton=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_ENABLEBUT

    9、TON 激活或禁止按钮(消息的长参数为非 0,激活按钮;为 0,禁止按钮)TB_CHECKBUTTON 标记或不标记按钮(消息的长参数为非 0,标记按钮;为 0,不标记按钮) TB_HIDEBUTTON 隐藏或显示按钮(消息的长参数为非 0,隐藏按钮;为 0,显示按钮) 622 工具栏提示工具栏提示经常与工具栏一同使用的通用控件。1功能工具栏提示是指将光标停在工具栏按钮上时显示的关于该按钮的文本说明,其功能是使用户可快速地了触该按钮的作用。2编程在具有 TBSTYLE_TOOLTIPS 风格的工具栏中,当用户将光标停在工具栏按钮上时,工具栏将向应用程序发出 WM_NOTIFY 消息。其长参数(

    10、lParam)包含一个指向 TOOLTIPTEXT 数据结构的指针,可通过该结构确定用户所指按钮并显示按钮的说明文本。Typedef struct tagTOOLTIPTEXTNMHDR hdr;LPTSTR lpszText;Char szText80;HINSTANCE hInst;UINT uFlags;TOOLTIPTEXT;6.2.3 状态栏1功能状态栏常位于窗口的底部,其主要功能是显示窗口的一些辅助信息。应用程序可通过状态栏提示用户可使用的热键、指示程序的进展状态及说明注意事项等等。2创建创建状态栏可通过调用 CreateStatusWindow 函数实现,该函数的原型为:HWND

    11、 CreateStatusWindow(DWORD dwStyle,LPCTSTR lpstr,HWND hwndParent,DWORD dwID3. 发送消息创建状态栏后,并不向应用程序发送消息。而应用程序可通过调用SendMessage 函数向状态栏发送消息,实现对状态栏的操作。例如:应用程序向状态栏发送消息 SB_SETPART,状态栏划分为若干个部分,其形式为:SendMessage(hwndStatus,SB_SETPART,(WPARAM)nPart,(LPARAM)nRightEnd);应用程序划分状态栏后,即可使用各部分的标识值操作有关部分。例如通过向状态栏发送消息 SB_S

    12、ETPART,设置各部分的状态文本,其形式为:SendMessage(hwndStatus,SB_SETPART,dwPartID,(LPARAM)lpstr);6.2.4 综合示例6.3 滚动类通用控件除包括窗口控制类通用控件外,资源管理器中还包括两种资源管理类通用控件:树形视图和列表视图。631 跟踪条控件跟踪条控件是 Windows 应用程序中常使用的控件类型。1功能跟踪条控件的功能是使用用户可便捷地设置某一对象(如音量)的量度,用户可通过拖动跟踪条控件中的量度指示指针到跟踪条的某一特定位置完成设置。此外,跟踪条还可作为指示任务完成进度的标志。2创建应用程序调用函数 CreateWind

    13、ow 创建跟踪条,其形式如下:hwndTrack= CreateWindow (TRACKBAR_CLASS,NULL,WS_CHILD|WS_VISIBLE|TBS_,0, 0,0,0,hwnd,NULL,hInst,NULL);其中 TRACKBAR_CLASS 为跟踪条控件的窗口句柄,TBS_为可选用的跟踪条风格。常用的跟踪条风格及其说明如下:风格 说明TBS_HORZ 水平放置跟踪条TBS_VERT 垂直放置跟踪条TBS_AUTOTICKS 自动设置跟踪条标志TBS_TOP 在跟踪条顶部设置标志TBS_BOTTOM 在跟踪条底部设置标志TBS_LEFT 在跟踪条左部设置标志TBS_RI

    14、GHT 在跟踪条右部设置标志3发送消息当用户与滚动类控件交互时,该类控件发出 WM_HSCROLL 或 WM_VSCROLL 消息,其长参数(lParam)中包含跟踪条句柄,字参数的低字节包含用户的动作标识。应用程序通过检测滚动条消息中的字参数获取动作标识,并转入相应的处理过程。4应用程序发送消息应用程序通过调用函数 SendMessage 向跟踪条发送消息。例如:获取当前指示指针位置的形式如下:iPos=Sendmessage(hwndTrack,TBM_GETPOS,0,0L);设置指示指针位置的形式如下:Sendmessage(hwndTrack,TBM_SETPOS,0,(LPARAM

    15、)iPos);6.3.2 微调按钮控件微调按钮控件是一种特殊的滚动类控件。1功能一般情况下,跟踪条既可作为独立的控件,也可与文本框一起使用。通过单击上下按钮即可实现相关内容按指定的步长滚动。例如:“时间/日期”对话框中的微调按钮。2创建通过调用函数 CreateUpDownControl 创建微调按钮,该函数的原型如下:HWND CreateUpDownControl(DWORD dwStyle,Int x,int y,Int cx,int cy,HWND hParent,Int iID,HINSTANCE hInst,HWND hBuddy,Int nUpper,int nLower,Int

    16、 nPos);3微调按钮控件发送消息用户与微调按钮控件交互时,该控件所发消息的长参数中包含微调按钮句柄。应用程序通过该句柄确定交互请求的资源,并转入相应的处理过程。提示:当微调按钮与其他窗口(常为文本框)关联时,其操作由系统完成,无需编程。4应用程序发送消息应用程序通过调用函数 SendMessage 向微调按钮发送消息。例如:获取微调按钮当前位置的形式如下:nPos= SendMessage(hwndUpdown,UDM_GETPOS,0,0L);设置微调按钮步长的形式如下:SendMessage(hwndUpdown,UDM_SETBASE,0,(LPARAM)nBase);6.3.3 示

    17、例64 基于 MFC 的通用控件编程方法MFC 类库为程序员提供了丰富的 Windows 通用控件类资源,并封装了通用控件的大部分烦琐操作,提供了更加便利的编程手段。MFC 中通用控件类主要包括工具栏类(CToolBar)、状态栏类(CStatusBar)、树型视图类(CTreeView)和列表视图类(ClistView)。641 工具栏类(CToolBar)Create 成员函数创建工具栏。BOOL Create(CWnd* pParentWnd,DWORD dwStyle=WS_CHILD|WS_VISIBLE|CBRS_TOP,UINT Nid=AFX_IDW_TOOLBAR);在应用程

    18、序中创建基于 MFC 的工具栏有以下两种方式:1加载工具栏资源采用该方法创建工具栏的步骤如下:(1)创建工具栏资源。(2)构造 CToolBar 对象。(3)调用成员函数 Create 创建窗口工具栏,并将该工具栏与 CtoolBar 对象关联。(4)调用成员函数 LoadToolBar 加载创建的工具栏资源。BOOL LoadToolBar(LPCTSTR lpszResourceName);BOOL LoadToolBar(UINT nIDResource);2. 不加载工具栏资源采用该方法创建工具栏的步骤如下:(1) 构造 CToolBar 对象。(2) 调用成员函数 Create 创建

    19、窗口工具栏,并将该工具栏与CToolBar 对象关联。(3) 调用成员函数 LoadBitmap 加载工具栏按钮的图象资源。BOOL LoadBitmap(LPCTSTR lpszResourceName);BOOL LoadBitmap (UINT nIDResource);(4)调用成员函数 SetButtons 关联按钮图象与对应按钮图象。BOOL SetButtons(const UINT * lpIDArray,int nIDCount);通过 AppWizard 创建应用程序时,系统根据程序员的请求在应用程序主窗口中添加一个通用工具栏及状态栏。如下图所示:AppWizard 创建的

    20、工具栏及状态栏(多文档)在 MainFrm.cpp 文件中,以下程序段创建工具栏:if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) |!m_wndToolBar.LoadToolBar(IDR_MAINFRAME)TRACE0(“Failed to create toolbarn“);return -1; / 创建失败6.5.2 状态栏类(CStatusBar

    21、)在 MFC 程中,状态栏的成员函数 Create 创建状态栏类,该函数的原型如下:BOOL Create(CWnd *pParentWnd,DWORD dwStyle=WS_CHILD|WS_VISIBLE|CBRS_BOTTOM,UINT Nid=AFX_IDW_STATUS_BAR);在应用程序中创建基于 MFC 的状态栏的步骤如下:1. 构造 CStatusBar 的对象。2. 调用成员函数 Create 创建状态栏,并将其与 CStatusBar 对象关联。3. 调用成员函数 SetIndicators 关联各部分与相应的字符串,该函数的原型如下:BOOL SetIndicators

    22、(const UINT * lpIDArray,int nIDCount);在应用程序中更新状态栏可采用以下三种方式:1调用函数 SetWindowText 更新状态栏首部内容,该函数的原型如下:void SetWindowText(LPCSTR lpszString);2. 通过调用函数 CcmdUI:SetText,该函数的原型如下:virtual void SetText(LPCSTR lpszText);3. 调用函数 SetPaneText 更新各部分内容,该函数的原型如下:BOOL SetPaneText(int nIndex,LPCSTR lpszNewText,BOOL bUp

    23、date=TRUE);CStatusBar 类中的主要操作函数及其说明如下:函数 说明CommandToIndex 通过状态各部分的 ID 标识获取其序号GetItemID 获取状态栏中指定部分 ID 标识GetItemRect 获取状态栏中指定部分大小GetPaneInfo 获取状态栏指定部分信息GetPaneStyle 获取状态栏指定部分风格GetPaneText 获取状态栏指定部分文本SetPaneStyle 设置状态栏指定部分类型SetPaneInfo 设置获取状态栏指定部分信息在 MainFr.cpp 文件中,以下程序段创建及初始化状态栏。/定义状态栏各部分 ID 标识列static

    24、 UINT indicators =ID_SEPARATOR, ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;/创建状态栏if (!m_wndStatusBar.Create(this) |!m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT)TRACE0(“Failed to create status barn“);return -1; / 创建失败6.5.3 树型视图类与树型控件类(CTreeView 与)在 MFC 类库结构中,树型视图

    25、类 CTreeView 由 CView 派生。CtreeView 对象通过调用其成员函数 GetTreeCtrl 获取相应树型控件,该函数原型如下:CtreeCtrl函数 Create 创建树型控件,该函数原型如下:BOOL Create(DWORD dwStyle,const RECT树型控件类中的主要函数及说明见表:函数 说明GetItemCount 获取树型控件中的项数GetIdent 获取树型控件中指定项对于其父项的偏移SetIdent 设置树型控件中指定项对于其父项的偏移GetImageList 获取与树型控件关联的图形表句柄SetImageList 设置与树型控件关联的图形表句柄G

    26、etNextItem 获取与指定项关联的项ItemHasChild 查询指定项是否具有子项GetChildItem 获取指定项的子项GetParentItem 获取指定项的父项GetSelectItem 获取当前选择项GetRootItem 获取根项GetItem 获取指定项的属性SetItem 设置指定项的属性GetItemState 获取指定项的状态SetItemState 设置指定项的状态GetItemImage 获取指定项的图形SetItemImage 设置指定项的图形GetItemText 获取指定项的文本SetItemText 设置指定项的文本GetCheck 获取指定项的选择状态

    27、SetCheck 设置指定项的选择状态InsertItem 在指定位置插入项DeleteItem 删除指定位置的项EditLabel 编辑项文本SelectItem 选择指定项6.5.4 列表视图类(CListView)在 MFC 类库结构中,树型视图类 CListView 由 CView 派生。CListView 对象通过调用其成员函数 GetListCtrl 获取相应列表控件,该函数原型如下:CListCtrl函数 Create 创建列表控件,该函数原型如下:BOOL Create(DWORD dwStyle,const RECT列表控件类中的主要函数及说明见表:函数 说明GetItemC

    28、ount 获取列表控件中的项数GetImageList 获取与列表控件关联的图形表句柄SetImageList 设置与列表控件关联的图形表句柄GetNextItem 获取与指定项关联的项GetItemPosition 获取指定项的位置SetItemPosition 设置项位置GetItemRect 获取指定项大小及位置GetItem 获取指定项的属性SetItem 设置指定项的属性GetColumn 获取指定列的属性SetColumn 设置指定列的属性GetColumnWidth 获取指定列的宽度SetColumnWidth 设置指定列的宽度GetItemState 获取指定项的状态SetItemState 设置指定项的状态SetItemImaage 将图形与指定项关联GetItemText 获取指定项的文本SetItemText 设置指定项的文本GetCheck 获取指定项的选择状态SetCheck 设置指定项的选择状态InsertItem 在指定位置插入项DeleteItem 删除指定位置的项DeleteAllItems 删除所有项EditLabel 编辑项文本FindItem 查找项InsertColumn 在指定位置插入一列DeleteColumn 删除指定位置的列6.5.5 列表控件示例

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第六章 通用控件.doc
    链接地址:https://www.docduoduo.com/p-8874877.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开