CDC : 실행된 윈도우에 대한 모든 소유권을 갖으며 사용후 반드시 ReleaseDC를 해야한다.
CClientDC : CDC의 subset 개념이며 ReleaseDC가 필요없다.
CDC dc;
CPen pen;
pen.SelectObject( &dc );
pen이 dc 안에서만 동작하도록 설정/ 사용전 old object를 가지고 있다가 사용후 old를 반환
dc를 clientdc로 사용할 때 global로 clientdc를 잡은 경우 object의
주체를 알 수 없고 local로 잡을 경우 scope rule의 문제가 생긴다.
CClientDc dc( this );
DCD MemDC;
MemDC.CreateCompatibleDC( &dc );
DC(여기서는 MemDC)를 ClientDC 처럼 사용. ReleaseDC가 필요 없이 ClientDC의
scope rule을 따른다.
MemDC.CreateCompatibleBitmap( &dc, x, x )
DC에 bitmap을 사용하지만 실제로는 ClientDC에 적용된다.
이처럼 다른 handle에 적용하기 위해서는 CreateCompatibleHandle( &dc... )
를 해준다.
GetWindowRect( &rect ) : 좌표를 전체 화면 기준으로 가져온다
ScreeToClient( &rect ) : 현재 실행중인 윈도를 기준 잡아 0,0을 만든다.
Invalidate() : 전체 화면을 다시 그린다.
InvalidateRect()/InvalidateRgn() : Rect/Rgn 영역만 다시 그린다.
Picture Control에다가 Dialog를 넣고 LButtonDown시 InvalidateRect()을 사용하여
Picture Control을 다시 그리고 Rect와 WParam/LParam으로 넘어오는 좌표를 비교
CClientDC : CDC의 subset 개념이며 ReleaseDC가 필요없다.
CDC dc;
CPen pen;
pen.SelectObject( &dc );
pen이 dc 안에서만 동작하도록 설정/ 사용전 old object를 가지고 있다가 사용후 old를 반환
dc를 clientdc로 사용할 때 global로 clientdc를 잡은 경우 object의
주체를 알 수 없고 local로 잡을 경우 scope rule의 문제가 생긴다.
CClientDc dc( this );
DCD MemDC;
MemDC.CreateCompatibleDC( &dc );
DC(여기서는 MemDC)를 ClientDC 처럼 사용. ReleaseDC가 필요 없이 ClientDC의
scope rule을 따른다.
MemDC.CreateCompatibleBitmap( &dc, x, x )
DC에 bitmap을 사용하지만 실제로는 ClientDC에 적용된다.
이처럼 다른 handle에 적용하기 위해서는 CreateCompatibleHandle( &dc... )
를 해준다.
GetWindowRect( &rect ) : 좌표를 전체 화면 기준으로 가져온다
ScreeToClient( &rect ) : 현재 실행중인 윈도를 기준 잡아 0,0을 만든다.
Invalidate() : 전체 화면을 다시 그린다.
InvalidateRect()/InvalidateRgn() : Rect/Rgn 영역만 다시 그린다.
Picture Control에다가 Dialog를 넣고 LButtonDown시 InvalidateRect()을 사용하여
Picture Control을 다시 그리고 Rect와 WParam/LParam으로 넘어오는 좌표를 비교
'프로그래밍 > 라이브러리' 카테고리의 다른 글
[MFC] 다이얼로그에서 키 입력 처리 (0) | 2008.02.06 |
---|---|
[MFC] 기본 클래스에서 다른 클래스 참조 (예) (0) | 2008.02.06 |
[MFC] 기본 클래스끼리 상호 참조 (0) | 2008.02.06 |
[MFC] class 구조와 몇가지... (0) | 2008.02.06 |
[MFC] 타이틀바와 외곽선이 없는 윈도우 만들기 (0) | 2008.02.06 |