首先,我认为HANDLE_MSG
不应该在对话框程序中使用,因为在对话框程序中,如果用户已经处理了消息,对话框程序应该返回TRUE
( MSDN document ),但 HANDLE_MSG
返回消息的返回值,并且在大多数情况下,它是 0(如 WM_PAINT
和 WM_COMMAND
),即 FALSE
。 p>
但我看到在很多情况下,人们只是使用它,例如 this ,而且效果很好。我很困惑。那么,我可以在对话框过程中使用HANDLE_MSG
吗?
最佳答案
嗯,为了清晰起见,这个例子并没有得到很多分数。然而,返回 TRUE 的情况并不常见。或者,在您实际实现的消息上返回 FALSE 会产生任何负面影响。因为您通常会监听默认对话过程将忽略的消息,或者其默认实现是您想要的消息。
您需要避免翻转忽略位,并考虑每个消息的适当返回值应该是什么。而无论是否需要调用SetWindowLong来设置DWL_MSGRESULT,使用HANDLE_MSG返回值更为合适。依赖宏并不是正确的做法,宏不够智能。它确实需要程序员。所以使用HANDLE_MSG就可以了。但您可能需要添加return或SetWindowLong调用,具体取决于消息。
关于winapi - 我可以在对话框程序中使用 HANDLE_MSG 消息破解程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16899209/