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 CSplitterWnd
objeto usando as seguintes etapas:
Insira uma variável
CSplitterWnd
de membro no quadro pai.Substitua a função de membro
CFrameWnd::OnCreateClient
do quadro pai.De dentro do
OnCreateClient
substituído, chame a função de membroCreate
ouCreateStatic
deCSplitterWnd
.
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
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:
Insira uma variável
CSplitterWnd
de membro no quadro pai.Substitua a função de membro
CFrameWnd::OnCreateClient
do quadro pai.Chame a função de membro
Create
de dentro doOnCreateClient
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:
Insira uma variável
CSplitterWnd
de membro no quadro pai.Substitua a função de membro
OnCreateClient
do quadro pai.Chame a função de membro
CreateStatic
de dentro doCFrameWnd::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