В настоящее время у меня есть диалоговое окно, параметры которого (размер и элементы управления) определены в файле ресурсов. Это диалоговое окно добавляется в качестве дочернего окна в MAINFRM.cpp и выглядит так:
На мониторе с меньшим разрешением я добавил полосу прокрутки для прокрутки нижнего содержимого, поскольку нижняя часть отсекается от экрана. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я начинаю прокручивать, либо перетаскивая панель или нажимая кнопки вверх / вниз, диалоговое окно искажается строками:
Проблемный код:
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);
Что вызывает эту проблему?
Спасибо!