У меня есть панель инструментов, отображаемая в верхней части вида прокрутки.Когда я вызываю «Аннулировать» в режиме прокрутки, я понимаю, что и на панели инструментов, и в режиме прокрутки возникают проблемы с мерцанием экрана.
Я пытаюсь обойти это путем переопределения их обработчика фоновых событий стирания.
Этот метод работает для просмотра с прокруткой, но не для панели инструментов.
Вот мой фрагмент кода.
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](https://sites.google.com/site/yanchengcheok/Home/before-mfc.PNG)
Вот снимок экрана после того, как я переопределил обработчик события удаления фона.Не то чтобы панель инструментов продолжала мерцать, с дополнительной проблемой: ее сплошной фон исчез, пока я не наведу курсор мыши на его тело.
![alt text](https://sites.google.com/site/yanchengcheok/Home/after-mfc.PNG)
Я хочу
- Сделать вид прокрутки и панель инструментов не мерцающими
- Сплошной фон для панели инструментов все еще там
Что-нибудь, что я пропустил?