Partilhar via


Classe CSplitterWnd

Fornece a funcionalidade de uma janela de divisor, que é uma janela que contém vários painéis.

Sintaxe

class CSplitterWnd : public CWnd

Membros

Construtores públicos

Nome Descrição
CSplitterWnd::CSplitterWnd Chame para construir um objeto CSplitterWnd.

Métodos públicos

Nome Descrição
CSplitterWnd::ActivateNext Executa o comando Próximo Painel ou Painel Anterior.
CSplitterWnd::CanActivateNext Verifica se o comando Próximo Painel ou Painel Anterior é possível no momento.
CSplitterWnd::Create Chame para criar uma janela de divisor dinâmico e anexá-la ao objeto CSplitterWnd.
CSplitterWnd::CreateScrollBarCtrl Cria um controle de barra de rolagem compartilhado.
CSplitterWnd::CreateStatic Chame para criar uma janela de divisor estático e anexá-la ao objeto CSplitterWnd.
CSplitterWnd::CreateView Chame para criar um painel em uma janela de divisor.
CSplitterWnd::DeleteColumn Exclui uma coluna da janela do divisor.
CSplitterWnd::DeleteRow Exclui uma linha da janela do divisor.
CSplitterWnd::DeleteView Exclui uma exibição da janela do divisor.
CSplitterWnd::DoKeyboardSplit Executa o comando de divisão de teclado, geralmente "Divisão de Janela".
CSplitterWnd::DoScroll Executa a rolagem sincronizada de janelas de divisão.
CSplitterWnd::DoScrollBy Rola as janelas divididas por um determinado número de pixels.
CSplitterWnd::GetActivePane Determina o painel ativo do foco ou do modo de exibição ativo no quadro.
CSplitterWnd::GetColumnCount Retorna a contagem de colunas do painel atual.
CSplitterWnd::GetColumnInfo Retorna informações sobre a coluna especificada.
CSplitterWnd::GetPane Retorna o painel na linha e coluna especificadas.
CSplitterWnd::GetRowCount Retorna a contagem de linhas do painel atual.
CSplitterWnd::GetRowInfo Retorna informações sobre a linha especificada.
CSplitterWnd::GetScrollStyle Retorna o estilo de barra de rolagem compartilhado.
CSplitterWnd::IdFromRowCol Retorna a ID da janela filho do painel na linha e coluna especificadas.
CSplitterWnd::IsChildPane Chame para determinar se a janela é atualmente um painel filho dessa janela de divisor.
CSplitterWnd::IsTracking Determina se a barra de divisor está sendo movida no momento.
CSplitterWnd::RecalcLayout Chame para exibir novamente a janela do divisor depois de ajustar o tamanho da linha ou da coluna.
CSplitterWnd::SetActivePane Define um painel para ser o ativo no quadro.
CSplitterWnd::SetColumnInfo Chame para definir as informações de coluna especificadas.
CSplitterWnd::SetRowInfo Chame para definir as informações de linha especificadas.
CSplitterWnd::SetScrollStyle Especifica o novo estilo de barra de rolagem para o suporte à barra de rolagem compartilhada da janela de divisor.
CSplitterWnd::SplitColumn Indica em que ponto uma janela de quadro é dividida verticalmente.
CSplitterWnd::SplitRow Indica em que ponto uma janela de quadro é dividida horizontalmente.

Métodos protegidos

Nome Descrição
CSplitterWnd::OnDraw Chamado pela estrutura para desenhar a janela do divisor.
CSplitterWnd::OnDrawSplitter Renderiza uma imagem de uma janela de divisão.
CSplitterWnd::OnInvertTracker Renderiza a imagem de uma janela de divisão para ter o mesmo tamanho e forma que a janela de quadro.

Comentários

Um painel geralmente é um objeto específico do aplicativo derivado CView, mas pode ser qualquer objeto CWnd que tenha a ID de janela filho apropriada.

Um objeto CSplitterWnd geralmente é inserido em um objeto CFrameWnd ou CMDIChildWnd pai. Crie um CSplitterWndobjeto usando as seguintes etapas:

  1. Insira uma variável CSplitterWnd de membro no quadro pai.

  2. Substitua a função de membro CFrameWnd::OnCreateClient do quadro pai.

  3. De dentro do OnCreateClient substituído, chame a função de membro Create ou CreateStatic de CSplitterWnd.

Chame a função de membro Create para criar uma janela de divisor dinâmico. Normalmente, uma janela de divisor dinâmico é usada para criar e rolar vários painéis individuais, ou exibições, do mesmo documento. A estrutura cria automaticamente um painel inicial para o divisor, então cria, redimensiona e descarta painéis adicionais à medida que o usuário opera os controles da janela do divisor.

Quando você chama Create, especifique um valor mínimo para a altura da linha e a largura da coluna para determinar quando os painéis são muito pequenos para serem exibidos totalmente. Depois de chamar Create, você pode ajustar esses mínimos chamando as funções de membro e SetColumnInfo SetRowInfo.

Use também as funções de membro SetColumnInfo e SetRowInfo para definir uma largura "ideal" para uma coluna e uma altura "ideal" para uma linha. Quando a estrutura exibe uma janela de divisor, ela exibe primeiro o quadro pai e então a janela do divisor. Em seguida, a estrutura define os painéis em colunas e linhas de acordo com suas dimensões ideais, trabalhando do canto superior esquerdo até o canto inferior direito da área de cliente da janela do divisor.

Todos os painéis em uma janela de divisor dinâmico devem ser da mesma classe. Aplicativos familiares que dão suporte a janelas de divisor dinâmico incluem Microsoft Word e Microsoft Excel.

Use a função de membro CreateStatic para criar uma janela de divisor estático. O usuário pode alterar apenas o tamanho dos painéis em uma janela de divisor estático, não seu número ou ordem.

Você deve criar especificamente todos os painéis do divisor estático ao criar o divisor estático. Crie todos os painéis antes que a função de membro OnCreateClient do quadro pai retorne, ou se a estrutura não exibirá a janela corretamente.

A função de membro CreateStatic inicializa automaticamente um divisor estático com uma altura mínima de linha e uma largura de coluna de 0. Depois de chamar Create, ajuste esses mínimos chamando as funções de membro SetColumnInfo e SetRowInfo. Use também SetColumnInfo e SetRowInfo depois de chamar CreateStatic para indicar as dimensões do painel ideais desejadas.

Os painéis individuais de um divisor estático geralmente pertencem a classes diferentes. Para exemplos de janelas de divisor estático, confira o editor de gráficos e o Gerenciador de Arquivos do Windows.

Uma janela de divisor dá suporte a barras de rolagem especiais (além das barras de rolagem que os painéis podem ter). Essas barras de rolagem são filhos do objeto CSplitterWnd e compartilhadas com os painéis.

Você cria essas barras de rolagem especiais ao criar a janela do divisor. Por exemplo, um CSplitterWnd que tem uma linha, duas colunas e o estilo WS_VSCROLL exibirá uma barra de rolagem vertical compartilhada pelos dois painéis. Quando o usuário move a barra de rolagem, as mensagens WM_VSCROLL são enviadas para ambos os painéis. Quando os painéis definem a posição da barra de rolagem, a barra de rolagem compartilhada é definida.

Para mais informações sobre janelas de divisor, confira a Nota Técnica 29.

Para mais informações sobre como criar janelas de divisor dinâmico, confira:

Hierarquia de herança

CObject

CCmdTarget

CWnd

CSplitterWnd

Requisitos

Cabeçalho: afxext.h

CSplitterWnd::ActivateNext

Chamado pela estrutura para executar o comando Próximo Painel ou Painel Anterior.

virtual void ActivateNext(BOOL bPrev = FALSE);

Parâmetros

bPrev
Indica qual janela ativar. TRUE para anterior; FALSE para seguinte.

Comentários

Essa função de membro é um comando de alto nível usado pela classe CView para delegar à implementação de CSplitterWnd.

CSplitterWnd::CanActivateNext

Chamado pela estrutura para verificar se o comando Próximo Painel ou Painel Anterior é possível no momento.

virtual BOOL CanActivateNext(BOOL bPrev = FALSE);

Parâmetros

bPrev
Indica qual janela ativar. TRUE para anterior; FALSE para seguinte.

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

Essa função de membro é um comando de alto nível usado pela classe CView para delegar à implementação de CSplitterWnd.

CSplitterWnd::Create

Para criar uma janela de divisor dinâmico, chame a função de membro Create.

virtual BOOL Create(
    CWnd* pParentWnd,
    int nMaxRows,
    int nMaxCols,
    SIZE sizeMin,
    CCreateContext* pContext,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
    UINT nID = AFX_IDW_PANE_FIRST);

Parâmetros

pParentWnd
A janela de quadro pai da janela de divisor.

nMaxRows
O número máximo de linhas na janela do divisor. O valor não deve exceder 2.

nMaxCols
O número máximo de colunas na janela do divisor. O valor não deve exceder 2.

sizeMin
Especifica o tamanho mínimo no qual um painel pode ser exibido.

pContext
Um ponteiro para uma estrutura CCreateContext. Na maioria dos casos, isso pode ser o pContext passado para a janela de quadro pai.

dwStyle
Especifica o estilo da janela.

nID
A ID da janela filho. A ID pode ser AFX_IDW_PANE_FIRST, a menos que a janela do divisor esteja aninhada dentro de outra janela de divisor.

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

Você pode inserir um CSplitterWnd em um objeto CFrameWnd ou CMDIChildWnd pai seguindo estas etapas:

  1. Insira uma variável CSplitterWnd de membro no quadro pai.

  2. Substitua a função de membro CFrameWnd::OnCreateClient do quadro pai.

  3. Chame a função de membro Create de dentro do OnCreateClient substituído.

Ao criar uma janela de divisor de dentro de um quadro pai, passe o parâmetro pContext do quadro pai para a janela do divisor. Caso contrário, esse parâmetro pode ser NULL.

A altura mínima inicial da linha e a largura da coluna de uma janela de divisor dinâmico são definidas pelo parâmetro sizeMin. Esses mínimos, que determinam se um painel é muito pequeno para ser mostrado em sua totalidade, podem ser alterados com as funções de membro SetRowInfo e SetColumnInfo.

Para mais informações sobre janelas de divisor dinâmico, confira "Janelas do Divisor" no artigo Vários tipos de documentos, exibições e janelas de quadro, Nota Técnica 29 e a visão geral da classe CSplitterWnd.

Exemplo

// the following function is created by the MFC Application Wizard
// when you select Split window from the User Interface Features tab:
BOOL CMyChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
   return m_wndSplitter.Create(this,
                               2, 2,          // TODO: adjust the number of rows, columns
                               CSize(10, 10), // TODO: adjust the minimum pane size
                               pContext);
}

CSplitterWnd::CreateScrollBarCtrl

Chamado pela estrutura para criar um controle de barra de rolagem compartilhado.

virtual BOOL CreateScrollBarCtrl(
    DWORD dwStyle,
    UINT nID);

Parâmetros

dwStyle
Especifica o estilo da janela.

nID
A ID da janela filho. A ID pode ser AFX_IDW_PANE_FIRST, a menos que a janela do divisor esteja aninhada dentro de outra janela de divisor.

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

Substitua CreateScrollBarCtrl para incluir controles extras ao lado de uma barra de rolagem. O comportamento padrão é criar controles normais da barra de rolagem do Windows.

CSplitterWnd::CreateStatic

Para criar uma janela de divisor estático, chame a função de membro CreateStatic.

virtual BOOL CreateStatic(
    CWnd* pParentWnd,
    int nRows,
    int nCols,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE,
    UINT nID = AFX_IDW_PANE_FIRST);

Parâmetros

pParentWnd
A janela de quadro pai da janela de divisor.

nRows
O número de linhas. O valor não deve exceder 16.

nCols
O número de colunas. O valor não deve exceder 16.

dwStyle
Especifica o estilo da janela.

nID
A ID da janela filho. A ID pode ser AFX_IDW_PANE_FIRST, a menos que a janela do divisor esteja aninhada dentro de outra janela de divisor.

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

A CSplitterWnd geralmente é inserida em um objeto CFrameWnd ou CMDIChildWnd pai seguindo estas etapas:

  1. Insira uma variável CSplitterWnd de membro no quadro pai.

  2. Substitua a função de membro OnCreateClient do quadro pai.

  3. Chame a função de membro CreateStatic de dentro do CFrameWnd::OnCreateClient substituído.

Uma janela de divisor estático contém um número fixo de painéis, muitas vezes de classes diferentes.

Ao criar uma janela de divisor estático, você deve, ao mesmo tempo, criar todos os seus painéis. A função de membro CreateView geralmente é usada para essa finalidade, mas você também pode criar outras classes não de exibição.

A altura mínima inicial da linha e a largura da coluna para uma janela de divisor estático é 0. Esses mínimos, que determinam quando um painel é muito pequeno para ser mostrado em sua totalidade, podem ser alterados com as funções de membro SetRowInfo e SetColumnInfo.

Para adicionar barras de rolagem a uma janela de divisor estático, adicione os estilos WS_HSCROLL e WS_VSCROLL a dwStyle.

Confira "Janelas de divisor" no artigo Vários tipos de documentos, exibições e quadros do Windows, Nota Técnica 29 e a visão geral da classe CSplitterWnd para saber mais sobre janelas de divisor estáticas.

CSplitterWnd::CreateView

Cria os painéis para uma janela de divisor estático.

virtual BOOL CreateView(
    int row,
    int col,
    CRuntimeClass* pViewClass,
    SIZE sizeInit,
    CCreateContext* pContext);

Parâmetros

row
Especifica a linha da janela do divisor na qual colocar o novo modo de exibição.

col
Especifica a coluna da janela do divisor na qual colocar o novo modo de exibição.

pViewClass
Especifica o CRuntimeClass da nova exibição.

sizeInit
Especifica o tamanho inicial da nova exibição.

pContext
Um ponteiro para um contexto de criação usado para criar a exibição (geralmente a função de membro pContext do CFrameWnd::OnCreateClient substituído do quadro pai na qual a janela do divisor está sendo criada).

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

Todos os painéis de uma janela de divisor estático devem ser criados antes que a estrutura exiba o divisor.

A estrutura também chama essa função de membro para criar painéis quando o usuário de uma janela de divisor dinâmico divide um painel, linha ou coluna.

Exemplo

// this function creates the panes for a static splitter window
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
   m_bSplitterCreated = m_wndSplitter.CreateStatic(this, 1, 2);
   // CMyView and CMyOtherView are user-defined views derived from CView
   m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView), CSize(0, 0),
                            pContext);
   m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyOtherView), CSize(0, 0),
                            pContext);

   return (m_bSplitterCreated);
}

CSplitterWnd::CSplitterWnd

Chame para construir um objeto CSplitterWnd.

CSplitterWnd();

Comentários

Construa um objeto CSplitterWnd em duas etapas. Primeiro, chame o construtor, que cria o objeto CSplitterWnd; então, chame a função de membro Create, que cria a janela do divisor e a anexa ao objeto CSplitterWnd.

CSplitterWnd::DeleteColumn

Exclui uma coluna da janela do divisor.

virtual void DeleteColumn(int colDelete);

Parâmetros

colDelete
Especifica a coluna a ser excluída.

Comentários

Essa função de membro é chamada pela estrutura para implementar a lógica da janela de divisor dinâmico (ou seja, se a janela do divisor tem o estilo SPLS_DYNAMIC_SPLIT). Ele pode ser personalizado, juntamente com a função virtual CreateView, para implementar divisores dinâmicos mais avançados.

CSplitterWnd::DeleteRow

Exclui uma linha da janela do divisor.

virtual void DeleteRow(int rowDelete);

Parâmetros

rowDelete
Especifica a linha a ser excluída.

Comentários

Essa função de membro é chamada pela estrutura para implementar a lógica da janela de divisor dinâmico (ou seja, se a janela do divisor tem o estilo SPLS_DYNAMIC_SPLIT). Ele pode ser personalizado, juntamente com a função virtual CreateView, para implementar divisores dinâmicos mais avançados.

CSplitterWnd::DeleteView

Exclui uma exibição da janela do divisor.

virtual void DeleteView(
    int row,
    int col);

Parâmetros

row
Especifica a linha da janela do divisor na qual excluir a exibição.

col
Especifica a coluna da janela do divisor na qual excluir a exibição.

Comentários

Se a exibição ativa estiver sendo excluída, a próxima exibição ficará ativa. A implementação padrão pressupõe que a exibição será excluída automaticamente em PostNcDestroy.

Essa função de membro é chamada pela estrutura para implementar a lógica da janela de divisor dinâmico (ou seja, se a janela do divisor tem o estilo SPLS_DYNAMIC_SPLIT). Ele pode ser personalizado, juntamente com a função virtual CreateView, para implementar divisores dinâmicos mais avançados.

CSplitterWnd::DoKeyboardSplit

Executa o comando de divisão de teclado, geralmente "Divisão de Janela".

virtual BOOL DoKeyboardSplit();

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

Essa função de membro é um comando de alto nível usado pela classe CView para delegar à implementação de CSplitterWnd.

CSplitterWnd::DoScroll

Executa a rolagem sincronizada de janelas de divisão.

virtual BOOL DoScroll(
    CView* pViewFrom,
    UINT nScrollCode,
    BOOL bDoScroll = TRUE);

Parâmetros

pViewFrom
Um ponteiro para o modo de exibição do qual a mensagem de rolagem se origina.

nScrollCode
Um código de barra de rolagem que indica a solicitação de rolagem do usuário. Esse parâmetro é composto por duas partes: um byte de baixa ordem, que determina o tipo de rolagem que ocorre horizontalmente; e um byte de alta ordem, que determina o tipo de rolagem que ocorre verticalmente:

  • SB_BOTTOM Rola para baixo.

  • SB_LINEDOWN Rola uma linha para baixo.

  • SB_LINEUP Rola uma linha para cima.

  • SB_PAGEDOWN Rola uma página para baixo.

  • SB_PAGEUP Rola uma página para cima.

  • SB_TOP Rola para cima.

bDoScroll
Determina se a ação de rolagem especificada ocorre. Se bDoScroll for TRUE (ou seja, se existir uma janela filho e se as janelas de divisão tiverem um intervalo de rolagem), a ação de rolagem especificada poderá ocorrer; se bDoScroll for FALSE (ou seja, se não existir nenhuma janela filho ou se as exibições divididas não tiverem intervalo de rolagem), a rolagem não ocorrerá.

Valor de retorno

Não zero se ocorrer rolagem sincronizada; caso contrário, 0.

Comentários

Essa função membro é chamada pela estrutura para executar a rolagem sincronizada de janelas divididas quando o modo de exibição recebe uma mensagem de rolagem. Substitua para exigir uma ação do usuário antes que de permitir a rolagem sincronizada.

CSplitterWnd::DoScrollBy

Rola as janelas divididas por um determinado número de pixels.

virtual BOOL DoScrollBy(
    CView* pViewFrom,
    CSize sizeScroll,
    BOOL bDoScroll = TRUE);

Parâmetros

pViewFrom
Um ponteiro para o modo de exibição do qual a mensagem de rolagem se origina.

sizeScroll
Número de pixels a serem rolados horizontal e verticalmente.

bDoScroll
Determina se a ação de rolagem especificada ocorre. Se bDoScroll for TRUE (ou seja, se existir uma janela filho e se as janelas de divisão tiverem um intervalo de rolagem), a ação de rolagem especificada poderá ocorrer; se bDoScroll for FALSE (ou seja, se não existir nenhuma janela filho ou se as exibições divididas não tiverem intervalo de rolagem), a rolagem não ocorrerá.

Valor de retorno

Não zero se ocorrer rolagem sincronizada; caso contrário, 0.

Comentários

Essa função de membro é chamada pela estrutura em resposta a uma mensagem de rolagem para executar a rolagem sincronizada das janelas divididas pela quantidade, em pixels, indicada por sizeScroll. Valores positivos indicam a rolagem para baixo e para a direita; valores negativos indicam a rolagem para cima e para a esquerda.

Substitua para exigir uma ação do usuário antes de permitir a rolagem.

CSplitterWnd::GetActivePane

Determina o painel ativo do foco ou do modo de exibição ativo no quadro.

virtual CWnd* GetActivePane(
    int* pRow = NULL,
    int* pCol = NULL);

Parâmetros

pRow
Um ponteiro para um int para recuperar o número de linha do painel ativo.

pCol
Um ponteiro para um int para recuperar o número de coluna do painel ativo.

Valor de retorno

Ponteiro para o painel ativo. NULL se nenhum painel ativo existir.

Comentários

Essa função membro é chamada pela estrutura para determinar o painel ativo em uma janela de divisor. Substitua para exigir uma ação do usuário antes de obter o painel ativo.

CSplitterWnd::GetColumnCount

Retorna a contagem de colunas do painel atual.

int GetColumnCount() const;

Valor de retorno

Retorna o número atual de colunas no divisor. Para um divisor estático, esse também será o número máximo de colunas.

CSplitterWnd::GetColumnInfo

Retorna informações sobre a coluna especificada.

void GetColumnInfo(
    int col,
    int& cxCur,
    int& cxMin) const;

Parâmetros

col
Especifica uma coluna.

cxCur
Uma referência a um int a ser definido como a largura atual da coluna.

cxMin
Uma referência a um int a ser definido como a largura mínima atual da coluna.

CSplitterWnd::GetPane

Retorna o painel na linha e coluna especificadas.

CWnd* GetPane(
    int row,
    int col) const;

Parâmetros

row
Especifica uma linha.

col
Especifica uma coluna.

Valor de retorno

Retorna o painel na linha e coluna especificadas. O painel retornado geralmente é uma classe derivada de CView.

CSplitterWnd::GetRowCount

Retorna a contagem de linhas do painel atual.

int GetRowCount() const;

Valor de retorno

Retorna o número atual de linhas na janela do divisor. Para uma janela de divisor estático, esse também será o número máximo de linhas.

CSplitterWnd::GetRowInfo

Retorna informações sobre a linha especificada.

void GetRowInfo(
    int row,
    int& cyCur,
    int& cyMin) const;

Parâmetros

row
Especifica uma linha.

cyCur
Referência a int a ser definida como a altura atual da linha em pixels.

cyMin
Referência a int a ser definida como a altura mínima atual da linha em pixels.

Comentários

Chame essa função de membro para obter informações sobre a linha especificada. O parâmetro cyCur é preenchido com a altura atual da linha especificada e cyMin é preenchido com a altura mínima da linha.

CSplitterWnd::GetScrollStyle

Retorna o estilo de barra de rolagem compartilhado para a janela do divisor.

DWORD GetScrollStyle() const;

Valor de retorno

Um ou mais dos seguintes sinalizadores de estilo do Windows, se bem-sucedidos:

  • WS_HSCROLL Se o divisor atualmente gerencia barras de rolagem horizontal compartilhadas.

  • WS_VSCROLL Se o divisor atualmente gerencia barras de rolagem vertical compartilhadas.

Se zero, a janela do divisor não gerencia nenhuma barra de rolagem compartilhada no momento.

CSplitterWnd::IdFromRowCol

Obtém a ID da janela filho para o painel na linha e coluna especificadas.

int IdFromRowCol(
    int row,
    int col) const;

Parâmetros

row
Especifica a linha da janela do divisor.

col
Especifica a coluna da janela do divisor.

Valor de retorno

A ID da janela filho do painel.

Comentários

Essa função de membro é usada para criar não exibições como painéis e pode ser chamada antes que o painel exista.

Exemplo

HBRUSH CMySplitterWnd::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
   HBRUSH hbr = CSplitterWnd::OnCtlColor(pDC, pWnd, nCtlColor);

   if (nCtlColor == CTLCOLOR_LISTBOX &&
       pWnd->GetDlgCtrlID() == IdFromRowCol(1, 0))
   {
      // Pane 1,0 is a list box. Set the color of the text to be blue.
      pDC->SetBkColor(m_BkColor);
      pDC->SetTextColor(RGB(0, 0, 255));
      return (HBRUSH)m_hbrListBoxBkgnd.GetSafeHandle();
   }
   // TODO: Return a different brush if the default is not desired
   return hbr;
}

CSplitterWnd::IsChildPane

Determina se pWnd atualmente é um painel filho dessa janela de divisor.

BOOL IsChildPane(
    CWnd* pWnd,
    int* pRow,
    int* pCol);

Parâmetros

pWnd
Um ponteiro para um objeto CWnd a ser testado.

pRow
Um ponteiro para um int no qual armazenar o número da linha.

pCol
Um ponteiro para um int no qual armazenar um número de coluna.

Valor de retorno

Se não zero, pWnd atualmente é um painel filho dessa janela de divisor e pRow e pCol são preenchidos com a posição do painel na janela do divisor. Se pWnd não for um painel filho desta janela de divisor, 0 será retornado.

Comentários

Nas versões do Visual C++ anteriores à 6.0, essa função foi definida como

BOOL IsChildPane(CWnd* pWnd, int& row, int& col);

Essa versão agora está obsoleta e não deve ser usada.

CSplitterWnd::IsTracking

Chame essa função de membro para determinar se a barra de divisor na janela está sendo movida no momento.

BOOL IsTracking();

Valor de retorno

Não zero se uma operação de divisor estiver em andamento; caso contrário, 0.

CSplitterWnd::OnDrawSplitter

Renderiza uma imagem de uma janela de divisão.

virtual void OnDrawSplitter(
    CDC* pDC,
    ESplitType nType,
    const CRect& rect);

Parâmetros

pDC
Um ponteiro para o contexto do dispositivo no qual desenhar. Se pDC for NULL, CWnd::RedrawWindow será chamado pela estrutura e nenhuma janela dividida será desenhada.

nType
Um valor do enum ESplitType, que pode ser um dos seguintes:

  • splitBox A caixa de arrastar do divisor.

  • splitBar A barra que aparece entre as duas janelas divididas.

  • splitIntersection A interseção das janelas divididas. Esse elemento não será chamado durante a execução no Windows 95/98.

  • splitBorder As bordas da janela dividida.

rect
Uma referência a um objeto CRect que especifica o tamanho e a forma das janelas divididas.

Comentários

Essa função de membro é chamada pela estrutura para desenhar e especificar as características exatas de uma janela de divisor. Substitua OnDrawSplitter para a personalização avançada das imagens para os vários componentes gráficos de uma janela de divisor. As imagens padrão são semelhantes ao divisor no Microsoft Works para Windows ou no Microsoft Windows 95/98 no sentido de que as interseções das barras de divisor são combinadas.

Para mais informações sobre janelas de divisor dinâmico, confira "Janelas do Divisor" no artigo Vários tipos de documentos, exibições e janelas de quadro, Nota Técnica 29 e a visão geral da classe CSplitterWnd.

CSplitterWnd::OnInvertTracker

Renderiza a imagem de uma janela de divisão para ter o mesmo tamanho e forma que a janela de quadro.

virtual void OnInvertTracker(const CRect& rect);

Parâmetros

rect
Referência a um objeto CRect que especifica o retângulo de acompanhamento.

Comentários

Essa função de membro é chamada pela estrutura durante o redimensionamento de divisores. Substitua OnInvertTracker para a personalização avançada das imagens da janela do divisor. As imagens padrão são semelhantes ao divisor no Microsoft Works para Windows ou no Microsoft Windows 95/98 no sentido de que as interseções das barras de divisor são combinadas.

Para mais informações sobre janelas de divisor dinâmico, confira "Janelas do Divisor" no artigo Vários tipos de documentos, exibições e janelas de quadro, Nota Técnica 29 e a visão geral da classe CSplitterWnd.

CSplitterWnd::RecalcLayout

Chame para exibir novamente a janela do divisor depois de ajustar o tamanho da linha ou da coluna.

virtual void RecalcLayout();

Comentários

Chame essa função de membro para exibir novamente a janela do divisor depois que você tiver ajustado os tamanhos de linha e coluna com as funções de membro SetRowInfo e SetColumnInfo. Se você alterar os tamanhos de linha e coluna como parte do processo de criação antes que a janela do divisor fique visível, não será necessário chamar essa função de membro.

A estrutura chama essa função de membro sempre que o usuário redimensiona a janela do divisor ou move uma divisão.

Exemplo

Confira o exemplo de CSplitterWnd::SetColumnInfo.

CSplitterWnd::SetActivePane

Define um painel para ser o ativo no quadro.

virtual void SetActivePane(
    int row,
    int col,
    CWnd* pWnd = NULL);

Parâmetros

row
Se pWnd for NULL, especificará a linha no painel que estará ativa.

col
Se pWnd for NULL, especificará a coluna no painel que estará ativa.

pWnd
Um ponteiro para um objeto CWnd. Se NULL, o painel especificado por row e col será definido como ativo. Caso contrário NULL, especificará o painel que está definido como ativo.

Comentários

Essa função de membro é chamada pela estrutura para definir um painel como ativo quando o usuário altera o foco para um painel dentro da janela de quadros. Você pode chamar SetActivePane explicitamente para alterar o foco para a exibição especificada.

Especifique o painel fornecendo linha e coluna ou fornecendo pWnd.

CSplitterWnd::SetColumnInfo

Chame para definir as informações de coluna especificadas.

void SetColumnInfo(
    int col,
    int cxIdeal,
    int cxMin);

Parâmetros

col
Especifica uma coluna de janela de divisor.

cxIdeal
Especifica uma largura ideal para a coluna da janela do divisor em pixels.

cxMin
Especifica uma largura mínima para a coluna da janela do divisor em pixels.

Comentários

Chame essa função de membro para definir uma nova largura mínima e a largura ideal para uma coluna. O valor mínimo da coluna determina quando a coluna será muito pequena para ser totalmente exibida.

Quando a estrutura exibe a janela do divisor, ela coloca os painéis em colunas e linhas de acordo com suas dimensões ideais, trabalhando do canto superior esquerdo para o canto inferior direito da área de cliente da janela do divisor.

Exemplo

void CChildFrame::OnSize(UINT nType, int cx, int cy)
{
   CMDIChildWnd::OnSize(nType, cx, cy);

   CRect rect;
   GetWindowRect(&rect);
   if (m_bSplitterCreated) // m_bSplitterCreated set in OnCreateClient
   {
      m_wndSplitter.SetColumnInfo(0, rect.Width() / 2, 10);
      m_wndSplitter.SetColumnInfo(1, rect.Width() / 2, 10);
      m_wndSplitter.RecalcLayout();
   }
}

CSplitterWnd::SetRowInfo

Chame para definir as informações de linha especificadas.

void SetRowInfo(
    int row,
    int cyIdeal,
    int cyMin);

Parâmetros

row
Especifica uma linha de janela de divisor.

cyIdeal
Especifica uma altura ideal para a linha da janela do divisor em pixels.

cyMin
Especifica uma altura mínima para a linha da janela do divisor em pixels.

Comentários

Chame essa função de membro para definir uma nova altura mínima e a altura ideal para uma linha. O valor mínimo da linha determina quando a linha será muito pequena para ser totalmente exibida.

Quando a estrutura exibe a janela do divisor, ela coloca os painéis em colunas e linhas de acordo com suas dimensões ideais, trabalhando do canto superior esquerdo para o canto inferior direito da área de cliente da janela do divisor.

CSplitterWnd::SetScrollStyle

Especifica o novo estilo de rolagem para o suporte da barra de rolagem compartilhada da janela de divisor.

void SetScrollStyle(DWORD dwStyle);

Parâmetros

dwStyle
O novo estilo de rolagem para o suporte de barra de rolagem compartilhada da janela de divisor, que pode ser um dos seguintes valores:

  • WS_HSCROLL Criar/mostrar barras de rolagem horizontal compartilhadas.

  • WS_VSCROLL Criar/mostrar barras de rolagem compartilhadas verticais.

Comentários

Depois que uma barra de rolagem for criada, ela não será destruída mesmo que SetScrollStyle seja chamada sem esse estilo; em vez disso, essas barras de rolagem ficarão ocultas. Isso permite que as barras de rolagem mantenham seu estado mesmo que estejam ocultas. Depois de chamar SetScrollStyle, é necessário chamar RecalcLayout para que todas as alterações entrem em vigor.

CSplitterWnd::SplitColumn

Indica em que ponto uma janela de quadro é dividida verticalmente.

virtual BOOL SplitColumn(int cxBefore);

Parâmetros

cxBefore
A posição, em pixels, antes da qual a divisão ocorre.

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

Essa função de membro é chamada quando uma janela de divisor vertical é criada. SplitColumn indica o local padrão em que a divisão ocorre.

SplitColumn é chamado pela estrutura para implementar a lógica da janela de divisor dinâmico (ou seja, se a janela do divisor tem o estilo SPLS_DYNAMIC_SPLIT). Ele pode ser personalizado, juntamente com a função virtual CreateView, para implementar divisores dinâmicos mais avançados.

CSplitterWnd::SplitRow

Indica em que ponto uma janela de quadro é dividida horizontalmente.

virtual BOOL SplitRow(int cyBefore);

Parâmetros

cyBefore
A posição, em pixels, antes da qual a divisão ocorre.

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

Essa função de membro é chamada quando uma janela de divisor horizontal é criada. SplitRow indica o local padrão em que a divisão ocorre.

SplitRow é chamado pela estrutura para implementar a lógica da janela de divisor dinâmico (ou seja, se a janela do divisor tem o estilo SPLS_DYNAMIC_SPLIT). Ele pode ser personalizado, juntamente com a função virtual CreateView, para implementar divisores dinâmicos mais avançados.

CSplitterWnd::OnDraw

Chamado pela estrutura para desenhar a janela do divisor.

virtual void OnDraw(CDC* pDC);

Parâmetros

pDC
Um ponteiro para um contexto de dispositivo.

Comentários

Confira também

Exemplo de MFC VIEWEX
Classe CWnd
Gráfico da hierarquia
Classe CView