정적 분할 윈도우는 분할된 채로 응용 프로그램이 실행된다.
정적 분할 윈도우를 만들어보자.
1.MFC 설정은 아래와 같이 한다.
2.프로젝트에 MFC 클래스 세 개를 등록한다.
클래스의 이름은 CLeftListView ,CTopHtmlView ,CBottomEditView
순으로 하고 순서대로 형식을 CListView,CHtmlView,CEditView 순으로 한다
3.CMainFrame 클래스에 다음과 같이 CSplitterWnd 형 변수 2개를 추가한다.
class CMainFrame : public CFrameWnd
{
protected: // serialization에서만 만들어집니다.
CMainFrame();
DECLARE_DYNCREATE(CMainFrame)
// 특성입니다.
public:
CSplitterWnd m_wndSplitHor;
CSplitterWnd m_wndSplitver;
4.CMainFrame.cpp 에 아래와 같이 include 구문을 추가한다.
#include "LeftListView.h"
#include "TopHtmleView.h"
#include "BootomEditView.h"
5.CMainFrame 클래스에 OnCreateClient() 가상 함수를 재정의한 후
다음과 같이 코드를 추가한다
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
//1.우선 첫 번쨰로 1행 2열로 윈도우를 정적 분할한다.
if(!m_wndSplitHor.CreateStatic(this,1,2))
{
return false;
}
//2.첫 번째열 (0,0)에 해당하는 뷰 클래스를 붙인다.
if(!m_wndSplitHor.CreateView(0,0,
RUNTIME_CLASS(CLeftListView),CSize(200,200),pContext))
{
return false;
}
//3.두 번쨰 뷰를 다시 2행 1열로 정적 분할한다.
if(!m_wndSplitver.CreateStatic(&m_wndSplitHor,2,1,
WS_CHILD | WS_VISIBLE,
m_wndSplitHor.IdFromRowCol(0,1)))
//4.두 번째로 정적 분할된 왼도우에 첫 번째 뷰를 붙인다.
if(!m_wndSplitver.CreateView(0,0,
RUNTIME_CLASS(CTopHtmleView),CSize(100,300),pContext))
{
return false;
}
//5.두 번째로 정적 분할된 왼도우에 두 번쨰 뷰를 붙인다.
if(!m_wndSplitver.CreateView(1,0,
RUNTIME_CLASS(CBootomEditView),CSize(200,100),pContext))
{
return false;
}
//6.왼쪽의 뷰에 포커스를 준다.
SetActiveView((CView*)m_wndSplitHor.GetPane(0,0));
return true;
//return CFrameWnd::OnCreateClient(lpcs, pContext);
}
6.CLeftListView 클래스에 WM_CREATE 시지 핸들러 함수를 등록해 다음과 같이 코드를 작성한다.
int CLeftListView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CListView::OnCreate(lpCreateStruct) == -1)
return -1;
CListCtrl& List = GetListCtrl();
List.InsertColumn(0,_T("Name"),LVCFMT_LEFT,200);
List.InsertItem(0,_T("Park-Da-Sol"));
List.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
}
7.CTopHtmlView 클래스에 OnlnitialUpdate() 가상 함수를 재정의 하여 다음과 같은
코드를 추가하였을때 윈도우 탐색기 와 비슷하게 보여질수 있다.
void CTopHtmlView::OnInitialUpdate()
{
CHtmlView::OnInitialUpdate();
Navigate2(_T("c:\\"));
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
}
'C & C++ > MFC 컨트롤' 카테고리의 다른 글
[Dialog] Sliding Dialog (0) | 2011.04.26 |
---|---|
[Dialog] MFC MainFrm 아이콘 변경하기 (0) | 2011.04.26 |
[Radio] 라디오 버튼 체크해제 방법 (0) | 2011.04.25 |
[Slider] 슬라이더 컨트롤 (0) | 2011.04.25 |
[Dialog] 모서리가 둥근 윈도우 (0) | 2011.04.25 |
댓글