1. 덧그리고 싶은 컨트롤을 상속받는 클래스를 만든다.
2. 메시지 맵을 만들어서 WM_PAINT를 잡아오게 해 놓고, OnPaint를 override한다.
3. OnPaint의 내용
2. 메시지 맵을 만들어서 WM_PAINT를 잡아오게 해 놓고, OnPaint를 override한다.
3. OnPaint의 내용
CPaintDC dc(this); //그리기 위한 dc를 따옴
CDC memDC;
memDC.CreateCompatibleDC(&dc); //이거 빼먹으면 아마 안그려질걸? memDC 생성
CRect rcClip, rcClient;
dc.GetClipBox(&rcClip); //GetClipBox는 다시 그려야 하는 영역을 구해 준다. 절약 정신.
dc.GetClipBox(&rcClip); //GetClipBox는 다시 그려야 하는 영역을 구해 준다. 절약 정신.
GetClientRect(&rcClient);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());
memDC.SelectObject(&bitmap); //rcClient랑 똑같은 넓이의 비트맵 만들어서 그릴 준비
CWnd::DefWindowProc(WM_PAINT, (WPARAM)memDC.m_hDC, 0);
//요걸 호출해 주면! 상위 클래스의 WM_PAINT 처리 결과를 memDC에 담을 수 있다
//즉 원본 컨트롤이 그려주고 있는 것들이 memDC에 그려진다
//여기서 내맘대로 씹고 뜯고 맛보고 즐기고
//요걸 호출해 주면! 상위 클래스의 WM_PAINT 처리 결과를 memDC에 담을 수 있다
//즉 원본 컨트롤이 그려주고 있는 것들이 memDC에 그려진다
//여기서 내맘대로 씹고 뜯고 맛보고 즐기고
dc.BitBlt(rcClip.left, rcClip.top, rcClip.Width(), rcClip.Height(), &memDC,
rcClip.left, rcClip.top, SRCCOPY);
//필요한 만큼(rcClip)만 복사해 주면 된다
//필요한 만큼(rcClip)만 복사해 주면 된다
memDC.DeleteDC();
'개발' 카테고리의 다른 글
| [MFC] 특정 컨트롤 위에 덧그리기 (0) | 2012/02/16 |
|---|---|
| Excel 자동화 자투리(2) (0) | 2012/01/27 |
| Excel 자동화 자투리(1) (0) | 2012/01/26 |
| 페이스북 앱 (0) | 2012/01/17 |
| 홈플러스 어플 설치기 (0) | 2012/01/09 |
