C/C++/MFC
WINDOW 3개의 분할 뷰^^
2006.05.23 13:35
개의 분할 뷰에 대한 저의 소스를 보여드리겠습니다.
왼쪽에 (위, 아래로) 2개, 오른쪽에 하나.......총 3개로 나누었습니다.
ㅣ-------ㅜ--------ㅣ
ㅣ ㅣ ㅣ
ㅣ-------ㅣ ㅣ
ㅣ ㅣ ㅣ
ㅣ-------ㅗ--------ㅣ
헤더 파일에
public:
CSplitterWnd m_wndSplitter,m_wndSplitter2;
cpp 파일에 아래와 같이 추가한다.
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT / * lpcs * /,
CCreateContext* pContext)
{
// 크게 가운데를 중심으로 2개로 나눈다.
if(!m_wndSplitter.CreateStatic(this, 1, 2))
{
TRACE0(\"Failed to Create splitter bar\");
return FALSE;
}
// 뷰를 3등분 by yunskorea
int m_IDpane = m_wndSplitter.IdFromRowCol(0, 0);
// 왼쪽의 분할 부분을 수평선으로 나눈다.
if(!m_wndSplitter2.CreateStatic(&m_wndSplitter, 2, 1, WS_CHILD|WS_VISIBLE|WS_BORDER, m_IDpane))
{
TRACE0(\"Failed to Create left horizontal splitter bar\");
return FALSE;
}
// 각각의 분할뷰에 대한 View Class를 지정하고, 사이즈를 정해준다.(각 View Class에 대한 헤더파일 필요^^)
m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CFileToolView), CSize(200, 30), pContext);
m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CFileListView), CSize(200, 0), pContext);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMainView), CSize(0, 0), pContext);
// 사이즈 정보를 지정해 준다.
m_wndSplitter.SetColumnInfo( 0, 300, 0);
// 0, 0의 뷰를 Active View로 설정한다.
m_wndSplitter.SetActivePane(0, 0);
// 이 3개의 포인터 변수들은......어느 뷰에서...다른 뷰를 참조하기 쉽도록....각각의 분할 뷰의 포인터를 저장해 놓았음.
m_pFileToolVIew = (CFileToolView*)m_wndSplitter2.GetPane(0, 0);
m_pFileListView = (CFileListView*)m_wndSplitter2.GetPane(1, 0);
m_pMainView = (CMainView*)m_wndSplitter.GetPane(0, 1);
return true;
}
의문점 있으시면 언제든지, yunskorea#naver.com으로 메일 주세요.^^
왼쪽에 (위, 아래로) 2개, 오른쪽에 하나.......총 3개로 나누었습니다.
ㅣ-------ㅜ--------ㅣ
ㅣ ㅣ ㅣ
ㅣ-------ㅣ ㅣ
ㅣ ㅣ ㅣ
ㅣ-------ㅗ--------ㅣ
헤더 파일에
public:
CSplitterWnd m_wndSplitter,m_wndSplitter2;
cpp 파일에 아래와 같이 추가한다.
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT / * lpcs * /,
CCreateContext* pContext)
{
// 크게 가운데를 중심으로 2개로 나눈다.
if(!m_wndSplitter.CreateStatic(this, 1, 2))
{
TRACE0(\"Failed to Create splitter bar\");
return FALSE;
}
// 뷰를 3등분 by yunskorea
int m_IDpane = m_wndSplitter.IdFromRowCol(0, 0);
// 왼쪽의 분할 부분을 수평선으로 나눈다.
if(!m_wndSplitter2.CreateStatic(&m_wndSplitter, 2, 1, WS_CHILD|WS_VISIBLE|WS_BORDER, m_IDpane))
{
TRACE0(\"Failed to Create left horizontal splitter bar\");
return FALSE;
}
// 각각의 분할뷰에 대한 View Class를 지정하고, 사이즈를 정해준다.(각 View Class에 대한 헤더파일 필요^^)
m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CFileToolView), CSize(200, 30), pContext);
m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CFileListView), CSize(200, 0), pContext);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMainView), CSize(0, 0), pContext);
// 사이즈 정보를 지정해 준다.
m_wndSplitter.SetColumnInfo( 0, 300, 0);
// 0, 0의 뷰를 Active View로 설정한다.
m_wndSplitter.SetActivePane(0, 0);
// 이 3개의 포인터 변수들은......어느 뷰에서...다른 뷰를 참조하기 쉽도록....각각의 분할 뷰의 포인터를 저장해 놓았음.
m_pFileToolVIew = (CFileToolView*)m_wndSplitter2.GetPane(0, 0);
m_pFileListView = (CFileListView*)m_wndSplitter2.GetPane(1, 0);
m_pMainView = (CMainView*)m_wndSplitter.GetPane(0, 1);
return true;
}
의문점 있으시면 언제든지, yunskorea#naver.com으로 메일 주세요.^^