Предотвращение мерцания экрана для CScrollView и CToolBar - PullRequest
2 голосов
/ 16 августа 2010

У меня есть панель инструментов, отображаемая в верхней части вида прокрутки.Когда я вызываю «Аннулировать» в режиме прокрутки, я понимаю, что и на панели инструментов, и в режиме прокрутки возникают проблемы с мерцанием экрана.

Я пытаюсь обойти это путем переопределения их обработчика фоновых событий стирания.

Этот метод работает для просмотра с прокруткой, но не для панели инструментов.

Вот мой фрагмент кода.

void MyCScrollView::OnInitialUpdate() {
    CScrollView::OnInitialUpdate();
    // ToolBar is NonFlickeringCToolBar, inherited from CToolBar
    ToolBar.Create(this);
    ToolBar.LoadToolBar(IDR_TOOLBAR);
    ToolBar.ShowWindow(SW_SHOW);
    ToolBar.SetBarStyle(CBRS_ALIGN_TOP | CBRS_SIZE_FIXED);
    RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);
}

BOOL MyCScrollView::OnEraseBkgnd(CDC* pDC)
{
    // Override to prevent screen flickering. Works!
    return TRUE;
}

BOOL NonFlickeringCToolBar::OnEraseBkgnd(CDC* pDC) {
    // Override to prevent screen flickering. Doesn't work!
    return TRUE;
} 

Вот снимок экрана, прежде чем я переопределю фон стиранияобработчик события.

alt text

Вот снимок экрана после того, как я переопределил обработчик события удаления фона.Не то чтобы панель инструментов продолжала мерцать, с дополнительной проблемой: ее сплошной фон исчез, пока я не наведу курсор мыши на его тело.

alt text

Я хочу

  1. Сделать вид прокрутки и панель инструментов не мерцающими
  2. Сплошной фон для панели инструментов все еще там

Что-нибудь, что я пропустил?

1 Ответ

1 голос
/ 17 августа 2010

Предотвратить перерисовку панели инструментов.

BOOL MyCScrollView::PreCreateWindow(CREATESTRUCT& cs)
{
    // Add the WS_CLIPCHILDREN style to avoid repaint problems.
    // Without this, our toolbar will keep flickering.
    cs.style |= WS_CLIPCHILDREN;

    return CView::PreCreateWindow(cs);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...