Windows程序内部运行机制

简介:

1、消息与队列(在windows中,用户程序可以调用系统的API函数,系统也可以调用用户程序,这是调用时通过消息来进行的。)

(1)消息

MSG结构体定义:

typedef  struct  tagMSG

{

HWND hwnd;              //消息所属窗口

UINT  message;            //消息标识符(WM_XXX宏)

WPARAM  wParam;        //消息附加说明

LPARAM   lParam;        //消息附加说明

DWORD   time;           //消息投递到应用程序队列的时间

POINT     pt;             //鼠标当前位置

}MSG;

(2)消息队列

Windows运行机制:例如按下鼠标左键,产生WM_LBUTTONDOWN消息,系统会将此消息放到窗口所属的应用程序消息队列中,等待应用程序处理(windows会依次将产出的消息放入消息队列)。应用程序通过消息循环不断从队列中取出消息并进行响应。

(3)Windows中包含进队和不进队消息。

2、Winmian函数

Windows 应用程序消息处理过程:

(1)操作系统接收应用程序的窗口消息,将消息投放到应用程序的消息队列中。

(2)应用程序在消息循环中调用GetMessage函数从队列中取出消息,然后进行一些处理。例如TranslateMessage产生新的消息。

(3)应用程序调用DispatchMessage将消息回传给操作系统。

系统利用WNDCLASS结构体中lpfnWndProc成员保存的窗口过程函数指针调用窗口过程函数,对消息进行处理。




本文转自 韬光星夜 51CTO博客,原文链接:http://blog.51cto.com/xfqxj/476984,如需转载请自行联系原作者

相关文章
|
2月前
|
应用服务中间件 Shell PHP
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
windows系统配置nginx环境运行pbootcms访问首页直接404的问题
|
2月前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
968 1
|
3月前
|
Windows Python
python获取windows机子上运行的程序名称
python获取windows机子上运行的程序名称
|
3月前
|
小程序 Windows
MASM32编写的程序在Windows 7,10下运行正常,但在Win XP下运行时只闻其声不见其形的故障
MASM32编写的程序在Windows 7,10下运行正常,但在Win XP下运行时只闻其声不见其形的故障
|
2月前
|
安全 API C#
C# 如何让程序后台进程不被Windows任务管理器强制结束
C# 如何让程序后台进程不被Windows任务管理器强制结束
66 0
|
3月前
|
安全 网络安全 API
基于WMI更新Windows系统信息采集程序sysInfo的一些收获
基于WMI更新Windows系统信息采集程序sysInfo的一些收获
|
4月前
|
芯片 iOS开发 MacOS
Mac上运行windows软件-GPTK
Mac上运行windows软件-GPTK
191 1
|
4月前
|
安全 机器人 程序员
Windows 计划任务每天隔 3 小时运行一次批处理文件详细配置步骤
Windows 计划任务每天隔 3 小时运行一次批处理文件详细配置步骤
461 2
|
4月前
|
JavaScript Windows
electron程序运行在某些 windows 上白屏
electron程序运行在某些 windows 上白屏
|
4月前
|
Linux Windows Python
最新 Windows\Linux 后台运行程序注解
本文介绍了在Windows和Linux系统后台运行程序的方法,包括Linux系统中使用nohup命令和ps命令查看进程,以及Windows系统中通过编写bat文件和使用PowerShell启动隐藏窗口的程序,确保即使退出命令行界面程序也继续在后台运行。

相关课程

更多