2
我有一個工具欄顯示在滾動視圖的頂部。當我在scroll view上調用invalidate時,我意識到toolbar和scroll view都有屏幕閃爍問題。防止CScrollView和CToolBar的屏幕閃爍
我嘗試通過覆蓋其擦除後臺事件處理程序來解決問題。
此方法適用於滾動視圖,但不適用於工具欄。
這是我的代碼片段。
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;
}
這裏是我重寫擦除後臺事件處理程序之前的屏幕拍攝。
這裏後,我重寫擦除背景事件處理程序的屏幕拍攝。不是這樣,工具欄仍然保持閃爍,還有一個額外的問題:其堅實的背景消失,直到我將鼠標光標放在其身體上。
我希望
- 製作滾動視圖和工具欄都無閃爍
- 堅實的背景的工具欄還在那裏
什麼我已經錯過了?