최호성님의 VISUAL C++ 2008 MFC 윈도우 프로그래밍을 학습한 뒤 정리한 내용입니다.
SDI 문서/뷰 구조를 갖는 MFC 응용 프로그램을 개발할 때 최상위 프레임 윈도우에 해당하는 클래스는 CMainFrame 클래스이며, 이 클래스는 CFrameWnd 클래스를 상속받아 만듭니다. 다중 문서 인터페이스 프로그램은 CMDIFrameWnd 클래스로 대체됩니다. CFrameWnd는 윈도우가 가져야 할 기본 기능을 정의한 클래스이며 뷰, 도구 모음, 상태 표시줄 등을 자식 윈도우로 취할 수 있습니다.
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("도구 모음을 만들지 못했습니다.\n"); return -1; // 만들지 못했습니다. } if (!m_wndStatusBar.Create(this)) { TRACE0("상태 표시줄을 만들지 못했습니다.\n"); return -1; // 만들지 못했습니다. } m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)); // TODO: 도구 모음을 도킹할 수 없게 하려면 이 세 줄을 삭제하십시오. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); return 0; }
CMainFram 클래스의 OnCreate() 함수는 WM_CREATE 메시지 핸들러 함수입니다. 이 함수 안에서 도구 모음(m_wndToolBar)과 상태 표시줄(m_wndStatusBar)이 생성됩니다. 함수 하단에는 도구 모음을 프레임 윈도우에 붙이는 Docking 코드입니다.