Windows程序运行原理及程序编写流程

Windows API Win32 SDK

操作系统提供了各种方便开发Windows应用程序的编程接口,所的函数都在Windows.h头文件中声明。Win32 SDK(Software Development Kit): Windows 32位平台下的软件开发包,包括API函数,帮助文档,微软提供的一些辅助开发工具。

1、窗口:桌面也是窗口,消息框和对话框;

2、句柄:资源(窗口、图标、光标),系统创建资源会为他们分配内存并返回这些资源标识符---句柄

3、Windows是一种事件驱动方式的程序设计模式,主要基于消息

  消息: Windows 中由结构体MSG 来表示,

typedef struct tagMSG{

           HWND hwnd;//消息所属的窗口句柄

UINT    message;//消息本身标识符,由一数值表示,系统对消息定//义为WM_XXX(WMWindows Message缩写)

                       WPARAM      wParam; //随消息的不同附加信息也不同

                       LPARAM       lParam;          //消息的附加参数

                       DWORD time;              //消息投递的时间

                       POINT           pt;                 //鼠标当前位置

}

4、消息队列:操作系统把感知到的事件封装成消息,投到应用程序的消息队列,应用程序从中取出消息并进行响应,每个应用程序都有消息队列

5、窗口过程:是一个回调函数,专门负责处理消息的函数,由操作系统调用

6、消息队列问题:OS根据标识把消息投递到各个应用程序的消息队列中

7、WinMain函数,是windows程序的入口点函数,相当于dos的main函数

8、

      创建一个完整的Win32 程序,该程序实现创建一个窗口,其中主要步骤为

A.       WinMain函数的定义

B.        创建一个窗口      创建一个完整的窗口的四个步骤SDK1设计窗口类,2注册窗口类,3创建窗口,4显示窗口

C.        进行消息循环

D.       编写窗口过程函数

回调函数的实现机制:

(1)      定义一个回调函数

(2)      提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者

(3)      当特定的事件或条件发和的时候,调用使用函数指针调用回调函数对事件进行处理

针对Windows的消息处理机制,窗口过程函数被调用的过程如下:

A.       在设计窗口类的时候,将窗口赛程函数的地址赋值给lpfnWndProc成员变量

B.        调用RegisterClass(&wndclass)注册窗口类,那么系统就有了我们所编写的窗口过程函数的地址

C.        当应用程序接收到某一窗口的消息,调用DispatchMessage(&msg)将消息加值给系统。系统则利用先前注册窗口类时得到函数指针,调用窗口过程函数对消息进行处理。HICON LoadIcon(HINSTANCE hInstance LPCTSTR lpIconName);//加载窗图标,返回系统分配给该图标的句柄, LPCTSTR被定义为CONST CHAR *(指向常量的字符指针),图标的ID是一个常数,要使用MAKEINTRESOUCE宏把资源ID标识转换为需要的LPCTSTR类型

9、windows应用程序的消息处理机制

Windows程序运行原理及程序编写流程_第1张图片

10、C语言指针函数和函数指针的几个例子

     char * const*(*next)();

   void (*signal(int sig,void(*func)(int)))(int);

   char *(* c[10])(int **p);

11.       什么时候用NULL,什么时候用0。答,对指针赋值时用NULL,对变量赋值时用0

12.       什么是野指针?答:将指针指向的变量的内存释放后,此指针即变成野指针!如何避免野指针?答:将此指针指向NULL即可。p=NULL;


你可能感兴趣的:(设计模式,windows,api,null,开发工具,Signal)