Windows程序的入口是哪里?写出Windows消息机制的流程
2013-10-18 14:53
253 查看
Windows程序的入口是WinMain()函数。
Windows应用程序消息处理机制:
A. 操作系统接收应用程序的窗口消息,将消息投递到该应用程序的消息队列中
B. 应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后,应用程序可以对消息进行一些预处理。
C. 应用程序调用DispatchMessage,将消息回传给操作系统。
D. 系统利用WNDCLASS结构体的lpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消息进行处理
注意:消息映射为什么不是虚函数呢?
答:C++有一个名为vtable的虚函数分发表。如果用虚函数发送消息CWnd将为超过100个消息来申明虚函数,对于没个虚函数,vtable中对应有4个字节,那么应用程序将需要400多个字节的表来支持虚拟消息处理函数。所以为了避免大型的vtable,MFC使用宏来把WINDOWS消息连接到C++成员函数。MFC消息处理程序需要函数原型,函数体和在消息映射中的输入项(宏调用),ClassWizard帮助我们将消息处理程序添加到类中。
Windows应用程序消息处理机制:
A. 操作系统接收应用程序的窗口消息,将消息投递到该应用程序的消息队列中
B. 应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后,应用程序可以对消息进行一些预处理。
C. 应用程序调用DispatchMessage,将消息回传给操作系统。
D. 系统利用WNDCLASS结构体的lpfnWndProc成员保存的窗口过程函数的指针调用窗口过程,对消息进行处理
注意:消息映射为什么不是虚函数呢?
答:C++有一个名为vtable的虚函数分发表。如果用虚函数发送消息CWnd将为超过100个消息来申明虚函数,对于没个虚函数,vtable中对应有4个字节,那么应用程序将需要400多个字节的表来支持虚拟消息处理函数。所以为了避免大型的vtable,MFC使用宏来把WINDOWS消息连接到C++成员函数。MFC消息处理程序需要函数原型,函数体和在消息映射中的输入项(宏调用),ClassWizard帮助我们将消息处理程序添加到类中。
相关文章推荐
- Windows程序的入口是哪里?写出Windows消息机制的流程
- Windows程序的入口是哪里?写出Windows消息机制的流程
- windows消息机制
- Windows消息响应机制之四:PostQuitMessage和GetMessage函数
- ASP_NET_MVC3_请求处理流程(1) MVC请求入口
- Android 6.0权限机制及开发流程详解
- Android View的绘制机制流程深入详解(三)
- MFC的入口点和 执行流程
- OAuth的机制原理讲解及开发流程
- OAuth的机制原理讲解及开发流程
- php 找回密码机制流程
- Android ION机制_HAL与vendor层共享内存_流程简介(1)
- Android Activity启动机制流程和四种启动模式
- ASP.NET页面运行机制以及请求处理流程
- windows消息机制
- OAuth的机制原理讲解及开发流程
- 【Linux高级驱动】平台设备驱动机制的编程流程与编译进内核
- PHP找回密码机制流程
- Job的输入切片机制及源码流程
- Android事件分发机制流程详解(二)