VC++之Windows程序运行原理小计
来源:互联网 发布:渡边 知乎 编辑:程序博客网 时间:2024/06/07 21:22
Windows程序运行原理
概述
入口函数----窗口-----消息循环----回调函数
1.程序入口函数WinMain
int WINAPI WinMain(
HINSTANCE hInstance;
HINSTANCE hPrevInstance;
LPSTR lpCmdLine; //run command
int nCmdShow; //show state
);
WinMain函数由操作系统调用,里面的所有参数都由操作系统赋值.
操作系统启动应用程序时,给它分配一个实例号,放到hInstance中,如果有参数,则放到lpCmdLine中,以及应用程序的状态等都由操作系统调用WinMain来实现.
2.窗口
1)设计一个窗口类;
2)注册一个窗口;
3)创建窗口;
4)显示及更新窗口;
1)WNDCLASS wndclass;
2)RegisterClass(CONST WNDCLASS *lpWndClass);
3)HWND CreateWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName,
DWORD dwStyle,
int x,
int y,
int nWidth,
int nHeight,
HWND hWndParent,
HMENU hMenu,
HINSTANCE hInstance,
LPVOID lpParam);
4)BOOL ShowWindow(HWND hWnd, int nCmdShow);
UpdateWindow(HWND hwnd);
typedef struct{
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra; //窗口类的额外数据
int cbWndExtra; //窗口的额外数据
HINSTANCE hInstance; //the instance of current application
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
}WNDCLASS,*PWNDCLASS;
--lpfnWndProc 过程函数(回调函数)
处理事件的代码;
由操作系统调用;
放置由用户编写的代码;
3.过程函数(回调函数)
LRESULT CALLBACK WindowProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
操作系统针对特定事件根据什么来调用相应过程函数进行处理?
调用的是接受消息的窗口所属类型中lpfnWndProc成员指定的函数.每一种窗口都有自己专属的回调函数.
--hInstance 当前应用程序实例号
由WinMain函数中的hInstance形参赋值
4.消息
操作系统将每一个事件包装成消息的结构体MSG传递给应用程序
MSG定义:
typedef struct tagMSG{
HWND hwnd; //handle to window --1
UINT message; // --2
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
}
--1 句柄
资源的标识
图标,光标,窗口,实例
--2 宏
用来代替数值,WM开头
5.消息循环
应用程序通过GetMessage函数来调用操作系统放到消息队列中的消息.
BOOL GetMessage(
LPMSG lpMsg,
HWND hWnd,
UINT wMsgFilterMin,
UINT wMsgFilterMax
);
TranslateMessage()对取到的WM_KEYDOWN,WM_KEYUP消息进行转换,转换为一个WM_CHAR消息
放到消息队列中。
DispatchMessage()将收到的消息传到操作系统,然后操作系统将MSG结构体中前四个参数传
递给回调节函数,并调用这个回调函数中进行处理。
- VC++之Windows程序运行原理小计
- VC++之Windows程序运行原理
- 读书札记:VC++学习之Windows程序运行原理
- VC点滴 之 WinMain(windows程序的运行原理以及VC++的实现过程)
- 孙鑫VC视频教程笔记之第一课“Windows程序的内部运行原理”
- 孙鑫VC视频学习笔记之windows程序内部运行原理
- Lesson1 Windows程序内部运行原理 ---孙鑫VC++教程
- 孙鑫VC讲座笔记--WINDOWS程序内部运行原理
- VC++学习笔记——Windows程序内部运行原理
- Lesson1 Windows程序内部运行原理 ---孙鑫VC++教程
- VC++深入详解学习笔记-windows程序运行原理
- windows程序的运行原理以及VC 的实现过程
- VC++学习(1):Windows程序内部运行原理
- Windows程序运行原理
- windows程序运行原理
- Windows程序运行原理
- windows程序运行原理
- Windows程序运行原理
- 第三批低俗网站曝光 校内网相关栏目被指低俗
- Linux 详解
- Java学习系列之一
- 结构体内存分配问题(转)
- js动态添加事件的方法
- VC++之Windows程序运行原理小计
- 大家看看!
- 如何解决MTK平台手机重启问题
- IE和Firefox(火狐)在JavaScript方面的不兼容及统一
- 2009-1-14 GMAT 2
- RPC Services vs. Messaging Service
- GPS NEMA 0183协议
- SqlServer2000加载.mdb数据
- Bank Setup Frequently Asked Questions