티스토리 뷰

MFC

[MFC] 메세지 맵, 상단 메뉴 사용 등

열혈허슬러 상추님 2019.09.24 16:47
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
 
댓글
댓글쓰기 폼