- 5
- 0
- 约5.43千字
- 约 34页
- 2017-05-05 发布于湖北
- 举报
Windows程序的内部运行原理
Windows程序的
内部运行原理;Windows程序设计是完全不同于Dos环境下的程序设计,是一种事件驱动的程序设计方法。主要是基于消息的。当用户需要完成某种功能时,会调用OS的某种支持,OS将用户的需要包装成某种消息,并投递到消息队列当中。然后利用应用程序从消息队列中取走消息并进行响应。;操作系统;在应用程序中要完成某个功能,都是以函数调用的形式实现的,同样,应用程序也是以函数调用的方式来通知操作系统执行相应的功能的。操作系统所能完成的每一个特殊功能通常都有一个函数与其对应。也就是说,操作系统把它能完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用。这些函数的集合就是windows操作系统提供给应用程序的编程接口,即API。如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。 ;比如用户在某个程序活动时按下一个键,操作系统马上能够感知到这一事件,并且能知道用户按下的是哪个键,操作系统并不决定对这个事件如何做出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件做出反应。
好比有只蚊子叮了我们一口,我们的神经末梢(相当于操作系统)马上感知到这一事件,并传递给我们的大脑(相当于应用程序)。我们的大脑最终决定如何对这一事件做出反应,如将蚊子赶走,或是将蚊子拍死。对事件做出反应的过程就是消息响应。;操作系统是怎样将感知到的事件传递给应用程序的呢?
这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序。
typedef struct tagMSG
{
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG; ;窗口是屏幕上的一个矩形区域,应用程序在该区域中显示数据并等待鼠标点击。
Windows应用程序的用户界面可以包含许多窗口,当然要对这些窗口进行标识。;操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。按资源的类型,又可将句柄细分成
图标句柄(HICON)、光标句柄(HCURSOR),
窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等各种类型的句柄。
操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。句柄就是资源的标识,就象指针一样,我们要索引这样一个资源,就需要通过句柄去索引它。;int x,y;
x=30,y=40;
//x和y既可以用来表示坐标点,也可以用来表示宽度和高度,还可以用来表示身高和体重。
typedef int WIDTH;
typedef int HEIGHT;
WIDTH x;
HEIGHT y;
//好处:我们从变量的类型就可以知道x和y是用来表示宽度和高度。;操作系统会为每个应用程序建立一个消息队列。这个队列是个先进先出的缓冲区。消息队列中的每个元素都是一条消息。操作系统将生成的消息放在消息队列里。第一条消息放入第一格,第二条消息放入第二格,依次类推。应用程序总是取走消息队列中的第一条消息。第一条消息取走后,第二条消息往前移,成为第一条,剩余的消息依次前移。应用程序取得消息后,便能知道用户的操作以及应用程序的状态的变化。
当收到消息的时候,会编写针对这个消息的处理代码,这个过程就叫消息响应。消息响应是通过程序实现的,这就是Windows应用程序的主要代码区。;消息队列;在消息响应过程中,我们可能要调用操作系统提供的其他API函数以便完成特定的功能。例如收到窗口关闭的消息,我们就可以调用一个销毁窗口的API函数DestroyWindows去关闭该窗口,或者弹出一个消息框提示用户是否真的要关闭该窗口。;Windows程序的入口函数
int APIENTRY _tWinMain (
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);;(1)设计一个窗口类
(2)注册窗口类
(3)创建窗口
(4)显示及更新窗口;设计窗口类;在我们的程序中经常要用到一类变量,这个变量里的每一位(bit)都对应某一特性。当该变量的某位为1时,表示有该位对应的哪种特性,当该位为0时,即没有该位所对应的特性。当变量中的某几位同时为1时,就表示同时具有几种特性的组合。一
原创力文档

文档评论(0)