Согласно документации:
Перед вызовом этой функции приложение должно уничтожить все окна, созданные с помощью указанного класса.
Хорошо, это безопасно вызвать эту функцию из цикла обработки сообщений?
Код: Выделить всё
LRESULT CALLBACK CustomDialog::DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CREATE:
{
HWND OkButton = CreateWindowEx(NULL, L"BUTTON", L"Okay", WS_CHILD | BS_DEFPUSHBUTTON | WS_VISIBLE, 50, 50, 60, 26, hwnd, reinterpret_cast(ButtonId), Instance, nullptr);
SetWindowFont(OkButton);
break;
}
case WM_COMMAND:
{
if (LOWORD(wParam) != ButtonId)
break;
}
[[fallthrough]];
case WM_CLOSE:
{
EnableWindow(OwnerWindow, true);
SetFocus(OwnerWindow);
DestroyWindow(DialogWindow);
break;
}
case WM_NCDESTROY:
{
UnregisterClass(DialogClassAtom); //
Подробнее здесь: [url]https://stackoverflow.com/questions/78701596/is-it-safe-to-unregisterclass-inside-the-message-loop[/url]