




免费预览已结束,剩余37页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5课 windows 程序-窗口,北方软件学院,格物致知 见微知著,windows人机交互程序设计,北方软件学院-windows人机交互程序设计,本课主要内容,知识回顾 消息机制 消息机制原理 消息结构 窗口创建 registerclassex createwindow 窗口过程处理函数,北方软件学院-windows人机交互程序设计,windows 数据类型,* *,北方软件学院-windows人机交互程序设计,windows 数据类型,* *,北方软件学院-windows人机交互程序设计,什么是api *,api(application programming interface,应用程序编程接口) 是一套用来控制windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的windows函数.用户的每个动作都会引发一个或几个函数的运行以告诉windows发生了什么。,北方软件学院-windows人机交互程序设计,匈牙利命名法-常用标识符类型前缀*,北方软件学院-windows人机交互程序设计,窗口类别,对话框窗口 模式对话框 非模式对话框 文档窗口 单文档窗口 多文档窗口 特殊窗口,北方软件学院-windows人机交互程序设计,窗口关系,包含关系(组合关系) 父窗口 子窗口,父窗口,子窗口,北方软件学院-windows人机交互程序设计,windows窗口坐标系,(0,0),x,y,(20,10),事件驱动,北方软件学院-windows人机交互程序设计,事件驱动的概念*,什么是事件? 事件是由它的时间和空间所指定的空间时间中的一点。 在计算机中,事件是可以被控件识别的操作,如按下确定按钮,选择某个单选按钮或者复选框。每一种控件有自己可以识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事,等等。 事件有系统事件和用户事件。系统事件由系统激发,如时间每隔24小时,银行储户的存款日期增加一天。 什么是事件驱动 简单来说就是:通过触发事件,来运行程序。比如一个按钮(command1),可以通过单击(click)按钮这个事件来触发一个结果:显示一个对话框。,北方软件学院-windows人机交互程序设计,消息的概念,新闻领域消息的概念: 只报道事情的概貌而不讲述详细的经过和细节,以简要的语言文字迅速传播事件。 消息要素:时间、地点、事件、事情发生的原因、经过、结果。 计算机领域概念: 消息,软件对象之间进行交互作用和通讯。 消息与事件之间的关系: 事件触发消息,消息传递事件。,北方软件学院-windows人机交互程序设计,事件驱动程序原理,获取事件,开始,是否退出,事件处理函数/程序,结束,发送消息,接收消息,北方软件学院-windows人机交互程序设计,简单的事件驱动程序,#include void main() char ch; while(ch = getchar() != q) switch (ch) case a: break; case b: break; ,“消息”,键盘输入字符事件获取,北方软件学院-windows人机交互程序设计,简单的事件驱动程序,#include void main() char ch; while(ch = getchar() != q) dealmessage(ch); ,#include void dealmessage(ch) switch (ch) case a: break; case b: break; return 0; ,事件处理函数 (消息处理函数),北方软件学院-windows人机交互程序设计,思考?,问题:在基于控制台的c语言程序中如何截获键盘案件的事件? char ch = getchar(); while(ch != q) printf(“%c”,ch); 能截获鼠标事件么? getchar函数做了什么事情?,北方软件学院-windows人机交互程序设计,getchar函数做了什么事情?,北方软件学院-windows人机交互程序设计,getmessage,windowproc,defwindowproc,系统消息 队列,应用程序 消息队列,鼠标事件,键盘事件 等等,windows 应用程序,消息机制* *,消息循环,操作系统,应用程序,消息,北方软件学院-windows人机交互程序设计,windows消息结构*,typedef struct tagmsg hwnd hwnd; /接收该消息的窗口句柄 uint message; /消息的名称 wparam wparam; /附带参数 lparam lparam; /附带参数 dword time; /消息的传递时间 point pt; /当前光标位置 msg;,窗口的创建,北方软件学院-windows人机交互程序设计,让我们从下面的程序开始,北方软件学院-windows人机交互程序设计,创建窗口的主要步骤*,开始,windows入口 函数,消息循环 结束?,结束,消息1,输入界面,控件响应,系统事件,注册窗口类,创建窗口,是,否,窗口过程处理 函数,消息n,消息2,北方软件学院-windows人机交互程序设计,注册窗口类,什么是窗口类? 编辑框,按钮,对话框等都具有不同的风格。 为什么要注册窗口类? 创建一个新的风格的窗口类型。 新的类型需要在操作系统中进行注册,否则无法创建该类型的窗口。,北方软件学院-windows人机交互程序设计,注册窗口类(api讲解),atom registerclassex(const wndclassex *lpwndclass ) atom registerclass(const wndclass *lpwndclass ) atom 是什么类型?word 执行成功atom != 0,北方软件学院-windows人机交互程序设计,wndclassex,北方软件学院-windows人机交互程序设计,应用举例,北方软件学院-windows人机交互程序设计,创建窗口(api讲解) * *,hwnd createwindow (); hwnd createwindowex ();,北方软件学院-windows人机交互程序设计,创建窗口(api讲解),北方软件学院-windows人机交互程序设计,*createwindows参数讲解,lpctstr lpclassname 指定当前创建的窗口所属的窗口类的名字。 常用的窗口类有:“edit”、“button”、“reichedit”、“listbox”等。 字符串类型。 lpctstr lpwindowsname 指定当前创建的窗口的窗口名字。 dword dwstyle 指名窗口的创建风格 如:如果将这个参数赋值成ws_border 风格,则窗口将是一个带有边框的方形。,北方软件学院-windows人机交互程序设计,*createwindows参数讲解,int x 窗口的水平坐标 int y 窗口的垂直坐标 int nwidth 窗口的宽度 int nheight 窗口的高度,北方软件学院-windows人机交互程序设计,* createwindows参数讲解,hwnd hwndparent 窗口的父窗口的句柄。,北方软件学院-windows人机交互程序设计,* createwindows参数讲解,hmenu hmenu 菜单句柄或者子窗口id 注:如果创建的窗口是一个窗口的子窗口,则用这个参数来标识窗口。 hinstance hinstance 应用程序实例句柄 注:winman 函数传入的参数之一 lpvoid lpparam 存放一些与窗口相关的数据。 一般情况下赋值为null,北方软件学院-windows人机交互程序设计,消息循环*,winmain中 处理消息的循环语句,北方软件学院-windows人机交互程序设计,*getmessage,bool getmessage( lpmsg lpmsg, hwnd hwnd, uint wmsgfiltermin, uint wmsgfiltermax); 功能:从系统消息队列中获得消息;,北方软件学院-windows人机交互程序设计,参数作用,lpmsg : 指向一个消息结构的指针。 hwnd: 想要获取消息所在窗口的句柄,如果等于null,则获取所有消息。 wmsgfiltermin:等于0; wmsgfiltermax:等于0;,北方软件学院-windows人机交互程序设计,消息循环内部api,translateaccelerator 翻译加速键 translatemessage 翻译键盘消息 dispatchmessage 派遣消息 返回,北方软件学院-windows人机交互程序设计,*什么是窗口过程处理函数?,处理窗口消息的函数。 lresult callback wndproc( hwnd hwnd, uint message, wparam wparam, lparam lparam),北方软件学院-windows人机交互程序设计,应用举例,北方软件学院-windows人机交互程序设计,参数作用*,hwnd hwnd 消息所属窗口的句柄 uint message 消息名称 wparam wparam 消息的 wparam参数 lparam lparam 消息的lparam参数 想想消息结构?,北方软件学院
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浦发银行廊坊市三河市2025秋招小语种岗笔试题及答案
- 平安银行新乡市红旗区2025秋招数据分析师笔试题及答案
- 福建企业咨询方案公示
- 【历史】河南省洛阳市重点中学2025届高三联考历史试卷(二)(附带解析)
- 考点解析-公务员考试《常识》定向测评试卷(含答案解析)
- 2025年国家电网招聘考试模拟试题附答案详解【综合卷】
- 2025山东省投融资担保集团有限公司博士后人员招聘3人笔试参考题库附带答案详解
- 民生银行笔试题及答案
- 执业药师之《药事管理与法规》自我提分评估带答案详解(精练)
- 政法干警试卷(培优B卷)附答案详解
- 华为质量管理评估模型(31个评估要素和评估报告)
- 模具凸凹模工艺文件工序卡
- 储备店长培训工作流程-课件
- 药品效期管理
- GB 42590-2023民用无人驾驶航空器系统安全要求
- 《精神科护理学》练习题及答案
- 压水堆核电厂二回路系统与设备介绍
- 护士执业注册体检表
- 外科学 胃十二指肠疾病
- 2021北京昌平初二(上)期中数学(A)(教师版)
- LY/T 1180-2006脲醛预缩液
评论
0/150
提交评论