У меня есть следующий код для создания окна "только сообщение", окно всегда создается нормально, проблема возникает когда оно создается.
Процесс А
...
auto hInstance = ::GetModuleHandle( nullptr );
WNDCLASSEX wcx;
wcx.cbSize = sizeof(wcx);
wcx.style = 0;
wcx.lpfnWndProc = MyWinProc;
wcx.cbClsExtra = 0;
wcx.cbWndExtra = 0;
wcx.hInstance = hInstance;
wcx.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcx.hCursor = LoadCursor(NULL, IDC_ARROW);
wcx.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH);
wcx.lpszMenuName = L"MainMenu";
wcx.lpszClassName = L"MyDummyClass";
wcx.hIconSm = (HICON)LoadImage(hInstance,
MAKEINTRESOURCE(5),
IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
LR_DEFAULTCOLOR);
if (!RegisterClassEx(&wcx))
{
throw "Bad 1.";
}
if (!this->CWnd::CreateEx(0, L"MyDummyClass", L"MyDummyWindow", 0, 0, 0, 0, 0, HWND_MESSAGE, nullptr))
{
throw "Bad 2.";
}
Процесс Б
auto myWnd = FindWindow( L"MyDummyClass");
Теперь у меня проблема: если process A
создать окно до вызова OnInitDialog
, то process B
сможет найти окно.
Но если process A
создаст окно в любое другое время после создания главного окна, process B
больше не сможет найти это окно.
В обоих случаях насос сообщений вызывается нормально, окно создается как положено, я просто не могу FindWindow
создать его после запуска основного приложения.
Почему это может быть, и как я могу обойти это?