190716-1
.h
#pragma once
#include <afxwin.h>
class CClientDCU :
public CDC
{
HDC m_hDCu;
HWND m_hWndu;
public:
CClientDCU(CWnd* pWnd);
~CClientDCU();
void Ellipse(int x1, int y1, int x2, int y2)const;
};
.cpp
#include "pch.h"
#include "CClientDCU.h"
CClientDCU::CClientDCU(CWnd* pWnd)
{
m_hWndu = pWnd->m_hWnd;
m_hDCu = ::GetDC(m_hWndu);
}
CClientDCU::~CClientDCU()
{
::ReleaseDC(m_hWndu, m_hDCu);
}
void CClientDCU::Ellipse(int x1, int y1, int x2, int y2) const
{
::Ellipse(m_hDCu, x1, y1, x2, y2);
}
View
void CDCTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
CClientDCU dc(this);
dc.Ellipse(point.x, point.y, point.x + 100, point.y + 100);
CView::OnLButtonDown(nFlags, point);
}
DC 사용하는 2가지
void CDCTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
//1번
CClientDCU dc(this);
dc.EllipseU(point.x, point.y, point.x + 100, point.y + 100);
//2번(사용자 클래스)
CDC* pDC = GetDCU();
((CClientDCU*)pDC)->EllipseU(point.x, point.y, point.x + 100, point.y + 100);
ReleaseDCU(pDC);
CView::OnLButtonDown(nFlags, point);
}
- WindowProc 재정의
개발자가 메세지 처리를 할 수 있다. (ex. WM_RBUTTONDOWN 메세지를 받자마자 종료함으로써 마우스클릭 필터링을 적용(클릭무시)할 수 있다.)
-afx_msg : 표준 메세지들에 대한 메세지 핸들러 라는 것을 의미한다. 관례에 따라 "On"으로 시작한다.
-'OffsetRect()' : 사각형을 늘리거나 줄인다.
- 도형선택
- 메세지맵
BEGIN_MESSAGE_MAP(CDrawView, CView)
// 표준 인쇄 명령입니다.
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
ON_WM_LBUTTONDOWN()
ON_WM_RBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_PAINT()
ON_COMMAND(ID_LINE, &CDrawView::OnLine)
ON_COMMAND(ID_RECTANGLE, &CDrawView::OnRectangle)
ON_COMMAND(ID_ELLIPSE, &CDrawView::OnEllipse)
END_MESSAGE_MAP()
-메뉴 UPDATE_COMMAND_UI 사용하기
OnUpdateRectangle SetRadio pCmdUI
'MFC' 카테고리의 다른 글
[MFC] 스크롤바 설정(제한), Using Views in Frames (0) | 2019.11.07 |
---|---|
[MFC] Calling up mainframe, Modaless dialog (0) | 2019.11.06 |
[MFC] Modal Dialog, Databinding 직접해주기 (0) | 2019.11.05 |
[MFC] SetModifiedFlag, 새파일, 직렬화, 다형성을 이용한 도형그리기 (0) | 2019.11.04 |
MFC (Microsoft Foundation Classes) (0) | 2019.09.23 |