【发布时间】:2020-08-11 02:39:50
【问题描述】:
如果我问了一些荒谬的问题(我是win32菜鸟),我很抱歉,但我想知道它是否会发生。我们是否可以根据自己更改消息并在开关(消息)中将其处理为在代码中?
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message){
case WM_DESTROY:
PostQuitMessage(0);
break;
case FindWindowA(NULL,"Task Manager"): // like this
//do something
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
【问题讨论】:
-
case FindWindowA没有意义。尽管您可以为自定义消息使用 WM_USER 消息或类似消息。 https://docs.microsoft.com/en-us/windows/win32/winmsg/wm-user -
switch 语句中的 case 值必须是常量表达式。函数的返回值不是。因此,不,您不能使用类似此代码的任何内容(即使您将
FindWindowA(...)替换为返回消息标识符的内容)。