GDI(1)

유혜정·2022년 4월 14일
0

기본화면 출력

----view.cpp

void CReDrawDemoView::OnPaint()
{
	CPaintDC dc(this); // device context for painting
					   // TODO: 여기에 메시지 처리기 코드를 추가합니다.
					   // 그리기 메시지에 대해서는 CView::OnPaint()을(를) 호출하지 마십시오.
	dc.TextOut(100, 200, _T("안녕하세요"));
}

클릭한 좌표에 문구 출력

----view.cpp

void CReDrawDemoView::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
	CClientDC dc(this);
	dc.TextOut(point.x, point.y, _T("Hello World"));
	CView::OnLButtonDown(nFlags, point);
}

Draw 함수 사용

----view.h

// 특성입니다.
public:
	CReDrawDemoDoc* GetDocument() const;

----view.cpp


void CReDrawDemoView::Draw(int x, int y, CDC* pDC) {
	pDC->TextOut(x, y, _T("안녕하세요"));
}

void CReDrawDemoView::OnPaint() // 항상 나오는 곳
{
	CPaintDC dc(this); // device context for painting
					   // TODO: 여기에 메시지 처리기 코드를 추가합니다.
					   // 그리기 메시지에 대해서는 CView::OnPaint()을(를) 호출하지 마십시오.
	//dc.TextOut(100, 200, _T("안녕하세요"));
	Draw(100, 100, &dc);
}


void CReDrawDemoView::OnLButtonDown(UINT nFlags, CPoint point) // WM_PAINT를 호출하면 사라지는 곳
{
	// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
	CClientDC dc(this);
	
	//dc.TextOut(point.x, point.y, _T("Hello World"));
	Draw(point.x, point.y, &dc);


	CView::OnLButtonDown(nFlags, point);
}

CPaintDC vs. CClientDC

OnLButtonDown: WM_PAINT를 호출하면 사라짐
윈도우 창의 크기를 조금만 달라져도 관련된 내용이 사라지게 됨
- CPaintDC와 CClientDC의 차이임

ClientDC는 마우스 찍을 때만 동작함

  • 임시적으로 동작하게 됨
  • OnPaint를 제외한 곳에서 사용

PaintDC는 임시이긴 함

  • 차이점은 ReSize 될 때마다 호출하게 됨
  • OnPaint에서만 사용
profile
내가 시작한 공부, 공유할 코드

0개의 댓글