Search

'invalidate'에 해당되는 글 2건

  1. 2016.11.15 CWnd::Invalidate
  2. 2016.10.26 MFCGridCtrl OnEraseBkgnd ScrollBar

CWnd::Invalidate

Programming/MFC 2016. 11. 15. 09:34 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

CWnd::Invalidate

void Invalidate(
   BOOL bErase = TRUE 
);
bErase

Specifies whether the background within the update region is to be erased.

The client area is marked for painting when the next WM_PAINT message occurs. The region can also be validated before a WM_PAINTmessage occurs by the ValidateRect or ValidateRgn member function.

The bErase parameter specifies whether the background within the update area is to be erased when the update region is processed. If bEraseis TRUE, the background is erased when the BeginPaint member function is called; if bErase is FALSE, the background remains unchanged. If bErase is TRUE for any part of the update region, the background in the entire region, not just in the given part, is erased.

Windows sends a WM_PAINT message whenever the CWnd update region is not empty and there are no other messages in the application queue for that window.




Invalidate(FALSE)  ->  WM_PAINT

Invalidate(TRUE)   ->  WM_ERASEBKGND   -> WM_PAINT




MFCGridCtrl OnEraseBkgnd ScrollBar

Programming/MFCGridCtrl 2016. 10. 26. 11:34 Posted by TanSanC
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

MFCGridCtrl OnEraseBkgnd ScrollBar Redraw








MFC Dialog Color 를 바꾸기 위해


OnEraseBkgnd 을 오버라이딩하여 사용하면


Dialog 를 새로 그리게 되는데


이때 CGridCtrl 의 스크롤바 영역도 같이 새로 그리게 된다.








그래서 스크롤바가 존재하지만 안보이는 경우가 발생한다.


그럴때는 OnEraseBkgnd 에서 Dialog 를 새로그린 다음



m_Grid.SetRedraw(true, true);






Redraw 를 하면


스크롤 바를 새로 그린다.