您的位置:首页 > 其它

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

2012-07-17 15:01 399 查看
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宏(WM为Windows
Message缩写)
WPARAM wParam; //随消息的不同附加信息也不同

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

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

POINT pt; //鼠标当前位置

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

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

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

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

8、

创建一个完整的Win32程序,该程序实现创建一个窗口,其中主要步骤为
A.
WinMain函数的定义
B.
创建一个窗口 创建一个完整的窗口的四个步骤SDK,1设计窗口类,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应用程序的消息处理机制



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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: