版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Windows编程基础知识,1,学习交流PPT,内容提要,1 Windows编程概述 2 基本概念 3 Windows程序基本结构 4 程序示例,2,学习交流PPT,1.1.Windows编程概述,3,学习交流PPT,1 Windows编程,Windws编程 在微软的Windows操作系统下编程 使用的工具 微软公司和其他公司(Boland等)在该操作系统下提供了了很多可视化的开发系统平台,如VC+、VB 、 BC、Delphi等。 我们使用VC+,4,学习交流PPT,1 Windows编程(续),可视化开发系统 (资源和工具的集成),源程序 编辑器 编译器,调试工具 语法检查 程序修改 运行
2、监视,应用程序 Help和Setup 开发工具,函数库和 系统函数 开发工具,资源管理器 各种窗口和 控件的编辑器,例程库 及Help,其他 功能,5,学习交流PPT,2 Windows程序特点,Windows程序特点 1图形用户界面(窗口)统一、友好 2独立于设备的图形操作(GUI) 3支持多任务机制(多线程) 4事件驱动的程序设计(消息队列机制) 5程序和资源分开、资源共享 6支持应用程序间的数据交换(剪贴板等),6,学习交流PPT,2 Windows程序特点(续),一个简单的Windows程序,#include int CALLBACK WinMain( HINSTANCE hInsta
3、nce, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) / 产生一个问候小窗口 MessageBox ( NULL, “Hello World!”, “Say Hello”, MB_OK ); return 1; ,7,学习交流PPT,3 Windows程序设计方法,传统式写法 使用C语言语法规范的API函数(Application Programming Interface) 交互式写法 使用C+语法规范的MFC类库 (Microsoft Foundation Class) 其他写法 使用模板技术等的ATL模板库 (Activ
4、eX Template Library) 和组件技术等,8,学习交流PPT,1.2.基本概念,9,学习交流PPT,1 Windows程序及对象,Windows应用程序使用的界面是由各种图形元素组成的图形界面 各个图形元素具有不同的功能 应用程序的用户主要是通过键盘和鼠标对应用程序界面上的图形元素进行操作来与Windows应用程序进行交互的,10,学习交流PPT,1 Windows程序及对象(续),在Windows程序(系统)中,存在着许多与DOS应用程序不同的复杂对象 对象和句柄 Windows的程序中,对象是具有规范形态和操作模式的部件,例如窗口、按钮、滚动条等; Windows把为这种复杂
5、对象所定义的标识叫做句柄,应用程序过句柄访问相应的对象信息。 句柄实际上在C/C+中实现为指针(或认为其一个长度为4字节长整数值),11,学习交流PPT,1 Windows程序及对象(续),常用句柄类型 HWND窗口句柄 HINSTANCE当前实例句柄 HCURSOR光标句柄 HFONT字体句柄 HPEN画笔句柄 HBRUSH画刷句柄 HDC设备环境句柄 HICON图标句柄 HMENU菜单句柄 HFILE文件句柄,句柄所标识对象实例 窗口 按钮 图标 滚动条 输出设备 控件 文件 程序进程 如此等等.,12,学习交流PPT,2 数据类型别名,Windows应用程序中的数据量非常大,为了提高应用
6、程序的可读性,Windows给许多基本数据类型定义了别名,例如: typedef void * HANDLE; typedef unsigned long DWORD; typedef int BOOL; typedef unsigned char BYTE; typedef unsigned short WORD;,13,学习交流PPT,2 数据类型别名(续),Windows应用程序还使用了一些结构类型的数据,例如: typedefstructtagPOINT LONG x, y; POINT; / 描述了一个点的位置。,14,学习交流PPT,3 窗口及其功能,窗口Windows程序界面的主
7、要组成 典型窗口及其构成,控制菜单框,标题栏,15,学习交流PPT,3 窗口及其功能(续),窗口功能 1 系统对应用程序管理的基本单位 2 应用程序与用户之间交互的接口环境 3 Window应用程序基本的操作单元 Windows应用程序编程 创建一个或多个窗口 Windows应用程序运行 窗口内部、窗口与窗口之间、窗口与系统之间进行数据处理与交换的过程,16,学习交流PPT,4 消息的概念,消息应用程序与系统及其它应用程序进行信息交换的数据结构 消息的三个组成部分: 消息号:由事先定义好的消息名标识 字参数(wParam) :提供消息的附加信息 长字参数(lParam) :提供消息的附加信息
8、附加信息与具体消息号的值有关,17,学习交流PPT,4 消息的概念(续),消息的结构,typedef struct tagMSG HWND hwnd; /窗口句柄,为null,则检索队的所有消息 UINT message;/消息号,由Windows.h中的宏定义来标识 WPARAM wParam; /消息的附加信息 LPARAM lParam; /消息的附加信息 DWORD time; /指定消息送至队列的时间 POINT pt; /指定消息发送时屏幕光标的位置 MSG;,18,学习交流PPT,4 消息的概念(续),系统能产生很多消息 各种消息分类,分别以不同的前缀表示: WM 窗口消息 BM
9、 按钮控制消息 CB 组合框控制消息 DM 默认下压式按钮控制消息 EM 编辑控制消息 LB 列表框控制消息 SBM 滚动条控制消息,19,学习交流PPT,4 消息的概念(续),常见的Windows消息有,20,学习交流PPT,5 事件及事件驱动,事件系统运行时发生的事情 事件通常以以下三种方式产生: l通过输入设备,如键盘和鼠标; l通过屏幕上可视的对象,如菜单、工具栏按钮、滚动条和对话框上的控件; l来自Windows内部,如当一个后面的窗口显示到前面来时。 事件的结果系统以消息的形式记录 事件的结果即消息,21,学习交流PPT,5 事件及事件驱动(续),Windows程序和系统是事件驱动
10、的,事件驱动也称消息驱动,事件驱动模型如下:,22,学习交流PPT,5 事件及事件驱动(续),操作系统会用特定的机构管理消息 消息队列 作为结果的消息,系统以队列形式进行管理 操作系统(软件程序)有监控机构、管理机构、通讯机构等 应用程序在这些机构的管理下运行,23,学习交流PPT,5 事件及事件驱动(续),支持队列特征的消息驱动模型,24,学习交流PPT,6 API函数,Windows提供了大量预定义的用C语言编写的函数和数据结构集合,该集合叫API(Application Programming Interface) 早期的Windows应用程序设计人员要使用相应的API函数来编写程序。
11、类型别名和MSG等结构都包含在API中,25,学习交流PPT,6 API函数(续),根据Windows API函数的功能,可以将其分为三类: 1)管理函数:实现窗口和其它对象的创建、移动和修改等功能。 2)图形设备函数:实现与设备无关的图形操作功能,可以实现图形绘制。 3)系统服务函数:实现与操作系统有关的多种功能,如进程线程管理、任务调度等。,26,学习交流PPT,1.3.Win32程序基本结构,27,学习交流PPT,1 应用程序的组成,Windows 程序分为“程序代码”和“UI(User Interface)资源”两大部份 所谓 UI 资源是指功能菜单、对话框外貌、程序图标、光标形状等
12、一个完整的Windows应用程序通常包含如下几种类型的文件: C/C+语言源程序文件(.c或.cpp) 头文件(.h) 资源描述文件(.rc) 模块定义文件(.def).,28,学习交流PPT,1 应用程序的组成(续),源程序组成 源程序主要由主函数(入口函数)和窗口函数及其相关函数组成 WinMain和WinProc是Win32源程序主体 前者是应用程序的入口,类似main函数,29,学习交流PPT,2 WinMain函数,三个基本的组成部分: 函数说明 初始化 消息循环 功能 注册窗口类,建立窗口及初始化 进入消息循环,据消息调用相应的处理过程 当消息循环检索到WM_QUIT时终止程序运行
13、,30,学习交流PPT,2 WinMain函数(续),函数(原型)说明,注意!Windows操作系统是多任务管理的,同一应用程序可能同时存在多个窗口,Windows系统对每个窗口的执行称为一个实例,并用一个实例句柄来唯一标识它。,int WINAPI WinMain ( HINSTANCE hThisInst,应用当前实例句柄 HINSTANCe hPrevInst,应用其他实例句柄 LPSTR lpszCmdLine, 指向命令行参数的指针 Int nCmdShow初始窗口显示方式的整数值标识 ),31,学习交流PPT,2 WinMain函数(续),初始化 初始化包括窗口类的定义、注册窗口类
14、、创建窗口和显示窗口四部分。需要注意的是,在显示窗口ShowWindow函数后,需调用UpdateWindow函数更新并绘制用户区,并发出WM_PAINT消息。,32,学习交流PPT,2 WinMain函数(续),消息循环 应用程序通常有一段代码称为消息循环,又称为消息泵,它是程序的动力结构,形式如下,MSG msg; /从消息队列中提取消息 while (GetMessage( /将消息传送到指定窗口函数 / 以上出现的函数都是 Windows API 函数,33,学习交流PPT,2 WinMain函数(续),消息循环中: 函数GetMessage形式为: GetMessage(lpMSG,
15、 /指向MSG结构的指针 hwnd, nMsgFilteMin, /用于消息过滤的最小消息号值 nMsgFilterMax /用于消息过滤的最大消息号值) GetMessage从消息队列中读取消息,并将消息放在MSG结构中,返回零值,即检索到WM_QUIT消息,程序结束循环并退出,34,学习交流PPT,2 WinMain函数(续),DispatchMessage函数 该函数负责将消息分发给窗口函数(可以理解为其用指针间接调用了窗口过程函数) 在窗口产生过程中,要使用函数指针为窗口联系一个函数(通常为WndProc) WndProc窗口函数是程序和用户交互的主要处理部分!,35,学习交流PPT,
16、3 窗口函数WinProc,WndProc函数由一个或多个switch语句组成。每一条case语句对应一种消息,当应用程序接收到一个消息时,相应的case语句被激活并执行相应的响应程序模块。,WndProc,包含了对各种可能接收到的消息的处理过程,定义了应用程序对接收到的不同消息的响应,36,学习交流PPT,窗口函数的一般形式如下: LRESULT CALLBACK WndProc(HWND hwnd,UINT messgae, WPARAM wParam,LPARAM lParam ) switch(message) message为标识的消息 case break; case WM_DES
17、TROY: PostQuitMessage(0); default: return DefWindowProc(hwnd,message,wParam,lParam); return(0); ,在消息处理程序段中一般都有对WM_DESTROY的处理,该消息是关闭窗口时发出的。它向应用程序发出WM_QUIT消息,请求退出处理函数:void PostQuitMessage(int nExitCode) /nExitCode为应用程序的退出代码,为未定义处理过程的消息提供缺省处理,37,学习交流PPT,4 程序与系统之间的关系,操作系统监控机构感知事件并产生消息 系统将消息发给活动窗口消息队列 应用
18、程序拥有一个消息队列 程序处理过程: 消息泵获得消息GetMessage,然后分发消息DispatchMessage给窗口过程WndProc(函数调用过程)作相应处理返回,接下来再获取消息,如此循环重复,直到GetMessage检到WM_QUIT消息返回0值。,38,学习交流PPT,4 程序与系统之间的关系(续),39,学习交流PPT,1.4.完整程序示例,40,学习交流PPT,应用程序举例,#include/包含应用程序中所需的数据类型和数据结构的定义 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); /窗口函数说明 /- 以下初始化窗口类
19、 - int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow) HWND hwnd ; MSG Msg ; WNDCLASS wndclass ; char lpszClassName = 窗口;/窗口类名 char lpszTitle= My_Windows;/窗口标题名,41,学习交流PPT,/窗口类的定义 wndclass.style=0;/窗口类型为缺省类型 wndclass.lpfnWndProc=WndProc;/定义窗口处理函数 wndclass.cbClsExtra=0;/窗口类无扩展 wndclass.cbWndExtra=0;/窗口实例无扩展 wndclass.hInstance=hInstance;/当前实例句柄 wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); /窗口的最小化图标为缺省图标 wndclass.hCursor=LoadCursor(NULL,IDC_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025《鸿门宴》文化内涵课件
- 煤炭开采方法试题及答案
- 山东地生会考试卷及答案
- 1.2宪法的内容和作用 教案 2025-2026学年统编版道德与法治 八年级下册
- 药品零售企业药学服务人员岗前培训试题及答案
- 药物警戒知识试题及答案
- 医疗机构广告法培训试题及答案
- 农业职称竞聘试题及答案
- 医疗器械使用管理规范考核试题及答案
- 187公司例会部门会议模板
- 2026年课件-冀人版二年级下册科学全册新质教学课件(2026年春改版教材)-新版
- 地磅及地磅房施工方案
- 家长学校的组织架构及职责
- 《工业机器人现场编程》课件-任务1.认识工业机器人
- 金蝶云星空应用开发初级认证
- 设备基础预埋件施工方案
- 供电协议合同格式模板
- 退役军人事务员(五级)职业资格考试题及答案
- DB34T∕ 2270-2014 铜阳极泥铜、金、银、硒、铋、铅含量的测定波长色散X射线荧光光谱法
- 初中学业规划-制定清晰学业目标与计划课件
- 医务人员批评与自我批评(通用7篇)
评论
0/150
提交评论