Согласно документации, вы должны уничтожить все окна, созданные с помощью этого класса, прежде чем вызов этой функции:
https://learn.microsoft.com/en-us/windo ... sterclassa
Хорошо, безопасно ли вызывать эту функцию из цикла обработки сообщений?
Код: Выделить всё
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-unregisterwindowclassex-inside-the-message-loop[/url]