메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

C/C++/MFC

WINDOW 3개의 분할 뷰^^

2006.05.23 13:35

WAT_운영자 조회 수:12171

개의 분할 뷰에 대한 저의 소스를 보여드리겠습니다.

왼쪽에 (위, 아래로) 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으로 메일 주세요.^^