Можно ли отправить пользовательское сообщение в WindowProcedure в Win32 Gui? - PullRequest
0 голосов
/ 27 апреля 2020

Прошу прощения, если я спросил что-то нелепое (я нуб 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;
}

1 Ответ

2 голосов
/ 27 апреля 2020

Вы можете определить новое сообщение:

#define WM_MY_MSG (WM_USER+0)

или

#define WM_MY_MSG (WM_APP+0)

Обратите внимание, что сообщения в диапазоне WM_USER + x являются частными для класса окна, в то время как личные сообщения приложения должны находиться в диапазоне WM_APP + x. Затем отправьте это сообщение в окно с известным обработчиком (hwnd), используя функции API SendMessage или PostMessage. И далее обрабатывать его:

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{

      switch (message){      

          case WM_DESTROY:
              PostQuitMessage(0);
              break;

          case WM_MY_MSG: // like this 
              // Do something, for example FindWindowA(NULL,"Task Manager")
              break;

          default:
              return DefWindowProc(hwnd,message,wParam,lParam);

      } 

      return 0;
}
...