版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第 10 章章 子窗口控制项与系统预先定义窗口类子窗口控制项与系统预先定义窗口类10.1 基本概念10.1.1 什么是子窗口控制项控件1、控件:Windows中能通常把用作控制作用的子窗口称作的控制项、子窗口控制项、控件。 所有的子窗口(控件)都是窗口 子窗口在父窗口的客户里显示2、获取父窗口的窗口代号-GetParent();hwndParent=GetParent(hwnd); / 获取窗口hwnd的父窗口代号3、子窗口与父窗口的通信SendMessage();SendMessage(hwndParent, message, wParam, lParam);10.1.2 怎样怎样创建子窗
2、口控制项控制项是一个子窗口,因此可以用CreateWindow( )函数来建立CreateWindow(ClassName, WindowName, Style, x, y,Width, Height, hWndParent, hMenu, hInstance, lpParam);例如:CreateWindow(Button,确定, WS_CHILD|WS_VISIBLE,12,12, 52, 32, hWnd, (HMENU)1, hInstance, 0);利用CreateWindow建立控制项必须提供下面四个必要信息:控件项的窗口类名:Button控件项的式样:WS_CHILD|WS_V
3、ISIBLE控件的父窗口句柄控制项的ID编号确定10.1.2 怎样怎样创建子窗口控制项1、控制项的窗口类名称Windows共提供了7种内定的控制项窗口类的名称:ButtonEditScrollbarStaticListBoxMDIComboBox10.1.2 怎样怎样创建子窗口控制项2、控制项式样 WS_CHILD|WS_VISIBLE3、控件的ID号:在窗口内唯一地标识控制项的一个识别字。4、控制项的父窗口控制项的活动区域:在父窗口的客户区里控制项的地址:其坐标原点父窗口客户区的左上角控制项会随父窗口的改变而改变:如移动、删除等10.1.3 控制项的操作1、控制项通知父窗口控制项的事件信息:
4、发送WM_COMMAND消息给父窗口。例如,用户在按钮控制项上按一下:控制项会自动发送一个WM_COMMAND消息给其父窗口的窗口函数。消息名:WM_COMMANDwParam:高位是通知码,低位是控制项的ID号lParam:控制项的代号2、通知码:指明子窗口发生的事件,以提示父窗口该干什么工作。如:BN_CLICKED、EN_SETFOCUS、EN_CHANGE、LBN_DBLCLK10.1.3 控制项的操作3、父窗口送信息给控制项SendMessage();SendMessage(hWnd, Message, wParam, lParam);每个控制项只能接收特定的窗口信息例如,想知道编辑
5、框里的文本的长度:int length;length=SendMessage(hEditWnd, WM_GETTEXTLENGTH, 0, 0);4、控制项有效或无效EnableWindow()使有效:EnableWindow(hWndChild, TRUE);使无效:EnableWindow(hWndChild, FALSE);判断有无效:IsWindowsEnabled(hWndChild);10.1.3 控制项的操作5、移动和改变控制项的大小MoveWindow();MoveWindow(hWnd/ 要移动的窗口x, / 指定了CWnd的左边的新位置。 y, / 指定了CWnd的顶部的新
6、位置。 nWidth,/ 指定了CWnd的新宽度。 nHeight,/ 指定了CWnd的新高度 TRUE/ 移动后要重画);(x,y)是以父窗口客户区左上角为坐标原点。6、删除控制项DestroyWindow();DestroyWindow(hWnd);如果删除的是父窗口,则,在父窗口里的所有控制项都将被删除。10.3 子窗口与父窗口之间的消息传送子窗口与父窗口之间的消息传送 10.3.1 子窗口向父窗口发送子窗口向父窗口发送command消息消息用鼠标单击图中的按钮时,按钮控制项就向其父窗口发送一个用鼠标单击图中的按钮时,按钮控制项就向其父窗口发送一个WM_COMMAND消息消息。消息参数w
7、Param和lParam的含义LOWORD (wParam) HIWORD (wParam)lParam子窗口ID 按钮通知码子窗口代号WM_COMMAND消息消息参数的解释1.子窗口子窗口ID (LOWORD (wParam)子窗口ID是在建立子窗口时CreateWindow的第9个参数的值。子窗口ID采用的是(HMENU) i2.按钮通知码按钮通知码(HIWORD (wParam)按钮通知码表达了按钮的作用,它也是子窗口发送到父窗口的command消息的含义。按钮通知码的值在Windows表头文件中定义如下: 按钮通知码按钮通知码值值BN_CLICKED0BN_PAINT1BN_HILIT
8、E or BN_PUSHED2BN_UNHILITE or BN_UNPUSHED3BN_DISABLE4BN_DOUBLECLICKED or BN_DBLCLK5BN_SETFOCUS6BN_KILLFOCUS7WM_COMMAND消息消息参数的解释3. 子窗口代号子窗口代号(lparam)lparam是子窗口代号,是CreateWindow返回的值,是窗口消息存贮区的地址 10.3.2 父窗口向子窗口发送消息父窗口向子窗口发送消息父窗口函数也能向按钮控制项发送消息,这些消息可以是以字首WM开头的窗口消息另外,还可以是在WINUSER.H中定义的8个按钮消息,这些按钮消息都是以字首BM“按
9、钮消息”开头的字符串(见表10-2).几个计算函数1. 由子窗口代号获得由子窗口代号获得ID的方法的方法id = GetWindowLong (hwndChild, GWL_ID); id = GetDlgCtrlID (hwndChild) ;2. 由子窗口ID和父窗口代号hwndParent获得子窗口代号hwndChild的方法hwndChild = GetDlgItem (hwndParent, ID) ;10.4 按钮按钮按钮的形状是一个矩形,是用 CreateWindow实现的子窗口,矩形上的字符串是CreateWindow的第2个参数所指定的文字。文字在矩形的中心,用字符串表示。该
10、矩形的高度和宽度由CreateWindow或者MoveWindow调用中给出。按钮控制项主要用来触发一个立即作出回应的动作,而不保留任何形式的开/关指示。 10.4.1 按钮的分类按钮的分类按钮是按照建立按钮时的预定义窗口类及所建窗口的式样来进行分类的。CreateWindow根据button所建立的子窗口控制项称为按钮控制项,简称按钮。再根据CreateWindow的第三个参数所采用的窗口式样的不同,按钮可以分成多种类型, 可以分为: 常规按钮 核取方块 具有BS_CHECKBOX式样的核取方块 具有BS_AUTOCHECKBOX式样的核取方块 单选按钮 分组块1. 常规按钮常规按钮 有两种
11、常规的按钮控制项,这两种常规按钮取决于两种窗口式样,分有两种常规的按钮控制项,这两种常规按钮取决于两种窗口式样,分别叫做别叫做BS_PUSHBUTTON和和BS_DEFPUSHBUTTON。 BS_DEFPUSHBUTTON中的DEF代表内定,BS_前缀表示button style。 2. 核取方块核取方块核取方块通常用於对选项进行选择的应用程序中。一般都把一组核取方块在一起,每个核取方块如同一个开关。单击核取方块一次将在核取方块上显示出一个勾选标记,再次单击则清除勾选标记。 单选按钮使用的时候也是把许多单选按钮放在一起,这组单选按钮就像收音机按键一样,每一个按键都对应一种收音状态,而且一次只
12、能有一个按键被按下。 核取方块就是常用的复选按钮或称复选框,单选按钮就是常见的收音机按钮。 3. 核取方块的分类核取方块的分类核取方块按照窗口式样来进行分类,最常用的两种式样是核取方块按照窗口式样来进行分类,最常用的两种式样是BS_CHECKBOX和和BS_AUTOCHECKBOX。 (1) 具有具有BS_CHECKBOX式样核取方块的应用。式样核取方块的应用。(2) 具有具有BS_AUTOCHECKBOX式样核取方块的应用。式样核取方块的应用。4. 单选按钮单选按钮一组单选按钮就像汽车上的收音机一样,每一个按钮都对应一种收音状态,而且一次只能有一个按钮被按下。 单选按钮有窗口式样单选按钮有窗
13、口式样BS_RADIOBUTTON或或BS_AUTORADIOBUTTON两种两种,但是後者只用於对话框。 5. 分组方块分组方块分组块也是用子窗口实现的按钮类,不过,实现时的窗口类式样为分组块也是用子窗口实现的按钮类,不过,实现时的窗口类式样为BS_GROUPBOX,它是按钮类中的特例,既不处理鼠标输入和键盘输入,也不向其父窗口发送WM_COMMAND消息。分组块仅是一个矩形框,分组块标题在其顶部显示。分组块常用来包含其他的按钮控制项10.4.2 如何改变按钮上的文字如何改变按钮上的文字 按钮上的文字: 表示按钮的名称和作用,是CreateWindow的第2个参数所规定的窗口标题。改变按钮上
14、的文字SetWindowText(): SetWindowText (hwnd, pszString) ;取得当前窗口的文字:GetWindowText(); iLength = GetWindowText (hwnd, pszBuffer, iMaxLength) ;获得文字的长度:GetWindowTextLength () ;iLength = GetWindowTextLength (hwnd) ;10.4.3 按钮的可见与启用按钮的可见与启用1. 显示按钮ShowWindow()如果在建立时,WS_VISIBLE没有包含在窗口式样中,则要调用ShowWindow()才能显示按钮Sho
15、wWindow(hWnd, SW_SHOWNORMAL);如果在建立时,WS_VISIBLE包含在窗口式样中,没有必要调用ShowWindow。2. 将子窗口隐藏起来ShowWindow()ShowWindow(hWnd, SW_HIDE);3. 判断窗口是否可见 IsWindowVisible()BOOL bFlag=IsWindowVisible(hWnd); / TRUE:可见;FALSE:隐藏。4. 启用窗口 EnableWindow()EnableWindow(hWnd, TRUE); / 启用EnableWindow(hWnd, FALSE); / 变灰5. 判断窗口是否启用 Is
16、WindowEnabled()BOOL bFlag=IsWindowEnabled(hWndChild); / TRUE:启用;FALSE:灰化10.6 静态控制项静态控制项 如果CreateWindow函数的第1个参数为”static”,表示指定的窗口类是静态窗口类, ”static”是静态类的标识符。和按钮类窗口类button一样,静态窗口类是Windows中内定的窗口类。按照静态窗口类创建的子窗口称为静态控制项静态控制项。 CreateWindow(static,密 码:, WS_CHILD|WS_VISIBLE,12,12, 52, 32, hWnd, (HMENU)10, hInst
17、ance, 0);10.6.1 预定义静态窗口类预定义静态窗口类(static)的特点的特点 静态控制项非常“文静”。它既不接收鼠标或键盘的输入,也不向父窗口发送WM_COMMAND消息。10.6.2 静态控制项的窗口式样静态控制项的窗口式样CreateWindow的第三个参数是窗口式样,这个参数决定着静态控制项的形态与性能。下面表格中列出了此表前面的六个静态窗口式样,前缀SS_表示静态式样。SS_BLACKRECT,SS_GRAYRECT,SS_WHITERECT,SS_BLACKFRAME,SS_GRAYFRAME,SS_WHITEFRAME,10.6.3 在静态控制项上写在静态控制项上写
18、”文字文字”CreateWindow的第二个参数是窗口的标题栏目,用文字书写,但是在建立静态控制项时忽略了文字,如果要在控制项上写上文字,则可以用用DrawText函数函数。 用DrawText函数在静态控制项上写文字时,静态控制项可以包括三种文字式样:SS_LEFT、SS_RIGHT和SS_CENTER,分别表示文字在静态按钮控制项上是左对齐、右对齐和居中 10.8 编辑控制项编辑控制项 编辑窗口类是最简单的预先定义窗口类,它又是最复杂的窗口类。当您使用“edit”窗口类名称建立子窗口时,根据CreateWindow调用中的x地址、y地址、宽度和高度这些参数定义了一个矩形。此矩形内可编辑文字
19、。当编辑控制项拥有输入焦点时,您可以输入文字,移动游标,使用鼠您可以输入文字,移动游标,使用鼠标或者标或者Shift键与一个游标键来选取部分文字,按键与一个游标键来选取部分文字,按Ctrl-X来删除所选文来删除所选文字或按字或按Ctrl-C来复制所选文字、并送到剪贴簿上,按来复制所选文字、并送到剪贴簿上,按CtrI-y或或Ctrl-V键键插入剪贴簿上的文字。编辑控制项的最简单的应用之一是作为单行输插入剪贴簿上的文字。编辑控制项的最简单的应用之一是作为单行输入区域。入区域。10.8.1 编辑控制项的例程编辑控制项的例程POPPAD1.C (教材程序教材程序1010-4 POPPAD1.doc)10.8.2 编辑控制项的窗口类编辑控制项的窗口类edit和窗口式样和窗口式样ES窗口类:“edit” 编辑控制项窗口式样: WS_CHILD、WS_VISIBLE、 WS_HSCROLL、WS_VSCROLL 、WS_BORDER ES_LEFT、ES_MULTILINE、ES_AUTOHSCROLL、ES_AUTOVSCROLL10.8.3 编辑控制项产生的通知码编辑控制项产生的通知码编辑控制项和按钮控制项一样给父窗口函数发送WM_COMMAND消息,对编辑控制项来说,wParam和lParam变量的含义和按钮控制项是相同的:变量变量 含含 义义LOWORD (wP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中班图形加法题目及答案
- 政治会考题目及答案高中
- 2026数据中心机房建设整体解决方案
- 户用超声波热量表在碳普惠平台中的个人减碳量核算
- 金峰豪庭水土保持方案报告表
- 祁门豆花鸡开发与利用项目水土保持报告表
- 体内各器官囊性疾病的研究进展总结2026
- 新生儿窒息课件中职《儿科护理》同步教学(北京出版社)
- 2026服务端面试题及答案
- 2026年AI系统优化蔬菜溯源管理
- 2026年辽宁锦州海通实业有限公司度校园招聘28人笔试模拟试题及答案详解
- 髋关节撞击综合征标准化诊疗专家共识(2026 版)
- 2026北京语言大学事业编制人员招聘11人备考题库(第三批)附答案详解ab卷
- 2026年中好建造科技有限公司第二次社会招聘笔试参考试题及答案解析
- 2026年重大事故隐患判定标准专项培训试卷附答案
- 黑龙江省哈尔滨市2025届中考物理试卷(含答案)
- 储能行业压缩空气储能电站经济性调研报告
- 2026年高考数学北京卷试卷(含答案)
- 医院慢病管理中心建设与运营方案
- 口腔实践技能考试病史采集要点汇总
- 述职报告结尾金句
评论
0/150
提交评论