OnEraseBkgnd

CWnd::OnEraseBkgnd afx_msg BOOL OnEraseBkgnd( CDC* pDC ); 返回值:如果它擦除了背景,則返回非零值;否則返回0。

參數:
pDC 指定了設備環境對象。
 說明:
當CWnd對象的背景需要被擦除時(例如,當視窗大小被改變時),框架就調用這個函式。它被調用以便為繪圖準備無效區域。
預設的實現使用 視窗類結構中hbrBackground成員指定的視窗類背景刷子擦除視窗背景。
如果hbrBackground成員為NULL,你 重載的OnEraseBkgnd必須擦除背景色。你的 重載函式也可以為刷子調用 UnrealizeObject函式,將目標刷子的原點與CWnd的坐標對齊,然後選擇該刷子。
如果重載的OnEraseBkgnd在回響WM_ERASEBKGND時處理了這個訊息並擦除了背景,則應當返回非零值,表明不需要進一步擦除。如果它返回0,則視窗依然被標記為需要擦除(通常,這意味著 paintstruct結構的fErase成員將為TRUE)。
Windows假定背景是用MM_TEXT映射模式計算的。如果設備環境使用了其它映射模式,則擦除的區域可能不在客戶區的可見部分之內。
注意 框架調用這個成員函式以允許你的應用程式處理一個Windows訊息。傳遞給你的成員函式的參數反映了接收到訊息時框架接收到的參數。如果你調用了這個函式的 基類實現,則該實現將使用最初傳遞給訊息的參數(而不是你提供給這個函式的參數)。
問: OnEraseBkgnd函式中返回TRUE或FALSE有什麼區別?
答: WM_ERASEBKGNDReturn ValuesAn application should return nonzero if it erases the background; otherwise, it should return zero. A:true表示已處理背景刷新,false表示需要在 OnPaint里處理
問:在OnEraseBkgnd中繪製對話框的背景圖片和在OnPaint中繪製對話框的背景圖片由什麼區別,另外OnEraseBkgnd和CtlColor有什麼區別?
答: OnEraseBkgnd是在視窗大小發生改變等情況下發生的,它將繪製視窗背景;而 OnCtlColor是當視窗的控制項需要繪製時發生的,它將繪製視窗的控制項。 A:OnEraseBkgnd :在視窗背景需要重繪時調用.OnPaint : 此時OnEraseBkgnd已經調用過了,所以在此回響函式體內對背景進行的操作將覆蓋OnEraseBkgnd中所做的操作.OnCtlColor : 由於在視窗將要被(第一次)繪製時回響,子視窗可以通過傳送WM_CTLCOLOR請求父視窗傳來一個HBRUSH.

相關詞條

相關搜尋

熱門詞條

聯絡我們