wm paint
Download
Skip this Video
Download Presentation
WM\_PAINT 메세지

Loading in 2 Seconds...

play fullscreen
1 / 10

WM\_PAINT 메세지 - PowerPoint PPT Presentation


  • 100 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'WM\_PAINT 메세지' - birch


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);

}

slide10
여러 개의 점을 그릴 때
  • 멤버변수
    • 멤버변수배열을 사용하여 위치값을 저장해야 됨
    • int count
    • CPoint pt[50]

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

pt[count] = point;

++count;

CView::OnLButtonDown(nFlags, point);

Invalidate();

}

ad