Windows GetMessage需要GUI吗
许多年前,我了解到为了使用GetMessage,您需要某种形式的GUI。 没有它,windows不会创建消息队列 我被教错了吗 编辑: MSDN说:因为系统将消息定向到应用程序中的各个窗口,所以线程必须在启动其消息循环之前至少创建一个窗口 我似乎被教得很好,还是还有更多?对参数的调用和要求HWND。如果没有窗口,就不会有HWND,无论是否有消息队列,都无法接收消息 编辑:我收回它。允许您为HWND传递NULL参数,并将在没有HWND的情况下向队列发布消息。PostMessage还允许HWND参数为NULLWindows GetMessage需要GUI吗,windows,winapi,user-interface,Windows,Winapi,User Interface,许多年前,我了解到为了使用GetMessage,您需要某种形式的GUI。 没有它,windows不会创建消息队列 我被教错了吗 编辑: MSDN说:因为系统将消息定向到应用程序中的各个窗口,所以线程必须在启动其消息循环之前至少创建一个窗口 我似乎被教得很好,还是还有更多?对参数的调用和要求HWND。如果没有窗口,就不会有HWND,无论是否有消息队列,都无法接收消息 编辑:我收回它。允许您为HWND传递NULL参数,并将在没有HWND的情况下向队列发布消息。PostMessage还允许HWND参数
我每天都学到新东西 这里有些东西你搞混了 首先,您可以使用
GetMessage
,而无需在线程中创建实时窗口
默认情况下,操作系统不会为新创建的线程创建消息队列。因此-对新创建的线程的调用(如PostThreadMessage
)可能会失败
要强制创建消息队列,您需要从该线程调用任何本应在该线程队列上操作的函数
简单地说,只需在该线程中调用PeekMessage
更多信息请点击此处:
(见备注)不完全正确。有一些没有窗口的消息(COM可以做到这一点)。我认为MSDN声明是一个建议,而不是一个要求。如果没有窗口,Windows本身不会向您发送任何消息,但是您自己的程序可以向自己发送消息,例如从另一个线程发送消息。我也很想知道诸如SetTimer之类的调用是否允许空HWND参数。