你什么时候使用ON_COMMAND,我们什么时候使用ON_MESSAGE。它们之间有什么区别。
最佳答案
ON_COMMAND
专门用于处理命令消息(即WM_COMMAND
),例如单击按钮/菜单项/工具栏按钮。
ON_MESSAGE
更为通用,可用于任何 Windows 消息。它通常用于不常处理且未提供特定消息映射宏的消息。您也可以使用 ON_MESSAGE
处理 ON_COMMAND
消息,但您必须自己提取消息信息(即命令 ID)。
示例:
看这里:
- http://msdn.microsoft.com/en-us/library/k35k2bfs(VS.80).aspx
- http://msdn.microsoft.com/en-us/library/ms647591(VS.85).aspx
在消息映射中:
ON_MESSAGE( WM_COMMAND, OnMyCommand )
处理程序:
LRESULT CMyWnd::OnMyCommand( WPARAM wParam, LPARAM lParam )
{
// ... Handle message here
int commandId = LOWORD(wParam);
switch(commandId){
case ID_HELLOCOMMAND:
MessageBox(0, "Hello there!", "ID_HELLO_COMMAND", MB_OK);
break;
// ... other commands here
}
return 0L;
}
免责声明:由于 MFC 的消息泵机制,您可能需要做比上面显示的更多的事情。最佳男士提问:Jeff Prosise
关于c++ - 消息映射宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3446533/