Это не имеет ничего общего с Rich Edit Control, даже если вы удалите все элементы управления, это произойдет.
Все, что вам нужно сделать, это добавить цвет по умолчанию для фона окна при регистрацииwindow.
Здесь:
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEXW wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_DBLCLKS;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = NULL; // Procesás WM_GETICON
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = NULL;
wcex.lpszMenuName = NULL;
wcex.lpszClassName = L"mainWindowClass";
wcex.hIconSm = NULL; // Procesás WM_GETICON
return RegisterClassExW(&wcex);
}
Повторный щелчок после сворачивания окна приведет к его перерисовке с использованием цвета фона по умолчанию, но здесь для цвета фона установлено значение NULL. Поэтому попробуйте изменить wcex.hbrBackground = NULL
на wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1)
Обновлено:
Похоже, у вас возникла та же проблема, с которой я столкнулся ранее.
Вот мой предыдущий код:
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code that uses hdc here...
hdcMem = CreateCompatibleDC(hdc);
HGDIOBJ previousbit = SelectObject(hdcMem, hBmp);
AlphaBlend(hdc, 0, 0, width_1, height_1, hdcMem, 0, 0, width_1, height_1, bf);
DeleteDC(hdcMem);
EndPaint(hWnd, &ps);
}
break;
case WM_MOUSEWHEEL:
{
if (GET_WHEEL_DELTA_WPARAM(wParam) > 0 && bTrans <= 234)
{
bTrans += 20;
bf.SourceConstantAlpha = bTrans;
InvalidateRect(hWnd, NULL, TRUE);
}
if (GET_WHEEL_DELTA_WPARAM(wParam) < 0 && bTrans >= 20)
{
bTrans -= 20;
bf.SourceConstantAlpha = bTrans;
InvalidateRect(hWnd, NULL, TRUE);
}
return 0;
}
Я сдвигаю колесо мыши, оно вызовет InvalidateRect(hWnd, NULL, TRUE);
Но если я удалю DeleteDC(hdcMem)
, оно вернет главное окно безкартинка.
Снимок отладки:
Да, вы можете найти previousbit == NULL
.
Как сказал @ Реми Лебо, вы пропускаете HBITMAP
, который возвращается SelectObject()
, и даете HDC
разрешение потенциально уничтожить ваш bitmapBackgroundMainWindow
за вашей спиной.
Это основная причина.