본문 바로가기

카테고리 없음

7. CFrameWnd 클래스

최호성님의 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 코드입니다.