OnPaint: 화면출력을 위한 함수
OnDraw: 화면 출력뿐 아니라 프린터 출력에도 관여되는 함수
같은 화면을 출력하는 함수가 2개 존재한다면 어떻게 될까?
voie CPaintView::OnDraw(CDC* pDC){
CPaintDoc* pDoc = GetDocument();
if(pDoc)
return;
//TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.
pDC->TextOutW(100,10,_T("OnDraw");
}
void CPaintView::OnPaint(){
CPaintDC dc(this);
// Do not call CView::OnPaint() for painting messages
dc.TextOutW(100,40, _T("OnPaint");
}
* OnPaint 함수의 주석이 단서이다. CView::OnPaint()를 호출하지 말라고 명시되어있다.
* OnDraw함수는 아버지 클래스인 CView의 OnPaint함수가 호출해주는 것이다.
* WM_PAINT가 발생하면 CView:: OnPaint를 호출하지 않기 때문에 OnDraw가 호출되지 않는다.
* 만약 OnPaint()함수에 CView::OnPaint()를 호출한다면?
OnDraw를 호출할수 있지만 내부에서 pDC포인터를 자동으로 매개변수로 전달 해주지 않는다.
그래도 화면 출력을 하고 싶다면 pDC = GetDC(); 로 pDC 포인터를 얻어서 사용하자.
voie CPaintView::OnDraw(CDC* pDC){
CPaintDoc* pDoc = GetDocument();
if(pDoc)
return;
pDC = GetDC();
pDC->TextOutW(100,10,_T("OnDraw");
}
'◼️MFC' 카테고리의 다른 글
[MFC] UpdateData(true), UpdateData(false) (0) | 2023.11.29 |
---|---|
[MFC] 일반 클래스에서 CView로 버튼 클릭이벤트 보내기 (0) | 2023.11.29 |
[MFC] 시스템 바, 타이틀 바 크기 구하기 (0) | 2023.11.29 |
[MFC] App, MainFrame, View 클래스 호출 (1) | 2023.11.29 |
[MFC] 버튼 클릭시 Client Edge true로 변경 (0) | 2023.11.29 |