MFC/윈도우 프로그래밍

MFC 윈도우 프로그래밍 1장 심화문제

꾸준함. 2018. 3. 9. 23:06

윈도우 프로그래밍 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


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~


반응형