2

首先,我认为HANDLE_MSG不应该在对话过程中使用,因为在对话过程中,如果用户处理了消息,对话过程应该返回TRUEMSDN文档),但HANDLE_MSG返回消息的返回值,并且大多数情况下,它是0(喜欢WM_PAINTand WM_COMMAND) 这是FALSE.

但我看到在很多情况下,人们只是像这样使用它,而且效果很好。我很困惑。那么,我可以HANDLE_MSG在对话过程中使用吗?

4

1 回答 1

4

好吧,为了清楚起见,这个例子并没有得到很多分数。然而,返回 TRUE 并不是很常见。或者在您实际实现的消息上返回 FALSE 会产生任何负面影响。因为您通常会侦听默认对话过程将忽略的消息,或者无论如何您都想要其默认实现。

您需要避免翻转忽略位,并为每条消息考虑适当的返回值应该是什么。而无论是否需要调用SetWindowLong来设置DWL_MSGRESULT,对于HANDLE_MSG返回值的使用比较合适。依赖宏不是正确的做法,宏不够聪明。它确实需要程序员。所以使用 HANDLE_MSG 就可以了。但是您可能需要添加一个return或 SetWindowLong 调用,具体取决于消息。

于 2013-06-03T16:42:12.563 回答