Wm paint
This presentation is the property of its rightful owner.
Sponsored Links
1 / 10

WM_PAINT 메세지 PowerPoint PPT Presentation


  • 73 Views
  • Uploaded on
  • Presentation posted in: General

WM_PAINT 메세지. 어떤 윈도우가 다른 원도우 밑에 있게 되면 , 깔린 부분이 지워지게 됨 대책 : 다시 그려주어야 됨 Window XP 가 WM_PAINT 메시지를 발생시킴 WM_PAINT 메시지 처리 routine OnPaint 함수 OnDraw 함수 CView class 에만 있음 일반적으로 OnDraw 함수에서 그림. 지워짐. 왼쪽 마우스 click 예제 프로그램. 예제 : 왼쪽 마우스를 click 하면 그 지점에 사각형을 그리는 프로그램

Download Presentation

WM_PAINT 메세지

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Wm paint

WM_PAINT 메세지

  • 어떤 윈도우가 다른 원도우 밑에 있게 되면, 깔린 부분이 지워지게 됨

    • 대책 : 다시 그려주어야 됨

    • Window XP가 WM_PAINT 메시지를 발생시킴

  • WM_PAINT 메시지 처리 routine

    • OnPaint 함수

    • OnDraw 함수

      • CView class 에만 있음

      • 일반적으로 OnDraw 함수에서 그림

지워짐


Click

왼쪽 마우스 click 예제 프로그램

  • 예제 : 왼쪽 마우스를 click하면 그 지점에 사각형을 그리는 프로그램

  • WM_LBUTTONDOWN 메시지 처리

    • OnLButtonDown 함수에서 처리 (View  Class Wizard 사용)

    • OnDraw 함수는 이미 존재함

class 조심 : CView class 선택


Click1

왼쪽 마우스 click 예제 프로그램

  • Version 0.3 : OnDraw 함수에서 그려야 되는 것은?

void CTest2View::OnLButtonDown(UINT nFlags, CPoint point)

{

CClientDC dc(this);

dc.Rectangle(point.x-10,point.y -10,point.x+10,point.y+10);

CView::OnLButtonDown(nFlags, point);

}

void CTest2View::OnDraw(CDC* pDC)

{

CTest2Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

여기에 다시 그리는 프로그램이 와야 됨

}

CDC가 인수로 넘어옴


V0 7 click

V0.7: 왼쪽 마우스 click 예제 프로그램

  • Version 0.7 : 전역변수의 사용

CPoint m_p;

void CTest2View::OnLButtonDown(UINT nFlags, CPoint point)

{

CClientDC dc(this);

dc.Rectangle(point.x-10,point.y -10,point.x+10,point.y+10);

m_p = point;

CView::OnLButtonDown(nFlags, point);

}


Click2

왼쪽 마우스 click 예제 프로그램

  • Version 0.7 : 전역변수의 사용

    • CDC가 인수로 넘어옴으로 다음과 같이 device context를 선언할 필요가 없음

void CTest2View::OnDraw(CDC* pDC)

{

CTest2Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

pDC->Rectangle(m_p.x-10,m_p.y -10,m_p.x+10,m_p.y+10);

}

CClientDC dc(this);


V0 7 1 click

V0.7.1 왼쪽 마우스 click 예제 프로그램

  • Version 0.7.1 : member 변수의 사용

    • class view 에서 오른쪽 마우스 click

class CTest2View : public Cview {

public:

CPoint m_p;

XXXview.h 파일에 멤버변수가 추가됨


Click3

왼쪽 마우스 click 예제 프로그램

  • Version 0.8 : 그리는 부분을 한 곳에 모아둠

    • 멤버 변수 (m_p) 및 멤버함수 (my_draw) 사용

void CTest2View::my_draw(void)

{

// 그리는 부분을 여기에 추가하면 됨

}


V0 8 click

V0.8: 왼쪽 마우스 click 예제 프로그램

  • Version 0.8 :

void CTest2View::my_draw(CPoint point) {

CClientDC dc(this);

dc.Rectangle(point.x-10,point.y -10,point.x+10,point.y+10);

}

void CTest2View::OnLButtonDown(UINT nFlags, CPoint point) {

m_p = point;

my_draw();

CView::OnLButtonDown(nFlags, point);

}

void CTest2View::OnDraw(CDC* pDC) {

CTest2Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

my_draw();

}


V1 0 click

V1.0 왼쪽 마우스 click 예제 프로그램

  • Invalidate 함수 (member function)

    • WM_PAINT를 강제로 발생시킴

Invalidate();

void CTest2View::OnLButtonDown(UINT nFlags, CPoint point) {

m_p = point;

CView::OnLButtonDown(nFlags, point);

Invalidate();

}

void CTest2View::OnDraw(CDC* pDC) {

CTest2Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDC->Rectangle(m_p.x-10,m_p.y -10,m_p.x+10,m_p.y+10);

}


Wm paint

여러 개의 점을 그릴 때

  • 멤버변수

    • 멤버변수배열을 사용하여 위치값을 저장해야 됨

    • int count

    • CPoint pt[50]

void CTest2View::OnLButtonDown(UINT nFlags, CPoint point) {

pt[count] = point;

++count;

CView::OnLButtonDown(nFlags, point);

Invalidate();

}


  • Login