Окно верхнего уровня закрашено - PullRequest
0 голосов
/ 23 октября 2019

Я переместил дочернее окно в верхнюю часть Z-порядка, вызвав SetWindowPos(m_hwnd, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW). Затем окно закрашивается окнами, которые должны быть ниже. Только если я сделаю недействительным окно для отправки другого WM_PAINT сообщения (например, в ответ на щелчок мыши), оно будет выглядеть так, как должно.

Я уже выяснил, что это является причиной после отправки сообщения рисованияв окно, которое должно быть впереди и находится сверху Z-порядка, другие сообщения WM_ERASEBKGN и WM_PAINT отправляются в окна ниже.

Нужно ли скрывать другие окна илиможно просто перекрасить их (это только меню выбора, которое закрывается после выбора).

Это код меню

LRESULT AddChartsMenu::HandleMessage(UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_CREATE:
    {
        RECT MainWindowRc;
        GetClientRect(GetParent(m_hwnd), &MainWindowRc);
        SetWindowPos(m_hwnd, HWND_TOP, 0, 0, MainWindowRc.right, MainWindowRc.bottom, SWP_SHOWWINDOW);
        CreateCurrentMenu();
        ShowWindow(m_hwnd, SW_SHOW);
    }break;
    case WM_DESTROY:
    {
        SetWindowLongPtr(m_hwnd, GWLP_USERDATA, (LONG_PTR)NULL);
        delete measurable;
        delete this;
    }break;
    case WM_PAINT:
    {
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(m_hwnd, &ps);
        HBRUSH br = CreateSolidBrush(RGB(0, 127, 0));
        FillRect(hdc, &ps.rcPaint, br);
        EndPaint(m_hwnd, &ps);
    }break;
    default:
        return DefWindowProc(m_hwnd, message, wParam, lParam);
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...