[MFC] Shape
크기가 일정한 사각형 또는 타원 하나를 화면에 항상 출력하는 프로그램
왼쪽 마우스 클릭 : 사각형의 중심 위치 바뀜
오른쪽 마우스 클릭 : 사각형 / 타원 모양 바뀜
MDI, “Shape”
중심 위치의 초기값 : CPoint(100,100)
모양의 초기값 : 사각형
색상의 초기값 : 내부색 - 빨강, 라인색-파랑
도형 크기의 초기값 : 높이 100, 폭 100
Client 영역에 원하는 색을 배경으로 칠하기
WM_ERASEBKGND
Cbrush 생성, CDC::FillRect 사용
class CShapeDoc : public CDocument
{
……
public:
CPoint m_Center;
BOOL m_bRect;
CSize m_Size;
COLORREF m_LineColor;
COLORREF m_RgnColor;
……
};
BOOL CShapeDoc::OnNewDocument( )
{
……
m_Center = CPoint(100,100);
m_bRect = TRUE;
m_Size = CSize(100,100);
m_LineColor = RGB(0,0,255);
m_RgnColor = RGB(255,0,0);
……
}
void CShapeView::OnDraw(CDC* pDC)
{
CShapeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CRect rect;
rect.left=pDoc->m_Center.x-pDoc->m_Size.cx/2;
rect.top=pDoc->m_Center.y-pDoc->m_Size.cy/2;
rect.right=pDoc->m_Center.x+pDoc->m_Size.cx/2;
rect.bottom=pDoc->m_Center.y+pDoc->m_Size.cy/2;
CPen MyPen,*OldPen;
MyPen.CreatePen(PS_SOLID,2,pDoc->m_LineColor);
OldPen=pDC->SelectObject(&MyPen);
CBrush MyBr,*OldBr;
MyBr.CreateSolidBrush(pDoc->m_RgnColor);
OldBr=pDC->SelectObject(&MyBr);
if(pDoc->m_bRect)
pDC->Rectangle(rect);
else
pDC->Ellipse(rect);
pDC->SelectObject(OldPen);
pDC->SelectObject(OldBr);
}
void CShapeView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
GetDocument()->m_Center = point;
// Invalidate();
GetDocument()->UpdateAllViews(NULL);
CView::OnLButtonDown(nFlags, point);
}
void CShapeView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
GetDocument()->m_bRect = !GetDocument()->m_bRect;
// Invalidate();
GetDocument()->UpdateAllViews(NULL);
CView::OnRButtonDown(nFlags, point);
}
BOOL CShapeView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CBrush Br;
Br.CreateSolidBrush(RGB(0,125,125));
CRect rect;
GetClientRect(rect);
pDC->FillRect(rect,&Br);
return TRUE;
//return CView::OnEraseBkgnd(pDC);
}
'IT Note > 기타언어' 카테고리의 다른 글
[MFC] 비트맵(Bitmap) 출력 (0) | 2008.11.24 |
---|---|
[MFC] OnDraw 동작 (0) | 2008.11.24 |
[MFC] Graphic 출력 (0) | 2008.11.24 |