TextOutW(100, 100, L"Hello PC"); // 유니코드 CRect rt; rt.left = 100; rt.top = 100; rt.right = 300; rt.bottom = 200; pDC->Rectangle(100, 100, 300, 400); pDC->DrawText(_T("Hello PC"), &rt, DT_CENTER | DT_VCENTER);"> TextOutW(100, 100, L"Hello PC"); // 유니코드 CRect rt; rt.left = 100; rt.top = 100; rt.right = 300; rt.bottom = 200; pDC->Rectangle(100, 100, 300, 400); pDC->DrawText(_T("Hello PC"), &rt, DT_CENTER | DT_VCENTER);"> TextOutW(100, 100, L"Hello PC"); // 유니코드 CRect rt; rt.left = 100; rt.top = 100; rt.right = 300; rt.bottom = 200; pDC->Rectangle(100, 100, 300, 400); pDC->DrawText(_T("Hello PC"), &rt, DT_CENTER | DT_VCENTER);">
// pDC->TextOutW(100, 100, _T("Hello PC")); // 멀티바이트 코드
// pDC->TextOutW(100, 100, L"Hello PC"); // 유니코드
CRect rt;
rt.left = 100;
rt.top = 100;
rt.right = 300;
rt.bottom = 200;
pDC->Rectangle(100, 100, 300, 400);
pDC->DrawText(_T("Hello PC"), &rt, DT_CENTER | DT_VCENTER);
Ctrl + Shift + X → 클래스 마법사
함수 다운
키보드 쓰기
void CHelloView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
if (nChar == VK_BACK)
str.Delete(str.GetLength() - 1);
else
str.AppendChar(nChar);
Invalidate();
CView::OnChar(nChar, nRepCnt, nFlags);
}
도형 그리기
void CHelloView::OnDraw(CDC* pDC)
{
CHelloDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.
pDC->TextOut(100, 100, str);
pDC->Rectangle(start.x, start.y, end.x, end.y);
pDC->Ellipse(start.x, start.y, end.x, end.y);
pDC->MoveTo(start.x, start.y);
pDC->LineTo(end);
}
void CHelloView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
start.x = point.x;
start.y = point.y;
CView::OnLButtonDown(nFlags, point);
}
void CHelloView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
end = point;
Invalidate();
CView::OnLButtonUp(nFlags, point);
}
void CHelloView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
if (nFlags & MK_LBUTTON)
{
end = point;
Invalidate();
}
CView::OnMouseMove(nFlags, point);
}
펜 - 색 변경, 브러시
void CHelloView::OnDraw(CDC* pDC)
{
CHelloDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.
CPen pen, * pOldPen;
CBrush brush, * pOldBrush;
pen.CreatePen(PS_SOLID, 5, RGB(255, 0, 0));
pOldPen = pDC->SelectObject(&pen);
brush.CreateSolidBrush(RGB(0, 0, 255));
pOldBrush = pDC->SelectObject(&brush);
pDC->TextOut(100, 100, str);
pDC->Rectangle(start.x, start.y, end.x, end.y);
pDC->Ellipse(start.x, start.y, end.x, end.y);
pDC->MoveTo(start.x, start.y);
pDC->LineTo(end);
pDC->SelectObject(pOldPen);
pen.DeleteObject();
pDC->SelectObject(pOldBrush);
brush.DeleteObject();
}
도형그리기
void CHelloView::OnDraw(CDC* pDC)
{
CHelloDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.
CPen pen, * pOldPen;
CBrush brush, * pOldBrush;
pen.CreatePen(PS_DOT, 1, RGB(255, 0, 0));
pOldPen = pDC->SelectObject(&pen);
brush.CreateSolidBrush(br_Color); // COLORREF == RGB(255, 255, 255);
pOldBrush = pDC->SelectObject(&brush);
pDC->TextOut(100, 100, str);
pDC->Rectangle(start.x, start.y, end.x, end.y);
pDC->Ellipse(start.x, start.y, end.x, end.y);
pDC->MoveTo(start.x, start.y);
pDC->LineTo(end);
pDC->SelectObject(pOldPen);
pen.DeleteObject();
pDC->SelectObject(pOldBrush);
brush.DeleteObject();
}
void CHelloView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
/*
if (nChar == VK_BACK)
str.Delete(str.GetLength() - 1);
else
str.AppendChar(nChar);
Invalidate();
*/
switch (nChar) {
case 'r':
br_Color = RGB(255, 0, 0);
break;
case 'g':
br_Color = RGB(0, 255, 0);
break;
case 'b':
br_Color = RGB(0, 0, 255);
break;
}
CView::OnChar(nChar, nRepCnt, nFlags);
}
void CHelloView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
start.x = point.x;
start.y = point.y;
CView::OnLButtonDown(nFlags, point);
}
void CHelloView::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
end = point;
Invalidate();
CView::OnLButtonUp(nFlags, point);
}
void CHelloView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
if (nFlags & MK_LBUTTON)
{
end = point;
Invalidate();
}
CView::OnMouseMove(nFlags, point);
}