336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
전 편에 올렸던 소스와 달라진 부분 위주로 주석을 올립니다.
stdafx.h로 공통 헤더 설정하기
파일명: stdafx.h
#ifndef __STDAFX_H #include <afxwin.h> #include <afxext.h> #include "resource.h" #endif
CWinApp를 구현하기
파일명: CTestApp.h
#pragma once class CTestApp : public CWinApp { public: CTestApp(); public: virtual BOOL InitInstance(); DECLARE_MESSAGE_MAP() }; extern CTestApp theApp;
파일명: CTestApp.cpp
#include "stdafx.h" #include "CTestApp.h" #include "CMainFrame.h" CTestApp theApp; BEGIN_MESSAGE_MAP(CTestApp, CWinApp) END_MESSAGE_MAP() CTestApp::CTestApp() { } BOOL CTestApp::InitInstance() { BOOL ret = CWinApp::InitInstance(); if(ret) { CMainFrame * lpMainFrame = new CMainFrame(); lpMainFrame->Create(NULL, TEXT("Hello, World!")); lpMainFrame->ShowWindow(SW_SHOW); lpMainFrame->UpdateWindow(); this->m_pMainWnd = lpMainFrame; } return ret; }
CFrameWnd로 메인 윈도우 구현
파일명: CMainFrame.h
#pragma once class CMainFrame : public CFrameWnd { private: // 윈도우에 넣을 메뉴를 다루는 인스턴스입니다. CMenu m_menu; public: CMainFrame(); ~CMainFrame(); protected: // 창이 생성될 때 이벤트 핸들러를 재정의합니다. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); DECLARE_MESSAGE_MAP() };
파일명: CMainFrame.cpp
#include "stdafx.h" #include "CMainFrame.h" BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_CREATE() END_MESSAGE_MAP() CMainFrame::CMainFrame() { CFrameWnd::CFrameWnd(); } CMainFrame::~CMainFrame() { } // 창이 생성될 때 처리할 내용이 담긴 이벤트 핸들러를 구현합니다. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { // 작업에 앞서 부모 클래스의 OnCreate를 먼저 호출합니다. 그 반환값을 이 메서드의 반환값으로 삼습니다. int ret = CFrameWnd::OnCreate(lpCreateStruct); // assert를 위한 임시 변수입니다. BOOL assert; if(ret != -1) { // 리소스 상 메뉴의 이름은 IDR_MENU1입니다. 이 이름의 리소스를 LoadMenu 메서드를 통해 불러옵니다. // LoadMenu 메서드는 리소스로부터 지정한 메뉴를 불러오는데 성공하면 TRUE, 그렇지 않다면 FALSE를 반환합니다. // 뒤이어 실행되는 ASSERT는 메서드의 반환 값이 TRUE인지 FALSE인지를 판단하여 // FALSE이면 프로그램을 중지하여 디버거가 이 위치를 추적해올 수 있도록 합니다. assert = this->m_menu.LoadMenu(MAKEINTRESOURCE(IDR_MENU1)); ASSERT(assert); // 불러온 메뉴를 이 창의 메뉴로 설정합니다. this->SetMenu(&this->m_menu); } return ret; }
실행 결과
메뉴 리소스 IDR_MENU1은 아래와 같은 모양으로 만들었습니다.
SetMenu를 통해 리소스 메뉴가 창 메뉴로 사용되었습니다.
'Application Programming Interface > Microsoft Foundation Class' 카테고리의 다른 글
MFC 기본 컨트롤 - ListBox의 사용법 (0) | 2018.01.25 |
---|---|
MFC 기본 컨트롤 - CComboBox 사용법 (0) | 2017.10.09 |
마법사 없이 SDI Frame-View-Document를 사용하는 최소 구조 (0) | 2013.05.03 |
마법사 없이 코딩만으로 리본 UI 구현하기 (1) (0) | 2013.03.13 |
1. MFC 시작하기 (0) | 2012.11.13 |