问题描述
我有一个简单的 Win32 Windows 应用程序,只有一个主窗口。在 window procedure
中,我想调查 WM_SETFOCUS
消息。 doc 说:
失去键盘焦点的窗口句柄。这 参数可以为NULL。
这是我的情况 - 我得到的只是 NULL。这是什么意思,为什么当桌面是以前的顶部活动窗口时,我无法获得例如桌面的句柄?
解决方法
32 位 Windows 引入了异步输入模型。此更改的一个结果是现在每个线程(或附加输入的线程组)记录焦点窗口。
最初,附加到输入队列的线程没有焦点窗口,因此程序第一次看到 WM_SETFOCUS
消息时,其 wParam
是 NULL
。 WM_SETFOCUS
可以将 NULL
作为其参数的原因还有其他一些,但这些在这里并不有趣。
奖励阅读: