




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 3 章 开发Windows应用程序的技术基础,本章主要目的是向读者介绍编写Windows应用程序所采用的基本技术, 约定和惯例,API的结构与基本用法等作了介绍,对Windows应用程序的各个组成部分也作了初步介绍,并用框图的形式介绍Windows应用程序的工作原理。,3.1 应用程序的结构与编译,解决多任务的关键是: 控制核心应该从程序本身转移到Windows操作系统。 应该由Windows操作系统决定那个应用程序可以占用CPU时间,程序的结构也不再是过程式程序中的赋值、循环、分支等C语言中常见的结构,而是消息,处理。 为了解决这个问题,应用程序采用一种称为”事件驱动结构”是合适的。 所
2、谓非抢占式是指一旦这个应用程序取得了执行权,就一直要把这个程序执行下去,除非遇到新的消息来干预。否则,其他程序没有办法执行。 如果把非抢占式和”事件驱动结构相结合,那就是Win16操作系统下的应用程序。,3.1.1 Windows应用程序的结构和C语言程序结构的比较,C语言程序的主体结构是 int main() 定义函数1 定义函数2 定义函数n,3.1.1 Windows应用程序的结构和C语言程序结构的比较,而Windows应用程序的结构可以用下面的框图来表示。 图3-1 Windows应用程序的结构有两个函数所组成, 一个是WinMain函数, 另一个称为窗口函数,又称窗口消息处理程序。,
3、WinMain,Windows Function,3.1.2 Windows应用程序的编译和C语言程序编译的比较,1、C语言的编译图示,yy1.h,yy2.h,yyn.h,ok1.c,ok2.c,okn.c,Yes.obj,Yes.exe,math.lib,graphics.lib,2、Windows应用程序的编译,C语言的编译图示,Windows程序的C代码文件,Winddows程序的资源,对话框编程器,图像编程器,字体编程器,资源编译器,C编译器,链接器,3.1.3 编译应用程序所需的六个基本文件,源代码文件,文件的后缀是.C或.CPP; 资源文件 位图(.bmp) 图标(.ico) 菜单
4、等资源(.res) 对话框(dlg) 字体(fnt) 也资源描述文件(.rc) 资源编译器会对RC文件提供的资源信息进行生成和编译,并把它们插入到exe文件,形成真正的可执行文件。,3.1.3 编译应用程序所需的六个基本文件,头文件(.h) WINDOWS.H头文件 WINDEF.H头文件,包含有大量简单和集合数据的定义,这些数据在Win32编程中经常要用到 WinNT.h 项目文件(.MAKE) 模块文件(.DEF),3.1.3 Windows程序中基本数据类型,3.2 Windows 应用程序设计接口(API),两种API Win16 API Win32 API 三个核心API组件,3.3
5、 标识符的匈牙利命名惯例,为什么此惯例称为匈牙利命名惯例。 匈牙利命名惯例的两条约定。 标识符以一个事者几个小写字母开始,这些小写字母表示标识符的数据类型 大小写混杂写,使得标识符具有一定的含义,便于理解,增强可读性。,#include int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) MessageBox ( NULL, TEXT(Hello, Windows XP!), TEXT (HelloMsg), 0); return 0; ,3.3 标识符的
6、匈牙利命名惯例,3.4 事件驱动程序设计,什么是事件驱动程序设计,它与传统程序设计有什么区别。 事件驱动程序: Windows应用程序是消息驱动程序,又称事件驱动程序 事件驱动意味着操作系统的每一部分之间,以及操作系统与应用程序之间都是通过“消息”进行通信联系的。 计算机中的一个事件通过驱动程序变成一个消息 鼠标事件产生鼠标消息 键盘事件产生键盘,3.4 事件驱动程序设计,int WinMain(hInst, hPrev, .) MSG msg; RegisterClass(.); / 向Windows系统注册窗口类 CreateWindow(.); / 创建应用程序的窗口 ShowWindo
7、w(.); / 显示刚才创建的窗口 / 进入消息循环 while(GetMessage( ,int WindowsFunction() . ,3.4 事件驱动程序设计,事件驱动程序的工作原理,开始,填写窗口类的条款 向Win注册窗口类,创建应用程序窗口,从程序的消息队列中获取一个消息,是WM_QUIT消息吗?,结束,窗口函数处理该消息,非,是,消息循环 while (GetMessage ( ,int WindowsFunction() . ,3.4 事件驱动程序设计,消息与消息处理是实现事件驱动的关键。,3.7 Windows应用程序的工作原理,Windows程序对输入消息的获得与处理 Wi
8、ndows操作系统负责收集输入消息并把它存入系统消息队列(system queue) 然后由操作系统再分送给应用程序消息队列(application queue),以供应用程序的消息循环来读取,System Queue,Application Queue,int WinMain() while (GetMessage ( . ,int WindowsFunction() . ,Windows System,3.7 Windows应用程序的工作原理,窗口消息传送给窗口函数的途径: Windows首先把消息从系统队列送到Application Queue,再由应用程序的消息循环去提取,并委托操作系
9、统把消息送给窗口函数:PostMessage()函数 Windows直接把消息送给窗口函数:SendMessage()函数。,3.7 Windows应用程序的工作原理,当使用者准备关闭某窗口时 Windows会送WM_DESTORY消息给这个窗口的窗口函数 窗口函数分辨出WM_DESTORY消息后,就会将屏幕上的窗口删除,然后用post方式将WM_QUIT消息送给Application Queue。 应用程序的消息循环收到WM_QUIT消息,从而消息循环结束 WinMain()函数结束,于是该Windows程序结束,3.7 Windows应用程序的工作原理,当使用者准备关闭某窗口时,WM_DE
10、STORY,WM_QUIT,应用程序消息队列,窗口函数(消息处理函数) int WndProc() ,int WinMain() while (GetMessage ( . ,Windows 操作系统,Windows应用程序,send,3.8 窗口类的作用及其用法初步,窗口 每个Windows应用程序(或进程)都要有一个窗口,每个窗口代表一个应用程序。 窗口类 一个应用程序在创建某个类型的窗口前,必须首先注册该“窗口类”(Windows Class)。,3.8 窗口类的作用及其用法初步,typedef struct tagWNDCLASSA / ASCII版本 UINT style; / 窗口
11、类的风格 WNDPROC lpfnWndProc; / 窗口函数(过程) int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; /该窗口类的窗口过程所属的应用实例 HICON hIcon; / 该窗口类所用的图标 HCURSOR hCursor; / 该窗口类所用的光标 HBRUSH hbrBackground; / 该窗口类所用的背景刷 LPCSTR lpszMenuName; / 该窗口类所用的菜单资源 LPCSTR lpszClassName; / 该窗口类的名称 WNDCLASSA;,3.8 窗口类的作用及其用法初步,struct t
12、agWNDCLASSW/ Unicode版 UINT style; / 窗口类的风格WNDPROC lpfnWndProc; / 窗口函数(过程) int cbClsExtra; int cbWndExtra; HANDLE hInstance; /该窗口类的窗口过程所属的应用实例HICON hIcon; / 该窗口类所用的图标HCURSOR hCursor; / 该窗口类所用的光标HBRUSH hbrBackground; / 该窗口类所用的背景刷LPCWSTR lpszMenuName; / 该窗口类所用的菜单资源LPCWSTR lpszClassName; / 该窗口类的名称 ;,3.8
13、 窗口类的作用及其用法初步,ASCII版本 WNDCLASSA wndclass; Unicode版 WNDCLASSW wndclass; 综合版 / #define UNICODE / #define _UNICODE WNDCLASS wndclass;,练习 3,16位和 32位Windows 操作系统对应用程序的支持有什么不同? Windows应用程序的编译和C语言程序编译有什么不同? 资源描述文件的作用是什么?资源编译器的功能是什么? 资源文件与资源描述文件(.RC)的区别? 模块定义文件(.DEF)在编译中的作用? WINDOWS.H头文件的作用?WINDEF.H中定义了那些东西?WINNT.H头文件的作用? 项目文件的作用? 简述程序设计接口(API)的组成情况 讲讲匈牙利命
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年细胞转瓶项目投资价值分析报告
- 《数据库原理及应用教程-MySQL8.0》课件 第10章 事务与并发控制
- 2025至2030年笔式水平尺项目投资价值分析报告
- 职业健康管理知识宣讲
- 变电运维安全管理
- 2025至2030年电动单架悬挂式起重机项目投资价值分析报告
- 高考文科数学基础知识点
- EBZ160悬臂式掘进机运转设备详情
- 2025至2030年混合固体脂肪酸项目投资价值分析报告
- 2025至2030年浙江省动漫产业发展预测及投资策略分析报告
- 2024年地理中考模拟考试地理(江苏泰州卷)(A4考试版)
- 乳腺癌诊治指南与规范(2025年版)解读
- 2024年上海嘉定区区属国有企业招聘真题
- 2025河北建投水务招聘29人易考易错模拟试题(共500题)试卷后附参考答案
- 常德辅警考试题库
- 基于核心素养的初中历史跨学科教学策略研究
- 有理数的加法说课课件2024-2025学年人教版数学七年级上册
- GB/T 18655-2025车辆、船和内燃机无线电骚扰特性用于保护车载接收机的限值和测量方法
- 2025年江苏南通苏北七市高三二模语文作文分析
- 2025年上半年宣城市广德县人民法院招考书记员兼任法警易考易错模拟试题(共500题)试卷后附参考答案
- 2025届云南省曲靖一中高三下学期第三次四校联考历史试题试卷含解析
评论
0/150
提交评论