第1讲-Windows开发基础.ppt

上传人:marr****208 文档编号:133854214 上传时间:2020-05-31 格式:PPT 页数:24 大小:643.50KB
返回 下载 相关 举报
第1讲-Windows开发基础.ppt_第1页
第1页 / 共24页
第1讲-Windows开发基础.ppt_第2页
第2页 / 共24页
第1讲-Windows开发基础.ppt_第3页
第3页 / 共24页
第1讲-Windows开发基础.ppt_第4页
第4页 / 共24页
第1讲-Windows开发基础.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《第1讲-Windows开发基础.ppt》由会员分享,可在线阅读,更多相关《第1讲-Windows开发基础.ppt(24页珍藏版)》请在金锄头文库上搜索。

1、第一讲基础知识 2020年5月31日9时8分 Windows编程机制 Windows是一个多进程的图形窗口操作系统 Windows应用程序与DOS应用程序有很大的区别 DOS应用程序采用顺序执行过程 而Windows是一个基于事件的消息 Message 驱动系统 Windows应用程序是按照 事件 消息 处理 非顺序的机制运行 当有某个事件 如单击鼠标 键盘输入和执行菜单命令等 发生时 Windows会根据具体的事件产生对应的消息 并发送到指定应用程序的消息队列 应用程序从消息队列中取出消息 并根据不同的消息进行不同的处理 2020年5月31日9时8分 事件和消息 所谓消息就是用于描述某个事件

2、发生的信息 而事件是对于Windows的某种操作 事件和消息密切相关 事件是因 消息是果 事件产生消息 消息对应事件 所谓消息的响应 其实质就是事件的响应 消息驱动是Windows应用程序的核心 所有的外部响应 如键盘 鼠标和计时器等 都被Windows先拦截 转换成消息后再发送到应用程序中的目标对象 应用程序根据消息的具体内容进行处理 消息不仅可由Windows发出 也可由应用程序本身或其它程序产生 Windows为每一个应用程序都维护一个或多个消息队列 发送到每个程序窗口的消息都排成一个队列 2020年5月31日9时8分 消息驱动 2020年5月31日9时8分 消息类型 标准Windows

3、消息 以WM 前缀 但不包括WM COMMAND 开始的消息 包括鼠标消息 键盘消息和窗口消息 如WM MOVE WM PAINT等 控件通知 ControlNotification 消息 对控件操作引起的消息 是控件和子窗口向其父窗口发出的WM COMMAND通知消息 例如 当用户修改了编辑控件中的文本后 编辑控件向其父窗口发送WM COMMAND通知消息 命令 Command 消息 由菜单项 工具栏按钮 快捷键等用户界面对象发出的WM COMMAND消息 命令消息与其它消息不同 它可被更广泛的的对象如文档 文档模板 应用程序对象 窗口和视图等处理 2020年5月31日9时8分 句柄 在Wi

4、ndows中 用句柄 Handle 标识应用程序中不同的对象和同类对象中不同的实例 如某个窗口 按钮 输出设备 画笔和文件等 通过句柄可以获得相应的对象信息 常用的句柄类型有 HWND HINSTANCE HDC HCURSOR HICON HMENU等 句柄常作为Windows消息和API函数的参数 在采用API方法编写Windows应用程序时要经常使用句柄 而采用MFC方法编写Windows应用程序时 由于对应的MFC类已对句柄进行了封装 大多数情况下不再需要访问句柄 2020年5月31日9时8分 匈牙利命名法 匈牙利命名法是一种编程时的命名规范 基本原则是 变量名 属性 类型 对象描述

5、其中每一对象的名称都要求有明确含义 可以取对象名字全称或名字的一部分 这种命名法是一位叫CharlesSimonyi的匈牙利程序员 微软Word之父 所见即所得技术的发明者 发明的 后来他在微软呆了几年 于是这种命名法就通过微软的各种产品和文档资料向世界传播开了 现在 大部分程序员不管自己使用什么软件进行开发 或多或少都使用了这种命名法 2020年5月31日9时8分 匈牙利命名方法举例 属性部分全局变量g 常量c c 类成员变量m 静态变量s 类型部分指针p函数fn无效 空值 v句柄h长整型l布尔b 浮点型 有时也指文件 f双字dw字符串sz短整型n双精度浮点d计数c 通常用cnt 字符ch

6、通常用c 整型i 通常用n 字节by字w实型r无符号u 2020年5月31日9时8分 消息的结构 typedefstructtagMSG HWNDhWnd 目标窗口句柄UINTmessage 消息标识WPARAMwParam 消息参数1 附加信息 16位 LPARAMlParam 消息参数2 附加信息 32位 DWORDtime 消息发送时间POINTpt 消息发送时鼠标的屏幕坐标 MSG 2020年5月31日9时8分 Windows程序的入口 WinMain函数是所有Windows应用程序的入口 类似C语言的main WinMain函数的功能是完成一系列的定义和初始化工作 并产生消息循环消息

7、循环是整个程序的核心WinMain函数由三部分组成 函数说明 初始化和消息循环 2020年5月31日9时8分 WinMain函数说明 intWINAPIWinMain HINSTANCEhInstance 应用程序当前实例句柄HINSTANCEhPrevInst 应用程序其他实例句柄LPSTRlpszCmdLine 指向程序命令行参数的指针intnCmdShow 应用程序开始执行时窗口显示方式 2020年5月31日9时8分 WinMain函数的初始化 初始化包括窗口类的定义 注册 创建窗口实例和显示窗口四部分窗口类定义 在Windows应用程序中 窗口类定义了窗口的形式与功能 窗口类定义通过给

8、窗口类数据结构WNDCLASS赋值完成 该数据结构中包含窗口类的各种属性 注册窗口类 Windows系统本身提供部分预定义的窗口类 程序员也可以自定义窗口类 窗口类必须先注册后使用 窗口类的注册由函数RegisterClass 实现 其形式为 RegisterClass wndclass为窗口类结构RegisterClass函数的返回值为布尔型 注册成功则返回值为真 2020年5月31日9时8分 创建主窗口 创建窗口 创建一个窗口类的实例由函数CreatWindow 实现 该函数原型为 HWNDCreateWindow LPCTSTRlpszClassName 窗口类名LPCTSTRlpszT

9、itle 窗口标题名DWORDdwStyle 创建窗口的样式intx 窗口左上角横坐标inty 窗口左上角纵坐标intnWidth 窗口宽度intnHeight 窗口高度HWNDhwndParent 该窗口的父窗口句柄HMENUhMenu 窗口的主菜单句柄HINSTANCEhInstance 创建窗口的应用程序当前句柄LPVOIDlpParam 指向一个传递给窗口的参数值的指针 2020年5月31日9时8分 常用的主窗口样式 创建一带边框的窗口创建一带标题栏的窗口创建一带水平滚动条的窗口创建一带最大化按钮的窗口创建一最大化的窗口创建一带最小化按钮的窗口创建一最小化的窗口创建一带边框和标题栏的窗

10、口创建一带系统菜单的窗口创建一带垂直滚动条的窗口 WS BORDERWS CAPTIONWS HSCROLLWS MAXIMIZEBOXWS MAXIMIZEWS MINIMIZEBOXWS MINIMIZEWS OVERLAPPEDWS SYSMENUWS VSCROLL 2020年5月31日9时8分 显示窗口 窗口类的显示由ShowWindow 和UpdateWindow 函数实现 应用程序调用ShowWindow 函数在屏幕上显示窗口 调用形式为 ShowWindow hwnd nCmdShow hwnd为窗口句柄 nCmdShow为窗口显示形式标识显示窗口后 应用程序常常调用Updat

11、eWindow 函数更新并绘制用户区 并发出WM PAINT消息 其形式为 UpdateWindow hwnd 2020年5月31日9时8分 窗口显示形式 SW HIDESW SHOWNORMALSW SHOWMINIMIZESW SHOWMAXIMIZESW SHOWNOACTIVESW RESTORE 隐藏窗口显示并激活窗口显示并最小化窗口显示并最大化窗口显示但不激活窗口恢复窗口原来的位置及尺寸 2020年5月31日9时8分 消息循环 MSGMsg while GetMessage 2020年5月31日9时8分 GetMessage函数 GetMassage lpMSG 指向MSG结构的指

12、针hwnd nMsgFilterMin 用于消息过滤的最小消息号值nMsgFilterMax 用于消息过滤的最大消息号值 2020年5月31日9时8分 消息循环过程 通过设置参数nMsgFilterMin和nMsgFilterMax可实现消息的过滤 即仅处理所确定的消息号范围内的消息 如果两个参数都为0 则不过滤消息TranslateMessage函数负责将消息的虚拟键转换为字符消息 TranslateMessage lpMSG DispatchMessage函数将参数LpMSG指向的消息传送到指定窗口函数 其形式为 DispatchMessage lpMSG 当GetMessage函数返回零

13、值 即检索到WM QUIT消息时 程序将结束循环并退出 2020年5月31日9时8分 窗口函数 窗口函数定义了应用程序对接收到的不同消息的响应通常由一个或多个switch语句组成 每个case语句对应一种消息窗口函数是应用程序处理接收到的消息的函数 包含了应用程序对各种可能接到的消息的处理过程 2020年5月31日9时8分 窗口函数的一般形式 LRESULTCALLBACKWndProc HWNDhwnd 窗口句柄UINTmessage 代表所处理消息的消息值WPARAMwParam 消息的附加参数LPARAMlParam 消息的附加参数 switch message Message为标识消息

14、的消息值 case break caseWM DESTROY PostQuitMessage 0 default returnDefWindowProc hwnd message wParam lParam return 0 2020年5月31日9时8分 窗口函数的主体是消息处理语句 该语句由一系列的case语句组成 程序员只需根据窗口可能收到的消息在case语句中编写相应的处理程序段在case语句的消息处理程序段中一般都有对消息WM DESTROY的处理 该消息是关闭窗口时发出的 应用程序调用函数PostQuitMessage响应这条消息 该函数向应用程序发出WM QUIT消息 请求退出 2020年5月31日9时8分 PostQuitMessage函数的原型为 voidPostQuitMessage intnExitCode nExitCode为应用程序退出代码下列语句为未定义处理过程的消息提供默认处理default returnDefWindowProc hwnd message wParam lParam 函数DefWindowProc是系统的默认处理过程 以保证所有发送到该窗口的消息都能得到处理 2020年5月31日9时8分 Windows应用程序编译过程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号