본문 바로가기

Windows 프로그래밍

02. MFC 개요 및 아키텍처

728x90
반응형

 

실습 2-1

 

개발 환경

보기 > 솔루션 탐색기

 

 


실습 2-2

 

윈도우 크기를 나타내는 멤버 변수 추가

 

CMFC22View

// MFC_2_2View.h: CMFC22View 클래스의 인터페이스
//

#pragma once


class CMFC22View : public CView
{
protected: // serialization에서만 만들어집니다.
	CMFC22View() noexcept;
	DECLARE_DYNCREATE(CMFC22View)

// 특성입니다.
public:
	CMFC22Doc* GetDocument() const;

// 작업입니다.
public:

// 재정의입니다.
public:
	virtual void OnDraw(CDC* pDC);  // 이 뷰를 그리기 위해 재정의되었습니다.
	virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
	virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
	virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
	virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);

// 구현입니다.
public:
	virtual ~CMFC22View();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// 생성된 메시지 맵 함수
protected:
	DECLARE_MESSAGE_MAP()
public:
	Cstring m_strWindowSize;
};

#ifndef _DEBUG  // MFC_2_2View.cpp의 디버그 버전
inline CMFC22Doc* CMFC22View::GetDocument() const
   { return reinterpret_cast<CMFC22Doc*>(m_pDocument); }
#endif

 

 

void CMFC22View::OnSize(UINT nType, int cx, int cy)
{
	CView::OnSize(nType, cx, cy);

	// TODO: 여기에 메시지 처리기 코드를 추가합니다.
}

 

 

< MFC2_2View.h* 와 MFC2_2View.cpp* 의 차이>

void CMFC22View::OnDraw(CDC* pDC)
{
	CMFC22Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.
	// 윈도우 크기를 나타내는 문자열을 윈도우 좌측 상단 (10, 10)에 출력
	pDC->TextOut(10, 10, m_strWindowSize);

}

 


+ _T 는 무엇인지?

_T("문자열") = "문자열" 이라고 생각

 

CString m_strOutput;

변수 추가 후 코드 수정

void CMFC22View::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
	m_strOutput = _T("왼쪽 마우스 버튼을 눌렀습니다. ");
	Invalidate();

	CView::OnLButtonDown(nFlags, point);
}


void CMFC22View::OnRButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
	m_strOutput = _T("오른쪽 마우스 버튼을 눌렀습니다. ");
	Invalidate();
	CView::OnRButtonDown(nFlags, point);
}


void CMFC22View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
	m_strOutput = _T("키보드를 눌렀습니다. ");
	Invalidate();
	CView::OnKeyDown(nChar, nRepCnt, nFlags);
}

 

<키보드 메세지 처리>

void CMFC22View::OnDraw(CDC* pDC)
{
	CMFC22Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;

	// TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.
	// 윈도우 크기를 나타내는 문자열을 윈도우 좌측 상단 (10, 10)에 출력
	pDC->TextOut(10, 10, m_strWindowSize);
	CRect rect;
	GetClientRect(&rect);
	pDC->DrawText(m_strOutput, rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

}

728x90
반응형

'Windows 프로그래밍' 카테고리의 다른 글

03. 메세지 처리  (2) 2023.10.09