2012-10-29 2 views
2

방금 ​​MFC를 배우기 시작했습니다. 나는 원을 그려야합니다. OnPaint()를 사용하면 작동합니다. 배경으로 그려야하는 것은 무엇입니까? 이것은 적절한 기능입니까 아니면 그것을 변경해야합니까?MFC 무승부 동그라미

void Cvaja5Dlg::OnRButtonDown(UINT nFlags, CPoint point) 
{ 
    CPaintDC dc(this); 
    dc.Ellipse(0,0,500,500); 
    CDialogEx::OnRButtonDown(nFlags, point); 
} 
+2

[MFC] (http://www.relisoft.com/resource/libs.html)를 사용 하시겠습니까? – amaurea

+1

나는 콜라주를 원한다. 그것이 나에게 달려있다면 나는 C#을 사용할 것이다. 난 그걸하는 법을 실제로 알고있다 – Shawn

+0

CClientDC를 사용하여 OnPaint 외부에서 고통을 줄 수있다. 지속되지는 않을 것이지만 모든 클릭을 할 때 도움이되며 배경이 무효화되면 지울 것입니다. –

답변

6

아니요, Windows 페인팅이 다른 방식으로 작동합니다. 꽤 비동기식입니다. 이 BeginPaint()/EndPaint() 통화로 수행

  1. CPaintDC

    은 내부 WM_PAINT 처리기를 사용한다.
  2. 모든 도면은 일반적으로 대체 된 CWnd::OnPaint()/CView::OnDraw() 방법으로 수행되어야합니다.
  3. 사용자 입력시 (예 : 마우스 오른쪽 버튼을 누름) 처리기가 클래스 상태를 변경해야합니다. 일부 부울 플래그 isRightButtonDown을 설정하고 Invalidate()을 호출하여 비동기 창 다시 그리기를 시작하십시오. 동기화 재 칠을 시행하려면 무효화 직후에 UpdateWindow() 또는 RedrawWindow()을 사용할 수 있습니다.
0

OnRedraw() 메서드를 사용하여 다시 그리기를 원하는 경우 ...에서 BeginPaint() 및 endPaint(); CPAINTDC를 사용하면 페인트 처리기의 구조체를 만듭니다.