Window Message
窗口消息
GUI应用程序必须响应来自用户和操作系统的事件。
来自用户的事件包括用户与程序交互的所有方式:鼠标点击、按键、触摸屏手势等等。
来自操作系统的事件包括程序之外的任何可能影响程序行为的东西。例如,用户可能插入一个新的硬件设备,或者Windows可能进入低功耗状态(睡眠或休眠)。
这些事件可以在程序运行时的任何时间发生,几乎可以按任何顺序发生。如何构造一个不能预先预测执行流(flow)的程序?
为了解决这个问题,Windows使用了消息传递模型。操作系统通过传递消息与应用程序窗口进行通信。消息只是指定特定事件的数字代码。例如,如果用户按下鼠标左键,窗口将接收到具有以下消息代码的消息。
C++
#define WM_LBUTTONDOWN 0x0201
一些消息具有与它们相关联的数据。例如,WM_LBUTTONDOWN消息包含鼠标光标的x坐标和y坐标。
要将消息传递给窗口,操作系统将调用为该窗口注册的窗口过程。(现在你知道窗口程序的作用了。)
https://learn.microsoft.com/zh-cn/windows/win32/learnwin32/your-first-windows-program
窗口句柄
窗口句柄是消息传递的源和目的,在每一个进程空间窗口句柄都是局部的,需要通过窗口名字去发现,对于某个窗口消息队列的监测,可以通过visual studio自带的spy++去定位监听并且调试。