윈도우 프로그래밍 Visual C++ 2010 MFC Programming(김선우, 신화서 저) 1장 연습문제입니다.
학교에서는 MFC 프로그래밍을 주로 하기 때문에 MFC 문제들만 풀어봤습니다.
[1-5]
/*
HelloMFC 예제가 무조건 윈도우 최대화 상태로 실행되도록 수정하시오
*/
#include <afxwin.h>
//응용 프로그램 클래스 선언
class CHelloApp :public CWinApp
{
public:
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_pMainWnd = new CMainFrame();
//m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->ShowWindow(SW_MAXIMIZE);
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-7]
/*
마우스 왼쪽 버튼을 누르면 다음과 같이 <확인>/<취소> 버튼이 있는 메시지 상자가
나타나도록 HelloMFC 예제를 수정하시오
*/
#include <afxwin.h>
//응용 프로그램 클래스 선언
class CHelloApp :public CWinApp
{
public:
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_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("마우스 메시지"), MB_OKCANCEL); //MB_OKCANCEL 추가
}
//메시지 맵 선언
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
[1-9]
/*
마우스 오른쪽 버튼을 누르면 다음과 같이 느낌표(!) 아이콘이 있는 메시지 상자가
나타나도록 HelloMFC 예제를 수정하시오
책의 힌트에서는 CWnd::MessageBox() 함수의 세 번째 인자 이용하라고 했지만
저는 메인 윈도우 클래스에 OnRButtonDown() 함수를 선언하고 매크로에 추가했습니다.
*/
#include <afxwin.h>
//응용 프로그램 클래스 선언
class CHelloApp :public CWinApp
{
public:
virtual BOOL InitInstance();
};
//메인 윈도우 클래스 선언
class CMainFrame :public CFrameWnd
{
public:
CMainFrame();
protected:
afx_msg void OnPaint();
//afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnRButtonDown(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("마우스 메시지"));
}
*/
void CMainFrame::OnRButtonDown(UINT nFlags, CPoint point)
{
MessageBox(_T("마우스 우클릭!"), _T("마우스 메시지"));
}
//메시지 맵 선언
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_PAINT()
//ON_WM_LBUTTONDOWN()
ON_WM_RBUTTONDOWN()
END_MESSAGE_MAP()
[1-11]
/*
기존 윈도우 대신 캡션이 있는 팝업 윈도우를 생성하도록
HelloMFC 예제를 수정하시오
*/
#include <afxwin.h>
//응용 프로그램 클래스 선언
class CHelloApp :public CWinApp
{
public:
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_pMainWnd = new CMainFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
return TRUE;
}
//메인 윈도우 클래스 정의
CMainFrame::CMainFrame()
{
//팝업 윈도우 위치와 크기 지정
RECT frame = { 20, 40, 480, 320 }; //왼쪽 위 x좌표, 왼쪽 위 y 좌표, 오른쪽 아래 x좌표, 오른쪽 아래 y좌표
Create(NULL, _T("HelloMFC"), WS_POPUPWINDOW | WS_CAPTION, frame);
}
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-13]
/*
HelloMFC 예제가 최상위(메인) 윈도우로 실행되도록 수정하시오
*/
#include <afxwin.h>
//응용 프로그램 클래스 선언
class CHelloApp :public CWinApp
{
public:
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_pMainWnd = new CMainFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
return TRUE;
}
//메인 윈도우 클래스 정의
CMainFrame::CMainFrame()
{
RECT frame = { 20, 40, 480, 320 };
//Create(NULL, _T("HelloMFC"));
CreateEx(0, NULL, _T("HelloMFC"), WS_EX_TOPMOST, frame, NULL, NULL);
}
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-15]
/*
명령행 인자를 입력했을 때 "명령행 인자를 처리할 수 없습니다.\n계속 진행하시겠습니까?라는
메시지 상자를 띄워 <예> 버튼을 누르면 진행, <아니오> 버튼을 누르면 종료하도록
HelloMFC 예제를 수정하시오
*/
#include <afxwin.h>
//응용 프로그램 클래스 선언
class CHelloApp :public CWinApp
{
public:
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_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("명령행 인자를 처리할 수 없습니다.\n계속 진행하시겠습니까?"), _T("마우스 메시지"), MB_YESNO);
if (IDYES == AfxMessageBox(L"명령행 인자를 처리할 수 없습니다.\n계속 진행하시겠습니까?", MB_YESNO))
{
//계속 진행
}
else
{
AfxGetMainWnd()->SendMessage(WM_CLOSE); //프로그램 종료
}
}
//메시지 맵 선언
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
[1-16]
/*
HelloMFC 예제가 프로그램 종료 시 다음과 같은 메시지 상자를 띄우도록 수정하시오
*/
#include <afxwin.h>
//응용 프로그램 클래스 선언
class CHelloApp :public CWinApp
{
public:
virtual BOOL InitInstance();
virtual BOOL ExitInstance(); //추가
};
//메인 윈도우 클래스 선언
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_pMainWnd = new CMainFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
return TRUE;
}
//종료시
BOOL CHelloApp::ExitInstance()
{
MessageBox(NULL, _T("프로그램을 종료합니다"), _T("종료"), MB_OK);
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()
개발환경: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 |