C++的Windows编程基础.ppt

上传人:marr****208 文档编号:149515551 上传时间:2020-10-28 格式:PPT 页数:106 大小:535.50KB
返回 下载 相关 举报
C++的Windows编程基础.ppt_第1页
第1页 / 共106页
C++的Windows编程基础.ppt_第2页
第2页 / 共106页
C++的Windows编程基础.ppt_第3页
第3页 / 共106页
C++的Windows编程基础.ppt_第4页
第4页 / 共106页
C++的Windows编程基础.ppt_第5页
第5页 / 共106页
点击查看更多>>
资源描述

《C++的Windows编程基础.ppt》由会员分享,可在线阅读,更多相关《C++的Windows编程基础.ppt(106页珍藏版)》请在金锄头文库上搜索。

1、Windows编程基础,基本概念 Windows程序运行机制 VC6.0下三种编程方式 命名规则匈牙利命名法(自学) Windows程序结构 简单的Windows编程(API) MFC编程基础,窗口和程序,窗口是Windows本身以及Windows 环境下的应用程序的基本界面单位。 很多人都误以为只有具有标题栏、状态栏、最大化、最小化按钮这样标准的方框才叫窗口。 其实窗口的概念很广,例如按钮和对话框等也是窗口,只不过是一种特殊的窗口。,窗口,窗口 (Window) 由句柄唯一标识。 Windows程序的基本操作单元。 系统管理应用程序的基本单位。 应用程序与用户交互的接口环境。 应用程序的运行

2、就是窗口内部、窗口之间、窗口与系统之间数据处理与交换的过程。 一个Windows程序至少有一个窗口。,窗口的组成,应用程序的主窗口,窗口,窗口,窗口,窗口,窗口,窗口的组成,窗口是屏幕上的一个矩形区域 应用程序在该区域中显示数据并等待鼠标点击 Windows应用系统的用户界面可以包含许多窗口 每个窗口都有不同的特点,但都是互相联系的,三种类型的窗口,在这么多窗口中,基本类型只有三种: 重叠( Overlapped ) 窗口 弹出( Popup ) 窗口 子( Child ) 窗口 在它们之间并没有太多内在的差异,但是使用不同的窗口风格,它们的外观是不同的,三种类型的窗口,重叠窗口通常用于建立应

3、用程序主窗口。事实上,有时也叫做“主”窗口或者“框架”窗口 弹出窗口通常以对话框和消息框的形式与用户对话 子窗口通常用在视图( View )中,如在文本编辑器中的文本显示,也用在控件中,如在对话框中的OK按钮 而对那些看起来像按钮或控件的子窗口,也称为“控件”窗口,三种窗口组成的应用程序,属于桌面的重叠窗口,也称主窗口,主窗口的子窗口,主窗口的子窗口,主窗口的弹出窗口,弹出窗口的子窗口,三种类型的窗口,主要区别 重叠窗口和弹出窗口 弹出窗口出现时可以没有标题(也称为标题栏) 子窗口与重叠窗口、弹出窗口 子窗口只能出现在另一个窗口中,并且子窗口的任何多余部分都被该窗口移去或剪切掉 另外,子窗口是

4、唯一不能有菜单条的窗口,程序,通常说的程序都是指一个能让计算机识别的文件。 接触得最多的是以exe或者com作为扩展名的文件。,进程与线程,进程就是应用程序的执行实例(或称一个执行程序),进程是程序动态的描述。 一个以exe作为扩展名的文件,在没有被执行的时候称之为应用程序,当用鼠标双击执行以后,就被操作系统作为一个进程执行了。 当关机或者在任务栏的图标上单击鼠标右键选“退出”时,进程便消亡,彻底结束了生命。 进程经历了由“创建”到“消亡”的生命期,而程序自始至终存在于你的硬盘上,不管计算机是否启动。,Windows任务管理器进程,线程,线程是进程的一个执行单元。 同一个进程中的各个线程对应于

5、一组CPU指令、一组CPU寄存器以及一个堆栈。 进程本来就具有动态的含义,是通过线程来体现的。,Windows应用程序,操作系统,计算机硬件之间的相互关系,向下的箭头1表示操作系统能够操纵输出设备,以执行特定的功能,如让声卡发出声音,让显卡画出图形。向上的箭头2表示操作系统能够感知输入设备状态的变化,如鼠标移动,键盘按下,并且能够知道鼠标移动的具体位置,键盘按下的哪个字符。这就是操作系统和计算机硬件之间的交互关系,应用程序开发者通常不需知道其具体实现细节。,API与SDK,API是英文Application Programming Interface 的缩写,意思是“应用程序接口”,泛指系统为

6、应用程序提供的一系列函数接口 在编程时可以直接调用,而不必知道其内部实现的过程,只知道它的原型和返回值就可以了 SDK是英文Software Development Kit的缩写,意思是“软件开发工具包” 微软提供了许多专门的SDK开发包,比如DirectX开发包和语音识别开发包等,关于API,向下的箭头表示应用程序可以通知操作系统执行某个具体的动作。 如操作系统能够控制声卡发出声音,但它并不知道应该何时发出何种声音,需要应用程序告诉操作系统该发出什么样的声音。,关于API,应用程序是如何通知操作系统执行某个功能的呢? 在应用程序中要完成某个功能,都是以函数调用的形式实现的,同样,应用程序也是

7、以函数调用的方式来通知操作系统执行相应的功能的。操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应,也就是说,操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口Windows API。如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。,事件及消息,事件(Event)是对计算机操作的动作。每个事件对应一个消息,即每个事件发生的效果是产生消息。 消息(Message)是描述事件发生的信息。 比如:按键事

8、件按下键的消息、字符消息和键弹起的消息 程序执行的顺序取决于事件发生的顺序,但是消息的产生并不要求有次序之分。,消息(Message),向上的箭头表示操作系统能够将输入设备的变化上传给应用程序。 如用户在某个程序活动时按了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的是哪一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。好比有个蚊子叮了我们一口,我们的神经末梢(相当于操作系统)马上感知到这一事件,并传递给了我们的大脑(相当于应用程序),我们的大脑最终决定如何对这一事件作出反应,如将蚊子赶走,或是将蚊子拍死。对事

9、件作出反应的过程就是消息响应。,消息(Message),消息是应用程序和计算机交互的途径,在计算机上几乎做每一个动作都会产生一个消息。 鼠标被移动会产生WM_MOUSEMOVE消息; 鼠标左键被按下会产生WM_LBUTTONDOWN的消息; 鼠标右键按下便产生WM_RBUTTONDOWN消息等。,消息的功能,功能 帮助Windows实现多任务。 通知应用程序某一事件已经发生,各应用程序给予响应。,消息的组成,操作系统是怎样将感知到的事件传递给应用程序呢?这是通过消息机制(Message)来实现的。 操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序,参看MSDN。 消息的组成

10、: 消息号字参数长字参数 消息号事先定义好。 字参数(wParam)长字参数(lParam)提供附加信息,含义和具体消息号相关。,典型的消息结构,typedef struct tagMSG HWND hwnd; / 接收窗口 UINT message; / 消息标识 WPARAM wParam; / 附加信息 LPARAM lParam; / 附加信息 DWORD time; / 发送时间 POINT pt; / 鼠标位置 MSG , *PMSG; /vcincludewtypes.h,句柄 (HANDLE),句柄(HANDLE):资源的标识。 操作系统要管理和操作这些资源,都是通过句柄来找到

11、对应的资源。 按资源的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。,句柄,句柄是一个指针 通过句柄就可以控制该句柄指向的对象 编写程序总是要和各种句柄打交道的 句柄(handle)是一个4字节长的整数值 是系统用于表示应用程序中不同的对象和同类对象中不同的实例。 如一个窗口、按钮、图标、菜单等 这些东西在系统中被视为不同类型的对象,用不同的句柄将他们区分开来。,常用的句柄,从变量的类型区分变量的用途,int x,y; x=30; y

12、=30; /x和y既可以用来表示坐标点,也可以用来表示宽度和高度,还可以用来表示身高和体重。 typedef int WIDTH typedef int HEIGHT WIDTH x; HEIGHT y; /好处:我们从变量的类型上就可以知道x和y是用来表示宽度和高度。,消息驱动机制,DOS程序是通过调用系统的函数来获得用户输入。 Windows程序则是通过操作系统发送的消息来处理用户输入 在Windows操作系统环境内 系统产生的动作 用户运行应用程序产生的动作,事件产生的消息,消息驱动机制,Windows程序 接收消息 分发消息 处理消息,与用户进行交互,消息的分类,窗口管理消息、初始化消

13、息、输入消息、系统消息等。 VC定义不同的前缀用于消息宏定义识别消息类型。 BM 按钮消息 CB组合框消息 DM下压按钮控制消息 EM编辑框消息 LB列表框消息 WM窗口消息,不同消息类型的取值范围,Windows应用程序常用消息,WM_LBUTTONDOWN WM_KEYDOWN WM_CREAT WM_CLOSE WM_DISTORY WM_QUIT WM_PAINT WM_CHAR WM_COMMAND,Windows应用程序常用消息,窗口管理消息 初始化消息 输入消息 系统消息 剪贴板消息 控制处理消息,控制通知消息 滚动条通知消息 非用户区消息 MDI消息 DDE消息 应用程序自定义

14、的消息,消息的传递,Windows系统有一个存放消息的队列。 每个应用程序也有一个消息队列。 Windows系统先将收到的消息存放在系统队列中。 然后再分发到相应的应用程序队列中。 应用程序则从自身的队列中获取消息并进行处理。,消息的传递,事件,事件,事件,系统消息队列,应用程序队列,应用程序队列,应用程序队列,应用程序,应用程序,应用程序,一个应用程序队列,Windows,Input Message,System Queue,Application Queue,WinMain (),Message Loop,Windows Function,两个应用程序队列,Windows,Input Me

15、ssage,System Queue,Application Queue,Application Queue,WinMain (),Mesaage Loop,Windows Function,WinMain (),Mesaage Loop,Windows Function,结束一个应用程序,WM_DESTROY,Windows,WM_QUIT,Application Queue,Windows Function,Application,WinMain(),Message Loop,创建消息循环,Windows程序至少包含两个函数: WinMain ( ) : 必有且仅有一个 窗口函数 : 每个

16、窗口对应一个窗口函数,以响应该窗口的消息 通常每个Windows 应用程序至少对应一个窗口,每个窗口都要有一个窗口函数负责处理该窗口内所发生的事件,创建消息循环,While (GetMessage( / 将消息发送给窗口过程, 例程中指WndProc 何时退出 ? / 当从应用程序消息队列中检取的消息是 / WM_QUIT时,则退出循环,投递和发送消息,PostMessage和SendMessage PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行 这是个异步消息投放函数,会造成消息的滞后性 SendMessage必须等待其他程序处理消息完了之后才返回,继续执行 这是个同步消息投放函数,不会造成消息的滞后性 但如果消息处理失败,则会造成程序停止 PostMessage的返回值表示PostMessage函数执行是否正确 SendMessage的返回

展开阅读全文
相关资源
相关搜索

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

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