windows 程序内部运行原理

Windows 应用程序,os,hardware之间的相互关系:

image

关于API

os把它能够完成的功能以函数的形式提供给app使用,app对这些函数的调用叫做系统调用,这些函数的集合就是windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API。“app在③的过程中,就是通过API调用os的函数”

关于消息列队和消息

向上的箭头④表示操作系统能够将输入设备的变化上传给应用程序。

如用户在某个程序活动时按了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的是哪一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。好比有个蚊子叮了我们一口,我们的神经末梢(相当于操作系统)马上感知到这一事件,并传递给了我们的大脑(相当于应用程序),我们的大脑最终决定如何对这一事件作出反应,如将蚊子赶走,或是将蚊子拍死。

对事件作出反应的过程就是消息响应。

操作系统是怎样将感知到的事件传递给应用程序的呢?这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序:

typedef struct tagMSG{

   HWND  hwnd; 

   UINT     message;

   WPARAM   wParam;

   LPARAM     lParam;

   DWORD     time;

   POINT   pt;

}MSG, *PMSG, *LPMSG;

句柄(资源的标识)

操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。按资源的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。

创建一个完整的窗口需要经过下面四个操作步骤:

1.设计一个窗口类;

2.注册窗口类;

3.创建窗口;

4.显示及更新窗口。

设计窗口类

typedef struct _WNDCLASS {

UINT style;

WNDPROC lpfnWndProc;

int cbClsExtra;

int cbWndExtra;

HANDLE hInstance;

HICON hIcon;

HCURSOR hCursor;

HBRUSH hbrBackground;

LPCTSTR lpszMenuName;

LPCTSTR lpszClassName;

} WNDCLASS;

posted @ 2011-02-15 16:53  云端小飞象cg  阅读(284)  评论(0编辑  收藏  举报