Jak odbierać wiadomości przy użyciu okna tylko do wiadomości w aplikacji konsoli?

Stworzyłem prostą aplikację konsoli Win32, która tworzy ukryte okno tylko do wiadomości i czeka na wiadomości. Pełny kod znajduje się poniżej.

#include <iostream>
#include <Windows.h>

namespace {
  LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  {
    if (uMsg == WM_COPYDATA)
      std::cout << "Got a message!" << std::endl;
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
  }
}

int main()
{
  WNDCLASS windowClass = {};
  windowClass.lpfnWndProc = WindowProcedure;
  LPCWSTR windowClassName = L"FoobarMessageOnlyWindow";
  windowClass.lpszClassName = windowClassName;
  if (!RegisterClass(&windowClass)) {
    std::cout << "Failed to register window class" << std::endl;
    return 1;
  }
  HWND messageWindow = CreateWindow(windowClassName, 0, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, 0, 0);
  if (!messageWindow) {
    std::cout << "Failed to create message-only window" << std::endl;
    return 1;
  }

  MSG msg;
  while (GetMessage(&msg, 0, 0, 0) > 0) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return msg.wParam;
}

Nie otrzymuję jednak żadnych wiadomości z innej aplikacji.GetMessage() tylko blokuje i nigdy nie wraca. używamFindWindowEx() o tej samej nazwie klasy w aplikacji, która wysyła wiadomość, i znajduje okno. Po prostu wiadomość nigdy nie jest odbierana.

Czy robię tu coś złego? Jaka jest najbardziej minimalna aplikacja, która może odbierać wiadomości w oknach?

questionAnswers(2)

yourAnswerToTheQuestion