Pergunta

Eu tenho um quadro principal com um divisor. À esquerda, eu tenho a minha CAppView_Leftand (imaginativamente chamado) sobre o direito que tenho CAppView_Right_1and CAppView_Right_2. Através do seguinte código que inicializar as duas visões primárias corretamente:

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;
}

...

O que eu gostaria de fazer é criar um segundo ponto de vista dentro do quadro à direita, no entanto, quando eu tento adicionar o seguinte:

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 compila mas não consegue executar o aplicativo, levantando uma exceção dizendo que eu já definiu a vista.

Alguém pode sugerir como eu faço isso? Além disso, como alternar entre os pontos de vista de uma visão ou a classe de documento?

Foi útil?

Solução

Há um artigo CodeProject que deve ajudá-lo a conseguir o que deseja:

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

Eu substituí vistas em um divisor de antes, por isso, se o acima não ajudar eu vou postar algumas de meu próprio código.

Outras dicas

Você não pode criar uma segunda vista mão direita porque sua

m_wndSplitter.CreateStatic(this, 1, 2) 

Só criou duas colunas. Você poderia mudar isso para

m_wndSplitter.CreateStatic(this, 1, 3)

e mudar a sua segunda visão direito de

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;
}

Isso resulta em três colunas, cada uma com uma visão separada. Você também pode criar uma janela de separador adicional para dividir uma das vistas existentes, por exemplo, algo como

m_wndSplitter2.CreateStatic(m_View2, 2, 1)

onde m_view2 foi sua segunda visão

Para alternar entre as vistas, você vai precisar explicitamente DeleteView antes de criar outro ponto de vista em seu lugar.

Se você precisar preservar o estado dos pontos de vista intercambiáveis, é melhor você fazer as vistas ser capaz de inicializar o estado do documento. Tenha o cuidado de atualizar o documento com qualquer estado que precisa ficar por aqui entre exclusão e recriação de uma das vistas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top