已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章子窗口控制项与系统预先定义窗口类 10 1基本概念10 1 1什么是子窗口控制项 控件1 控件 Windows中能通常把用作控制作用的子窗口称作的控制项 子窗口控制项 控件 所有的子窗口 控件 都是窗口子窗口在父窗口的客户里显示2 获取父窗口的窗口代号 GetParent hwndParent GetParent hwnd 获取窗口hwnd的父窗口代号3 子窗口与父窗口的通信 SendMessage SendMessage hwndParent message wParam lParam 10 1 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 VISIBLE控件的父窗口句柄控制项的ID编号 确定 10 1 2怎样创建子窗口控制项 1 控制项的窗口类名称Windows共提供了7种内定的控制项窗口类的名称 ButtonEditScrollbarStaticListBoxMDIComboBox 10 1 2怎样创建子窗口控制项 2 控制项式样WS CHILD WS VISIBLE3 控件的ID号 在窗口内唯一地标识控制项的一个识别字 4 控制项的父窗口控制项的活动区域 在父窗口的客户区里控制项的地址 其坐标原点父窗口客户区的左上角控制项会随父窗口的改变而改变 如移动 删除等 10 1 3控制项的操作 1 控制项通知父窗口 控制项的事件信息 发送WM COMMAND消息给父窗口 例如 用户在按钮控制项上按一下 控制项会自动发送一个WM COMMAND消息给其父窗口的窗口函数 消息名 WM COMMANDwParam 高位是通知码 低位是控制项的ID号lParam 控制项的代号2 通知码 指明子窗口发生的事件 以提示父窗口该干什么工作 如 BN CLICKED EN SETFOCUS EN CHANGE LBN DBLCLK 10 1 3控制项的操作 3 父窗口送信息给控制项 SendMessage SendMessage hWnd Message wParam lParam 每个控制项只能接收特定的窗口信息例如 想知道编辑框里的文本的长度 intlength 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的顶部的新位置 nWidth 指定了CWnd的新宽度 nHeight 指定了CWnd的新高度TRUE 移动后要重画 x y 是以父窗口客户区左上角为坐标原点 6 删除控制项 DestroyWindow DestroyWindow hWnd 如果删除的是父窗口 则 在父窗口里的所有控制项都将被删除 10 3子窗口与父窗口之间的消息传送 10 3 1子窗口向父窗口发送command消息用鼠标单击图中的按钮时 按钮控制项就向其父窗口发送一个WM COMMAND消息 消息参数wParam和lParam的含义 WM COMMAND消息参数的解释 子窗口ID LOWORD wParam 子窗口ID是在建立子窗口时CreateWindow的第9个参数的值 子窗口ID采用的是 HMENU i按钮通知码 HIWORD wParam 按钮通知码表达了按钮的作用 它也是子窗口发送到父窗口的command消息的含义 按钮通知码的值在Windows表头文件中定义如下 WM COMMAND消息参数的解释 3 子窗口代号 lparam lparam是子窗口代号 是CreateWindow返回的值 是窗口消息存贮区的地址 10 3 2父窗口向子窗口发送消息 父窗口函数也能向按钮控制项发送消息 这些消息可以是以字首WM开头的窗口消息另外 还可以是在WINUSER H中定义的8个按钮消息 这些按钮消息都是以字首BM 按钮消息 开头的字符串 见表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个参数所指定的文字 文字在矩形的中心 用字符串表示 该矩形的高度和宽度由CreateWindow或者MoveWindow调用中给出 按钮控制项主要用来触发一个立即作出回应的动作 而不保留任何形式的开 关指示 10 4 1按钮的分类 按钮是按照建立按钮时的预定义窗口类及所建窗口的式样来进行分类的 CreateWindow根据button所建立的子窗口控制项称为按钮控制项 简称按钮 再根据CreateWindow的第三个参数所采用的窗口式样的不同 按钮可以分成多种类型 可以分为 常规按钮核取方块具有BS CHECKBOX式样的核取方块具有BS AUTOCHECKBOX式样的核取方块单选按钮分组块 1 常规按钮 有两种常规的按钮控制项 这两种常规按钮取决于两种窗口式样 分别叫做BS PUSHBUTTON和BS DEFPUSHBUTTON BS DEFPUSHBUTTON中的 DEF 代表 内定 BS 前缀表示buttonstyle 2 核取方块 核取方块通常用於对选项进行选择的应用程序中 一般都把一组核取方块在一起 每个核取方块如同一个开关 单击核取方块一次将在核取方块上显示出一个勾选标记 再次单击则清除勾选标记 单选按钮使用的时候也是把许多单选按钮放在一起 这组单选按钮就像收音机按键一样 每一个按键都对应一种收音状态 而且一次只能有一个按键被按下 核取方块就是常用的复选按钮或称复选框 单选按钮就是常见的收音机按钮 3 核取方块的分类 核取方块按照窗口式样来进行分类 最常用的两种式样是BS CHECKBOX和BS AUTOCHECKBOX 1 具有BS CHECKBOX式样核取方块的应用 2 具有BS AUTOCHECKBOX式样核取方块的应用 4 单选按钮 一组单选按钮就像汽车上的收音机一样 每一个按钮都对应一种收音状态 而且一次只能有一个按钮被按下 单选按钮有窗口式样BS RADIOBUTTON或BS AUTORADIOBUTTON两种 但是後者只用於对话框 5 分组方块 分组块也是用子窗口实现的按钮类 不过 实现时的窗口类式样为BS GROUPBOX 它是按钮类中的特例 既不处理鼠标输入和键盘输入 也不向其父窗口发送WM COMMAND消息 分组块仅是一个矩形框 分组块标题在其顶部显示 分组块常用来包含其他的按钮控制项 10 4 2如何改变按钮上的文字 按钮上的文字 表示按钮的名称和作用 是CreateWindow的第2个参数所规定的窗口标题 改变按钮上的文字 SetWindowText SetWindowText hwnd pszString 取得当前窗口的文字 GetWindowText iLength GetWindowText hwnd pszBuffer iMaxLength 获得文字的长度 GetWindowTextLength iLength GetWindowTextLength hwnd 10 4 3按钮的可见与启用 显示按钮 ShowWindow 如果在建立时 WS VISIBLE没有包含在窗口式样中 则要调用ShowWindow 才能显示按钮ShowWindow hWnd SW SHOWNORMAL 如果在建立时 WS VISIBLE包含在窗口式样中 没有必要调用ShowWindow 将子窗口隐藏起来 ShowWindow ShowWindow hWnd SW HIDE 判断窗口是否可见 IsWindowVisible BOOLbFlag IsWindowVisible hWnd TRUE 可见 FALSE 隐藏 启用窗口 EnableWindow EnableWindow hWnd TRUE 启用EnableWindow hWnd FALSE 变灰判断窗口是否启用 IsWindowEnabled BOOLbFlag 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 hInstance 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在静态控制项上写 文字 CreateWindow的第二个参数是窗口的标题栏目 用文字书写 但是在建立静态控制项时忽略了文字 如果要在控制项上写上文字 则可以用DrawText函数 用DrawText函数在静态控制项上写文字时 静态控制项可以包括三种文字式样 SS LEFT SS RIGHT和SS CENTER 分别表示文字在静态按钮控制项上是左对齐 右对齐和居中 10 8编辑控制项 编辑窗口类是最简单的预先定义窗口类 它又是最复杂的窗口类 当您使用 edit 窗口类名称建立子窗口时 根据CreateWindow调用中的x地址 y地址 宽度和高度这些参数定义了一个矩形 此矩形内可编辑文字 当编辑控制项拥有输入焦点时 您可以输入文字 移动游标 使用鼠标或者Shift键与一个游标键来选取部分文字 按Ctrl X来删除所选文字或按Ctrl C来复制所选文字 并送到剪贴簿上 按CtrI y或Ctrl V键插入剪贴簿上的文字 编辑控制项的最简单的应用之一是作为单行输入区域 10 8 1编辑控制项的例程POPPAD1 C 教材程序 10 10 4POPPAD1 doc 10 8 2编辑控制项的窗口类edit和窗口式样ES 窗口类 edit 编辑控制项窗口式样 WS CHILD WS VISIBLE WS HSCROLL WS VSCROLL WS BORDERES LEFT ES MULTILINE ES AUTOHSCROLL ES AUTOVSCROLL 10 8 3编辑控制项产生的通知码 编辑控制项和按钮控制项一样给父窗口函数发送WM COMMAND消息 对编辑控制项来说 wParam和lParam变量的含义和按钮控制项是相同的 10 8 3编辑控制项产生的通知码 编辑控制项的通知码是以EN 为前缀的字符串 如下所示 10 8 4编辑控制项的使用 如果想在编辑区中插入文字 可以使用SetWindowText 将文字从编辑控制项中取出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人简历模版(三页)带封面(可编辑)百花绽放风
- 2025年短期劳动合同范本
- 不合格品追溯与处理操作指南
- 2025商品房买卖合同备案授权委托书
- 2025电气设计年终工作总结(二篇)
- 2025年租赁农民土地承包合同范本
- 2025设备质押借款合同范本
- 2025年下半年吉林长春市直事业单位招聘高层次及急需紧缺人才5人(31号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林省长春市朝阳区事业单位招聘30人(3号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林省白山市长白朝鲜族自治县事业单位招聘44人(2号)易考易错模拟试题(共500题)试卷后附参考答案
- (正式版)FZ∕T 14004-2024 再生纤维素纤维印染布
- 2024年山东省化学检验员技能竞赛参考试题库(附答案)
- 妈妈咪呀 mamma mia二部合唱简谱
- 初中物理实验目录及相关器材大全
- 歌曲《莫尼山》艺术风格与演唱实践探析
- 谷歌案例分析
- 劳动保障协管员管理办法
- 【课件】7-1 慢充不充电故障诊断与排除
- 透过性别看世界学习通章节答案期末考试题库2023年
- 戏曲鉴赏学习通课后章节答案期末考试题库2023年
- GRR-计数型(范例填写)
评论
0/150
提交评论