2008-10-13 3 views
1

스플리터가있는 메인 프레임이 있습니다. 왼쪽에는 상상력이 풍부한 CAppView_Leftand가 있고 오른쪽에는 CAppView_Right_1과 CAppView_Right_2가 있습니다. 다음 코드를 통해 내가 올바르게 두 가지 기본 뷰를 초기화 :여러 개의 상호 교환 뷰 (MFC/C++)

if (!m_wndSplitter.CreateStatic(this, 1, 2)) 
{ 
    TRACE0("Failed to CreateStaticSplitter\n"); 
    return FALSE; 
} 
else 
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CAppView_Left), CSize(300, 200), pContext)) 
{ 
    TRACE0("Failed to create left pane\n"); 
    return FALSE; 
} 
else 
if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CAppView_Right_1), CSize(375, 200), pContext)) 
{ 
    TRACE0("Failed to create first right pane\n"); 
    return FALSE; 
} 

...이를 추가 할 때 나는 그러나, 오른쪽 프레임 내부의 두 번째 뷰를 생성하면됩니다 싶습니다 무엇

:

if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CAppView_Right_2), CSize(375, 200), pContext)) 
{ 
    TRACE0("Failed to create first right pane\n"); 
    return FALSE; 
} 

VS 컴파일하지만 난 이미 뷰를 정의한 말해 예외를 발생시키는 응용 프로그램을 실행하는 데 실패합니다.

내가 어떻게하는지 제안 할 수 있습니까? 또한보기 또는 문서 클래스에서 뷰를 변경하는 방법은 무엇입니까?

감사합니다.

답변

1

당신은 당신이 원하는 것을 달성 할 수 있도록해야 CodeProject의 기사가 :

http://www.codeproject.com/KB/splitter/usefulsplitter.aspx

내가 전에 스플리터의 전망을 대체했다가 , 위의 코드가 도움이되지 않으면 내 자신의 코드 일부를 게시 할 것입니다.

+0

고마워요! 나는 codeproject에 대한 다른 예제를 찾았지만 아무 것도 그처럼 효율적이지 않았습니다. 많은 감사! :) – Konrad

0

당신의

m_wndSplitter.CreateStatic(this, 1, 2) 

두 개의 열을 생성에만 있기 때문에 두 번째 오른쪽 뷰를 만들 수 없습니다. 당신은

m_wndSplitter.CreateStatic(this, 1, 3) 

로 변경하고 별도의 전망과 함께 세 개의 열 각각

if (!m_wndSplitter.CreateView(0, 2, RUNTIME_CLASS(CAppView_Right_2), CSize(375, 200), pContext)) 
{  
TRACE0("Failed to create first right pane\n"); 
return FALSE; 
} 

이 결과에 두 번째 바로보기를 변경할 수 있습니다. 기존 뷰 중 하나를 분할하는 추가 스플리터 창을 생성 할 수도 있습니다 (예 : m_view2이 두 번째보기이었다

m_wndSplitter2.CreateStatic(m_View2, 2, 1) 

같은

+0

입력 해 주셔서 감사합니다. 세 개의 창을 만들고 싶지 않습니다. 내가 가지고있는 두 개의 창에 만족합니다. 오른쪽 창에서 서로 다른 두 가지보기 (바꾸어 말하면)를 사용할 수 있기를 원합니다. – Konrad

0

보기를 전환하려면 다른보기를 생성하기 전에 명시 적으로 DeleteView가 필요합니다.

상호 교환 가능한보기의 상태를 유지해야하는 경우보기에서 문서에서 상태를 초기화 할 수있게하는 것이 좋습니다. 보기 중 하나를 삭제하고 다시 만드는 사이에 고착해야하는 상태로 문서를 업데이트 할 때주의하십시오.

관련 문제