Диалоговое окно не перерисовывается правильно при прокрутке? - PullRequest
0 голосов
/ 16 апреля 2019

В настоящее время у меня есть диалоговое окно, параметры которого (размер и элементы управления) определены в файле ресурсов. Это диалоговое окно добавляется в качестве дочернего окна в MAINFRM.cpp и выглядит так:

enter image description here

На мониторе с меньшим разрешением я добавил полосу прокрутки для прокрутки нижнего содержимого, поскольку нижняя часть отсекается от экрана. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я начинаю прокручивать, либо перетаскивая панель или нажимая кнопки вверх / вниз, диалоговое окно искажается строками:

enter image description here enter image description here

Проблемный код:

OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
    int incrementor;

    // Switch statement code to determine incrementor value

    if (incrementor != 0)
    {
        ScrollWindow(0, -m_textHeight* incrementor, NULL, NULL);
        SetScrollPos(SB_VERT, m_scrollNpos, TRUE);
        UpdateWindow();
    }
}

Я предпринял попытки найти похожие проблемы и заменил код блока if на следующий, который не помог:

RECT rect;
GetClientRect(&rect);
ScrollWindowEx(0, -m_textHeight* incrementor, &rect, NULL, NULL, NULL,
               SW_INVALIDATE| SW_SCROLLCHILDREN);
SetScrollPos(SB_VERT, m_scrollNpos, TRUE);
UpdateWindow();

Также заменено UpdateWindow() на:

::RedrawWindow(m_hWnd, &rect, NULL, RDW_UPDATENOW | RDW_ALLCHILDREN);

Что вызывает эту проблему?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...