윈도우 프로그래밍 Visual C++ 2010 MFC Programming(김선우, 신화서 저) 1장 심화문제입니다.
학교에서는 MFC 프로그래밍을 주로 하기 때문에 MFC 문제들만 풀어봤습니다.
[1-2]
#include <afxwin.h>
//응용 프로그램 클래스 선언
class CHelloApp :public CWinApp
{
public:
CWnd *m_pMainWnd2; //두개를 띄우기 위해
virtual BOOL InitInstance();
};
//메인 윈도우 클래스 선언
class CMainFrame :public CFrameWnd
{
public:
CMainFrame();
protected:
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP();
};
//응용 프로그램 객체 선언
CHelloApp theApp;
//응용 프로그램 클래스 정의
BOOL CHelloApp::InitInstance()
{
//m_pMainWnd2에도 동일한 작업을 진행하면 된다
m_pMainWnd = new CMainFrame();
m_pMainWnd2 = new CMainFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd2->ShowWindow(m_nCmdShow);
return TRUE;
}
//메인 윈도우 클래스 정의
CMainFrame::CMainFrame()
{
Create(NULL, _T("HelloMFC"));
}
void CMainFrame::OnPaint()
{
CPaintDC dc(this);
TCHAR *msg = _T("Hello, MFC");
dc.TextOutW(100, 100, msg, lstrlen(msg));
}
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)
{
MessageBox(_T("마우스 클릭!"), _T("마우스 메시지"));
}
//메시지 맵 선언
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
[1-3]
/*
마우스 왼쪽 버튼을 한 번 클릭할 때가 아닌 더블 클릭 때 메시지 상자가 나타나도록
HelloMFC 예제를 수정하시오.
단, 메시지 맵을 사용하지 않고 가상 함수를 상속하는 방식으로 처리
*/
#include <afxwin.h>
//응용 프로그램 클래스 선언
class CHelloApp :public CWinApp
{
public:
virtual BOOL InitInstance();
};
//메인 윈도우 클래스 선언
class CMainFrame :public CFrameWnd
{
public:
CMainFrame();
virtual BOOL PreTranslateMessage(MSG *pMsg); //가상함수 상속
protected:
afx_msg void OnPaint();
//afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
DECLARE_MESSAGE_MAP();
};
//응용 프로그램 객체 선언
CHelloApp theApp;
//응용 프로그램 클래스 정의
BOOL CHelloApp::InitInstance()
{
m_pMainWnd = new CMainFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
return TRUE;
}
//메인 윈도우 클래스 정의
CMainFrame::CMainFrame()
{
Create(NULL, _T("HelloMFC"));
}
void CMainFrame::OnPaint()
{
CPaintDC dc(this);
TCHAR *msg = _T("Hello, MFC");
dc.TextOutW(100, 100, msg, lstrlen(msg));
}
/*
void CMainFrame::OnLButtonDown(UINT nFlags, CPoint point)
{
MessageBox(_T("마우스 클릭!"), _T("마우스 메시지"));
}
*/
BOOL CMainFrame::PreTranslateMessage(MSG *pMsg)
{
if (pMsg->message == WM_LBUTTONDBLCLK)
{
MessageBox(_T("마우스 더블클릭!"), _T("마우스 메시지"));
}
return CFrameWnd::PreTranslateMessage(pMsg);
}
//메시지 맵 선언
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_PAINT()
//ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'MFC > 윈도우 프로그래밍' 카테고리의 다른 글
MFC 윈도우 프로그래밍 3장 연습문제(1~8) (0) | 2018.03.18 |
---|---|
MFC 윈도우 프로그래밍 2장 심화문제 (2) | 2018.03.13 |
MFC 윈도우 프로그래밍 2장 연습문제(8~16) (0) | 2018.03.12 |
MFC 윈도우 프로그래밍 2장 연습문제(1~7) (0) | 2018.03.12 |
MFC 윈도우 프로그래밍 1장 연습문제 (0) | 2018.03.09 |