Classe CSplitterWnd
Fornisce la funzionalità di una finestra con separatore, ovvero una finestra che contiene più riquadri.
Sintassi
class CSplitterWnd : public CWnd
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CSplitterWnd::CSplitterWnd |
Chiamare per costruire un CSplitterWnd oggetto . |
Metodi pubblici
Nome | Descrizione |
---|---|
CSplitterWnd::ActivateNext |
Esegue il comando Riquadro successivo o Riquadro precedente. |
CSplitterWnd::CanActivateNext |
Verifica se il comando Riquadro successivo o Riquadro precedente è attualmente possibile. |
CSplitterWnd::Create |
Chiamare per creare una finestra di divisione dinamica e collegarla all'oggetto CSplitterWnd . |
CSplitterWnd::CreateScrollBarCtrl |
Crea un controllo barra di scorrimento condiviso. |
CSplitterWnd::CreateStatic |
Chiamare per creare una finestra di divisione statica e collegarla all'oggetto CSplitterWnd . |
CSplitterWnd::CreateView |
Chiamare per creare un riquadro in una finestra di divisione. |
CSplitterWnd::DeleteColumn |
Elimina una colonna dalla finestra di divisione. |
CSplitterWnd::DeleteRow |
Elimina una riga dalla finestra di divisione. |
CSplitterWnd::DeleteView |
Elimina una visualizzazione dalla finestra di divisione. |
CSplitterWnd::DoKeyboardSplit |
Esegue il comando di divisione della tastiera, in genere "Divisione finestra". |
CSplitterWnd::DoScroll |
Esegue lo scorrimento sincronizzato delle finestre suddivise. |
CSplitterWnd::DoScrollBy |
Scorre le finestre suddivise per un determinato numero di pixel. |
CSplitterWnd::GetActivePane |
Determina il riquadro attivo dallo stato attivo o dalla visualizzazione attiva nel frame. |
CSplitterWnd::GetColumnCount |
Restituisce il numero di colonne del riquadro corrente. |
CSplitterWnd::GetColumnInfo |
Restituisce informazioni sulla colonna specificata. |
CSplitterWnd::GetPane |
Restituisce il riquadro in corrispondenza della riga e della colonna specificate. |
CSplitterWnd::GetRowCount |
Restituisce il conteggio delle righe del riquadro corrente. |
CSplitterWnd::GetRowInfo |
Restituisce informazioni sulla riga specificata. |
CSplitterWnd::GetScrollStyle |
Restituisce lo stile della barra di scorrimento condiviso. |
CSplitterWnd::IdFromRowCol |
Restituisce l'ID della finestra figlio del riquadro in corrispondenza della riga e della colonna specificati. |
CSplitterWnd::IsChildPane |
Chiamare per determinare se la finestra è attualmente un riquadro figlio di questa finestra di divisione. |
CSplitterWnd::IsTracking |
Determina se la barra di divisione è in corso di spostamento. |
CSplitterWnd::RecalcLayout |
Chiamare per riprodurre nuovamente la finestra di divisione dopo aver modificato le dimensioni della riga o della colonna. |
CSplitterWnd::SetActivePane |
Imposta un riquadro come attivo nel frame. |
CSplitterWnd::SetColumnInfo |
Chiamare per impostare le informazioni sulla colonna specificate. |
CSplitterWnd::SetRowInfo |
Chiamare per impostare le informazioni sulla riga specificate. |
CSplitterWnd::SetScrollStyle |
Specifica il nuovo stile barra di scorrimento per il supporto della barra di scorrimento condivisa della finestra di divisione. |
CSplitterWnd::SplitColumn |
Indica la posizione di divisione verticale di una finestra cornice. |
CSplitterWnd::SplitRow |
Indica dove una finestra cornice viene divisa orizzontalmente. |
Metodi protetti
Nome | Descrizione |
---|---|
CSplitterWnd::OnDraw |
Chiamato dal framework per disegnare la finestra di divisione. |
CSplitterWnd::OnDrawSplitter |
Esegue il rendering di un'immagine di una finestra divisa. |
CSplitterWnd::OnInvertTracker |
Esegue il rendering dell'immagine di una finestra divisa in modo che corrisponda alla stessa dimensione e forma della finestra cornice. |
Osservazioni:
Un riquadro è in genere un oggetto specifico dell'applicazione derivato da CView
, ma può essere qualsiasi CWnd
oggetto con l'ID finestra figlio appropriato.
Un CSplitterWnd
oggetto viene in genere incorporato in un oggetto padre CFrameWnd
o CMDIChildWnd
. Creare un CSplitterWnd
oggetto seguendo questa procedura:
Incorporare una
CSplitterWnd
variabile membro nel frame padre.Eseguire l'override della funzione membro del
CFrameWnd::OnCreateClient
frame padre.Dall'interno dell'oggetto sottoposto
OnCreateClient
a override chiamare laCreate
funzione membro oCreateStatic
diCSplitterWnd
.
Chiamare la Create
funzione membro per creare una finestra di divisione dinamica. Una finestra di divisione dinamica viene in genere usata per creare e scorrere un numero di singoli riquadri o visualizzazioni dello stesso documento. Il framework crea automaticamente un riquadro iniziale per il separatore; quindi il framework crea, ridimensiona ed elimina i riquadri aggiuntivi mentre l'utente gestisce i controlli della finestra di divisione.
Quando si chiama Create
, si specifica un'altezza minima della riga e una larghezza di colonna che determinano quando i riquadri sono troppo piccoli per essere completamente visualizzati. Dopo aver chiamato Create
, è possibile modificare questi minimi chiamando le SetColumnInfo
funzioni membro e SetRowInfo
.
Usare anche le SetColumnInfo
funzioni membro e SetRowInfo
per impostare una larghezza "ideale" per una colonna e un'altezza "ideale" per una riga. Quando il framework visualizza una finestra di divisione, visualizza prima il frame padre, quindi la finestra di divisione. Il framework dispone quindi i riquadri in colonne e righe in base alle relative dimensioni ideali, lavorando dall'angolo superiore sinistro all'angolo inferiore destro dell'area client della finestra di divisione.
Tutti i riquadri in una finestra di divisione dinamica devono essere della stessa classe. Le applicazioni familiari che supportano finestre splitter dinamiche includono Microsoft Word e Microsoft Excel.
Usare la CreateStatic
funzione membro per creare una finestra di divisione statica. L'utente può modificare solo le dimensioni dei riquadri in una finestra di divisione statica, non il numero o l'ordine.
È necessario creare in modo specifico tutti i riquadri del componente di divisione statico quando si crea il splitter statico. Assicurarsi di creare tutti i riquadri prima che venga restituita la funzione membro del OnCreateClient
frame padre o che il framework non visualizzi correttamente la finestra.
La CreateStatic
funzione membro inizializza automaticamente un separatore statico con un'altezza minima della riga e una larghezza di colonna pari a 0. Dopo aver chiamato Create
, modificare questi valori minimi chiamando le SetColumnInfo
funzioni membro e SetRowInfo
. SetColumnInfo
Usare anche e SetRowInfo
dopo la chiamata CreateStatic
per indicare le dimensioni del riquadro ideali desiderate.
I singoli riquadri di un separatore statico spesso appartengono a classi diverse. Per esempi di finestre di suddivisione statiche, vedi l'editor di grafica e Gestione file di Windows.
Una finestra di divisione supporta barre di scorrimento speciali ( a parte le barre di scorrimento che possono essere presenti nei riquadri). Queste barre di scorrimento sono elementi figlio dell'oggetto CSplitterWnd
e vengono condivise con i riquadri.
Queste barre di scorrimento speciali vengono create quando si crea la finestra di divisione. Ad esempio, un oggetto CSplitterWnd
con una riga, due colonne e lo WS_VSCROLL
stile visualizzerà una barra di scorrimento verticale condivisa dai due riquadri. Quando l'utente sposta la barra di scorrimento, WM_VSCROLL
i messaggi vengono inviati a entrambi i riquadri. Quando i riquadri impostano la posizione della barra di scorrimento, viene impostata la barra di scorrimento condivisa.
Per altre informazioni sulle finestre di divisione, vedere La nota tecnica 29.
Per altre informazioni su come creare finestre splitter dinamiche, vedere:
Esempio MFC Scribble
Esempio
VIEWEX
MFC.
Gerarchia di ereditarietà
CSplitterWnd
Requisiti
Intestazione: afxext.h
CSplitterWnd::ActivateNext
Chiamato dal framework per eseguire il comando Riquadro successivo o Riquadro precedente.
virtual void ActivateNext(BOOL bPrev = FALSE);
Parametri
bPrev
Indica la finestra da attivare. TRUE
per precedente; FALSE
per il successivo.
Osservazioni:
Questa funzione membro è un comando di alto livello usato dalla CView
classe per delegare all'implementazione CSplitterWnd
.
CSplitterWnd::CanActivateNext
Chiamato dal framework per verificare se il comando Riquadro successivo o Riquadro precedente è attualmente possibile.
virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
Parametri
bPrev
Indica la finestra da attivare. TRUE
per precedente; FALSE
per il successivo.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Questa funzione membro è un comando di alto livello usato dalla CView
classe per delegare all'implementazione CSplitterWnd
.
CSplitterWnd::Create
Per creare una finestra di divisione dinamica, chiamare la Create
funzione membro.
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);
Parametri
pParentWnd
Finestra cornice padre della finestra di divisione.
nMaxRows
Numero massimo di righe nella finestra di divisione. Questo valore non deve superare 2.
nMaxCols
Numero massimo di colonne nella finestra di divisione. Questo valore non deve superare 2.
sizeMin
Specifica le dimensioni minime in base alle quali può essere visualizzato un riquadro.
pContext
Puntatore a una CCreateContext
struttura. Nella maggior parte dei casi, è possibile pContext
passare alla finestra cornice padre.
dwStyle
Specifica lo stile della finestra.
nID
ID finestra figlio della finestra. L'ID può essere AFX_IDW_PANE_FIRST
a meno che la finestra di divisione non sia annidata all'interno di un'altra finestra di divisione.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
È possibile incorporare un oggetto CSplitterWnd
in un oggetto padre CFrameWnd
o CMDIChildWnd
oggetto seguendo questa procedura:
Incorporare una
CSplitterWnd
variabile membro nel frame padre.Eseguire l'override della funzione membro del
CFrameWnd::OnCreateClient
frame padre.Chiamare la
Create
funzione membro dall'interno dell'oggetto sottopostoOnCreateClient
a override.
Quando si crea una finestra di divisione dall'interno di un frame padre, passare il parametro del pContext
frame padre alla finestra di divisione. In caso contrario, questo parametro può essere NULL
.
L'altezza minima iniziale della riga e la larghezza della colonna di una finestra di divisione dinamica vengono impostate dal sizeMin
parametro . Questi minimi, che determinano se un riquadro è troppo piccolo da visualizzare nell'intera dimensione, può essere modificato con le SetRowInfo
funzioni membro e SetColumnInfo
.
Per altre informazioni sulle finestre splitter dinamiche, vedere "Splitter Windows" nell'articolo Più tipi di documento, visualizzazioni e finestre cornice, nota tecnica 29 e panoramica della CSplitterWnd
classe.
Esempio
// 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
Chiamato dal framework per creare un controllo barra di scorrimento condiviso.
virtual BOOL CreateScrollBarCtrl(
DWORD dwStyle,
UINT nID);
Parametri
dwStyle
Specifica lo stile della finestra.
nID
ID finestra figlio della finestra. L'ID può essere AFX_IDW_PANE_FIRST
a meno che la finestra di divisione non sia annidata all'interno di un'altra finestra di divisione.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Eseguire l'override CreateScrollBarCtrl
per includere controlli aggiuntivi accanto a una barra di scorrimento. Il comportamento predefinito consiste nel creare normali controlli barra di scorrimento di Windows.
CSplitterWnd::CreateStatic
Per creare una finestra di divisione statica, chiamare la CreateStatic
funzione membro.
virtual BOOL CreateStatic(
CWnd* pParentWnd,
int nRows,
int nCols,
DWORD dwStyle = WS_CHILD | WS_VISIBLE,
UINT nID = AFX_IDW_PANE_FIRST);
Parametri
pParentWnd
Finestra cornice padre della finestra di divisione.
nRows
Numero di righe. Questo valore non deve superare 16.
nCols
Numero di colonne. Questo valore non deve superare 16.
dwStyle
Specifica lo stile della finestra.
nID
ID finestra figlio della finestra. L'ID può essere AFX_IDW_PANE_FIRST
a meno che la finestra di divisione non sia annidata all'interno di un'altra finestra di divisione.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Un CSplitterWnd
oggetto viene in genere incorporato in un oggetto padre CFrameWnd
o CMDIChildWnd
oggetto seguendo questa procedura:
Incorporare una
CSplitterWnd
variabile membro nel frame padre.Eseguire l'override della funzione membro del
OnCreateClient
frame padre.Chiamare la
CreateStatic
funzione membro dall'interno dell'oggetto sottopostoCFrameWnd::OnCreateClient
a override.
Una finestra di suddivisione statica contiene un numero fisso di riquadri, spesso da classi diverse.
Quando si crea una finestra di divisione statica, è necessario creare contemporaneamente tutti i riquadri. La CreateView
funzione membro viene in genere usata per questo scopo, ma è possibile creare anche altre classi non di visualizzazione.
L'altezza minima iniziale della riga e la larghezza della colonna per una finestra di divisione statica è 0. Questi minimi, che determinano quando un riquadro è troppo piccolo da visualizzare nell'intera dimensione, può essere modificato con le SetRowInfo
funzioni membro e SetColumnInfo
.
Per aggiungere barre di scorrimento a una finestra di divisione statica, aggiungere gli WS_HSCROLL
stili e WS_VSCROLL
a dwStyle
.
Vedere "Splitter Windows" nell'articolo Più tipi di documento, visualizzazioni e finestre cornice, nota tecnica 29 e panoramica della CSplitterWnd
classe per altre informazioni sulle finestre di suddivisione statiche.
CSplitterWnd::CreateView
Crea i riquadri per una finestra di divisione statica.
virtual BOOL CreateView(
int row,
int col,
CRuntimeClass* pViewClass,
SIZE sizeInit,
CCreateContext* pContext);
Parametri
row
Specifica la riga della finestra di divisione in cui posizionare la nuova visualizzazione.
col
Specifica la colonna della finestra di divisione in cui posizionare la nuova vista.
pViewClass
Specifica l'oggetto CRuntimeClass
della nuova visualizzazione.
sizeInit
Specifica le dimensioni iniziali della nuova visualizzazione.
pContext
Puntatore a un contesto di creazione usato per creare la visualizzazione (in genere la pContext
classe passata nella funzione membro sottoposta a override CFrameWnd::OnCreateClient
della cornice padre in cui viene creata la finestra di divisione).
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Tutti i riquadri di una finestra di divisione statica devono essere creati prima che il framework visualizzi il separatore.
Il framework chiama anche questa funzione membro per creare nuovi riquadri quando l'utente di una finestra di divisione dinamica divide un riquadro, una riga o una colonna.
Esempio
// 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
Chiamare per costruire un CSplitterWnd
oggetto .
CSplitterWnd();
Osservazioni:
Costruire un CSplitterWnd
oggetto in due passaggi. Chiamare innanzitutto il costruttore , che crea l'oggetto CSplitterWnd
e quindi chiamare la Create
funzione membro , che crea la finestra di divisione e la collega all'oggetto CSplitterWnd
.
CSplitterWnd::DeleteColumn
Elimina una colonna dalla finestra di divisione.
virtual void DeleteColumn(int colDelete);
Parametri
colDelete
Specifica la colonna da eliminare.
Osservazioni:
Questa funzione membro viene chiamata dal framework per implementare la logica della finestra di divisione dinamica, ovvero se la finestra di divisione ha lo SPLS_DYNAMIC_SPLIT
stile. Può essere personalizzato, insieme alla funzione CreateView
virtuale , per implementare splitter dinamici più avanzati.
CSplitterWnd::DeleteRow
Elimina una riga dalla finestra di divisione.
virtual void DeleteRow(int rowDelete);
Parametri
rowDelete
Specifica la riga da eliminare.
Osservazioni:
Questa funzione membro viene chiamata dal framework per implementare la logica della finestra di divisione dinamica, ovvero se la finestra di divisione ha lo SPLS_DYNAMIC_SPLIT
stile. Può essere personalizzato, insieme alla funzione CreateView
virtuale , per implementare splitter dinamici più avanzati.
CSplitterWnd::DeleteView
Elimina una visualizzazione dalla finestra di divisione.
virtual void DeleteView(
int row,
int col);
Parametri
row
Specifica la riga della finestra di divisione in corrispondenza della quale eliminare la vista.
col
Specifica la colonna della finestra di divisione in corrispondenza della quale eliminare la vista.
Osservazioni:
Se la visualizzazione attiva viene eliminata, la visualizzazione successiva diventerà attiva. L'implementazione predefinita presuppone che la vista elimini automaticamente in PostNcDestroy
.
Questa funzione membro viene chiamata dal framework per implementare la logica della finestra di divisione dinamica, ovvero se la finestra di divisione ha lo SPLS_DYNAMIC_SPLIT
stile. Può essere personalizzato, insieme alla funzione CreateView
virtuale , per implementare splitter dinamici più avanzati.
CSplitterWnd::DoKeyboardSplit
Esegue il comando di divisione della tastiera, in genere "Divisione finestra".
virtual BOOL DoKeyboardSplit();
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Questa funzione membro è un comando di alto livello usato dalla CView
classe per delegare all'implementazione CSplitterWnd
.
CSplitterWnd::DoScroll
Esegue lo scorrimento sincronizzato delle finestre suddivise.
virtual BOOL DoScroll(
CView* pViewFrom,
UINT nScrollCode,
BOOL bDoScroll = TRUE);
Parametri
pViewFrom
Puntatore alla visualizzazione da cui ha origine il messaggio di scorrimento.
nScrollCode
Codice a barre di scorrimento che indica la richiesta di scorrimento dell'utente. Questo parametro è composto da due parti: un byte di ordine basso, che determina il tipo di scorrimento che si verifica orizzontalmente e un byte di ordine elevato, che determina il tipo di scorrimento che si verifica verticalmente:
SB_BOTTOM
Scorre verso il basso.SB_LINEDOWN
Scorre una riga verso il basso.SB_LINEUP
Scorre una riga verso l'alto.SB_PAGEDOWN
Scorre una pagina verso il basso.SB_PAGEUP
Scorre una pagina verso l'alto.SB_TOP
Scorre verso l'alto.
bDoScroll
Determina se si verifica l'azione di scorrimento specificata. Se bDoScroll
è TRUE
(vale a dire, se esiste una finestra figlio e se le finestre suddivise hanno un intervallo di scorrimento), l'azione di scorrimento specificata può essere eseguita; se bDoScroll
è FALSE
(ovvero, se non esiste alcuna finestra figlio o le visualizzazioni suddivise non hanno un intervallo di scorrimento), lo scorrimento non si verifica.
Valore restituito
Diverso da zero se si verifica lo scorrimento sincronizzato; in caso contrario, 0.
Osservazioni:
Questa funzione membro viene chiamata dal framework per eseguire lo scorrimento sincronizzato di finestre suddivise quando la visualizzazione riceve un messaggio di scorrimento. Eseguire l'override per richiedere un'azione da parte dell'utente prima che lo scorrimento sincronizzato sia consentito.
CSplitterWnd::DoScrollBy
Scorre le finestre suddivise per un determinato numero di pixel.
virtual BOOL DoScrollBy(
CView* pViewFrom,
CSize sizeScroll,
BOOL bDoScroll = TRUE);
Parametri
pViewFrom
Puntatore alla visualizzazione da cui ha origine il messaggio di scorrimento.
sizeScroll
Numero di pixel da scorrere orizzontalmente e verticalmente.
bDoScroll
Determina se si verifica l'azione di scorrimento specificata. Se bDoScroll
è TRUE
(vale a dire, se esiste una finestra figlio e se le finestre suddivise hanno un intervallo di scorrimento), l'azione di scorrimento specificata può essere eseguita; se bDoScroll
è FALSE
(ovvero, se non esiste alcuna finestra figlio o le visualizzazioni suddivise non hanno un intervallo di scorrimento), lo scorrimento non si verifica.
Valore restituito
Diverso da zero se si verifica lo scorrimento sincronizzato; in caso contrario, 0.
Osservazioni:
Questa funzione membro viene chiamata dal framework in risposta a un messaggio di scorrimento, per eseguire lo scorrimento sincronizzato delle finestre suddivise in base alla quantità, in pixel, indicata da sizeScroll
. I valori positivi indicano lo scorrimento verso il basso e verso destra; i valori negativi indicano lo scorrimento verso l'alto e verso sinistra.
Eseguire l'override per richiedere un'azione da parte dell'utente prima di consentire lo scorrimento.
CSplitterWnd::GetActivePane
Determina il riquadro attivo dallo stato attivo o dalla visualizzazione attiva nel frame.
virtual CWnd* GetActivePane(
int* pRow = NULL,
int* pCol = NULL);
Parametri
pRow
Puntatore a un int
oggetto per recuperare il numero di riga del riquadro attivo.
pCol
Puntatore a un int
oggetto per recuperare il numero di colonna del riquadro attivo.
Valore restituito
Puntatore al riquadro attivo. NULL
se non esiste alcun riquadro attivo.
Osservazioni:
Questa funzione membro viene chiamata dal framework per determinare il riquadro attivo in una finestra di divisione. Eseguire l'override per richiedere un'azione da parte dell'utente prima di ottenere il riquadro attivo.
CSplitterWnd::GetColumnCount
Restituisce il numero di colonne del riquadro corrente.
int GetColumnCount() const;
Valore restituito
Restituisce il numero corrente di colonne nel separatore. Per uno splitter statico, questo sarà anche il numero massimo di colonne.
CSplitterWnd::GetColumnInfo
Restituisce informazioni sulla colonna specificata.
void GetColumnInfo(
int col,
int& cxCur,
int& cxMin) const;
Parametri
col
Specifica una colonna.
cxCur
Riferimento a un int
oggetto da impostare sulla larghezza corrente della colonna.
cxMin
Riferimento a un int
oggetto da impostare sulla larghezza minima corrente della colonna.
CSplitterWnd::GetPane
Restituisce il riquadro in corrispondenza della riga e della colonna specificate.
CWnd* GetPane(
int row,
int col) const;
Parametri
row
Specifica una riga.
col
Specifica una colonna.
Valore restituito
Restituisce il riquadro in corrispondenza della riga e della colonna specificate. Il riquadro restituito è in genere una CView
classe derivata da .
CSplitterWnd::GetRowCount
Restituisce il conteggio delle righe del riquadro corrente.
int GetRowCount() const;
Valore restituito
Restituisce il numero corrente di righe nella finestra di divisione. Per una finestra di divisione statica, si tratta anche del numero massimo di righe.
CSplitterWnd::GetRowInfo
Restituisce informazioni sulla riga specificata.
void GetRowInfo(
int row,
int& cyCur,
int& cyMin) const;
Parametri
row
Specifica una riga.
cyCur
Riferimento da int
impostare sull'altezza corrente della riga in pixel.
cyMin
Riferimento da int
impostare sull'altezza minima corrente della riga in pixel.
Osservazioni:
Chiamare questa funzione membro per ottenere informazioni sulla riga specificata. Il cyCur
parametro viene riempito con l'altezza corrente della riga specificata e cyMin
viene riempito con l'altezza minima della riga.
CSplitterWnd::GetScrollStyle
Restituisce lo stile della barra di scorrimento condiviso per la finestra di divisione.
DWORD GetScrollStyle() const;
Valore restituito
Uno o più dei flag di stile di windows seguenti, se hanno esito positivo:
WS_HSCROLL
Se la barra di divisione gestisce attualmente le barre di scorrimento orizzontali condivise.WS_VSCROLL
Se la barra di divisione gestisce attualmente le barre di scorrimento verticali condivise.
Se zero, la finestra di divisione non gestisce attualmente alcuna barra di scorrimento condivisa.
CSplitterWnd::IdFromRowCol
Ottiene l'ID finestra figlio per il riquadro in corrispondenza della riga e della colonna specificati.
int IdFromRowCol(
int row,
int col) const;
Parametri
row
Specifica la riga della finestra di divisione.
col
Specifica la colonna della finestra di divisione.
Valore restituito
ID finestra figlio per il riquadro.
Osservazioni:
Questa funzione membro viene usata per la creazione di visualizzazioni non come riquadri e può essere chiamata prima che il riquadro esista.
Esempio
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
è attualmente un riquadro figlio di questa finestra di divisione.
BOOL IsChildPane(
CWnd* pWnd,
int* pRow,
int* pCol);
Parametri
pWnd
Puntatore a un CWnd
oggetto da testare.
pRow
Puntatore a un oggetto int
in cui archiviare il numero di riga.
pCol
Puntatore a un oggetto int
in cui archiviare un numero di colonna.
Valore restituito
Se diverso da zero, pWnd
è attualmente un riquadro figlio di questa finestra di divisione e pRow
viene pCol
riempito con la posizione del riquadro nella finestra di divisione. Se pWnd
non è un riquadro figlio di questa finestra di divisione, viene restituito 0.
Osservazioni:
Nelle versioni di Visual C++ precedenti alla 6.0 questa funzione è stata definita come
BOOL IsChildPane(CWnd* pWnd, int& row, int& col);
Questa versione è obsoleta e non deve essere usata.
CSplitterWnd::IsTracking
Chiamare questa funzione membro per determinare se la barra di divisione nella finestra è in corso di spostamento.
BOOL IsTracking();
Valore restituito
Diverso da zero se è in corso un'operazione di divisione; in caso contrario, 0.
CSplitterWnd::OnDrawSplitter
Esegue il rendering di un'immagine di una finestra divisa.
virtual void OnDrawSplitter(
CDC* pDC,
ESplitType nType,
const CRect& rect);
Parametri
pDC
Puntatore al contesto del dispositivo in cui disegnare. Se pDC
è NULL
, viene CWnd::RedrawWindow
chiamato dal framework e non viene disegnata alcuna finestra divisa.
nType
Valore di enum ESplitType
, che può essere uno dei seguenti:
splitBox
Casella di trascinamento della barra di divisione.splitBar
Barra visualizzata tra le due finestre suddivise.splitIntersection
Intersezione delle finestre suddivise. Questo elemento non verrà chiamato durante l'esecuzione in Windows 95/98.splitBorder
Bordi della finestra divisa.
rect
Riferimento a un CRect
oggetto che specifica le dimensioni e la forma delle finestre suddivise.
Osservazioni:
Questa funzione membro viene chiamata dal framework per disegnare e specificare le caratteristiche esatte di una finestra di divisione. Eseguire l'override per la personalizzazione avanzata delle immagini per i vari componenti grafici di una finestra di divisione OnDrawSplitter
. L'immagine predefinita è simile al separatore in Microsoft Works per Windows o Microsoft Windows 95/98, in quanto le intersezioni delle barre di divisione vengono combinate.
Per altre informazioni sulle finestre splitter dinamiche, vedere "Splitter Windows" nell'articolo Più tipi di documento, visualizzazioni e finestre cornice, nota tecnica 29 e panoramica della CSplitterWnd
classe.
CSplitterWnd::OnInvertTracker
Esegue il rendering dell'immagine di una finestra divisa in modo che corrisponda alla stessa dimensione e forma della finestra cornice.
virtual void OnInvertTracker(const CRect& rect);
Parametri
rect
Riferimento a un CRect
oggetto che specifica il rettangolo di rilevamento.
Osservazioni:
Questa funzione membro viene chiamata dal framework durante il ridimensionamento dei splitter. Eseguire l'override per la personalizzazione avanzata delle immagini della finestra di divisione OnInvertTracker
. L'immagine predefinita è simile al separatore in Microsoft Works per Windows o Microsoft Windows 95/98, in quanto le intersezioni delle barre di divisione vengono combinate.
Per altre informazioni sulle finestre splitter dinamiche, vedere "Splitter Windows" nell'articolo Più tipi di documento, visualizzazioni e finestre cornice, nota tecnica 29 e panoramica della CSplitterWnd
classe.
CSplitterWnd::RecalcLayout
Chiamare per riprodurre nuovamente la finestra di divisione dopo aver modificato le dimensioni della riga o della colonna.
virtual void RecalcLayout();
Osservazioni:
Chiamare questa funzione membro per riprodurre correttamente la finestra di divisione dopo aver modificato le dimensioni di riga e colonna con le SetRowInfo
funzioni membro e SetColumnInfo
. Se si modificano le dimensioni di riga e colonna come parte del processo di creazione prima che la finestra di suddivisione sia visibile, non è necessario chiamare questa funzione membro.
Il framework chiama questa funzione membro ogni volta che l'utente ridimensiona la finestra di divisione o sposta una divisione.
Esempio
Vedere l'esempio per CSplitterWnd::SetColumnInfo
.
CSplitterWnd::SetActivePane
Imposta un riquadro come attivo nel frame.
virtual void SetActivePane(
int row,
int col,
CWnd* pWnd = NULL);
Parametri
row
Se pWnd
è NULL
, specifica la riga nel riquadro che sarà attiva.
col
Se pWnd
è NULL
, specifica la colonna nel riquadro che sarà attiva.
pWnd
Puntatore a un oggetto CWnd
. Se NULL
, il riquadro specificato da row
e col
è impostato come attivo. Se non NULL
, specifica il riquadro impostato come attivo.
Osservazioni:
Questa funzione membro viene chiamata dal framework per impostare un riquadro come attivo quando l'utente modifica lo stato attivo in un riquadro all'interno della finestra cornice. È possibile chiamare SetActivePane
in modo esplicito per modificare lo stato attivo sulla visualizzazione specificata.
Specificare il riquadro specificando riga e colonna oppure specificando pWnd
.
CSplitterWnd::SetColumnInfo
Chiamare per impostare le informazioni sulla colonna specificate.
void SetColumnInfo(
int col,
int cxIdeal,
int cxMin);
Parametri
col
Specifica una colonna della finestra di divisione.
cxIdeal
Specifica una larghezza ideale per la colonna della finestra di divisione in pixel.
cxMin
Specifica una larghezza minima per la colonna della finestra di divisione in pixel.
Osservazioni:
Chiamare questa funzione membro per impostare una nuova larghezza minima e una larghezza ideale per una colonna. Il valore minimo della colonna determina quando la colonna sarà troppo piccola da visualizzare completamente.
Quando il framework visualizza la finestra di divisione, dispone i riquadri in colonne e righe in base alle dimensioni ideali, lavorando dall'angolo superiore sinistro all'angolo inferiore destro dell'area client della finestra di divisione.
Esempio
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
Chiamare per impostare le informazioni sulla riga specificate.
void SetRowInfo(
int row,
int cyIdeal,
int cyMin);
Parametri
row
Specifica una riga della finestra di divisione.
cyIdeal
Specifica un'altezza ideale per la riga della finestra di divisione in pixel.
cyMin
Specifica un'altezza minima per la riga della finestra di divisione in pixel.
Osservazioni:
Chiamare questa funzione membro per impostare una nuova altezza minima e un'altezza ideale per una riga. Il valore minimo della riga determina quando la riga sarà troppo piccola da visualizzare completamente.
Quando il framework visualizza la finestra di divisione, dispone i riquadri in colonne e righe in base alle dimensioni ideali, lavorando dall'angolo superiore sinistro all'angolo inferiore destro dell'area client della finestra di divisione.
CSplitterWnd::SetScrollStyle
Specifica il nuovo stile di scorrimento per il supporto della barra di scorrimento condivisa della finestra di divisione.
void SetScrollStyle(DWORD dwStyle);
Parametri
dwStyle
Nuovo stile di scorrimento per il supporto della barra di scorrimento condivisa della finestra di divisione, che può essere uno dei valori seguenti:
WS_HSCROLL
Crea/mostra barre di scorrimento condivise orizzontali.WS_VSCROLL
Creare/visualizzare barre di scorrimento condivise verticali.
Osservazioni:
Una volta creata una barra di scorrimento, non verrà eliminata definitivamente anche se SetScrollStyle
viene chiamato senza tale stile. Le barre di scorrimento sono invece nascoste. In questo modo le barre di scorrimento mantengono lo stato anche se sono nascoste. Dopo aver chiamato SetScrollStyle
, è necessario chiamare RecalcLayout
per rendere effettive tutte le modifiche.
CSplitterWnd::SplitColumn
Indica la posizione di divisione verticale di una finestra cornice.
virtual BOOL SplitColumn(int cxBefore);
Parametri
cxBefore
Posizione, in pixel, prima della quale si verifica la divisione.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Questa funzione membro viene chiamata quando viene creata una finestra di divisione verticale. SplitColumn
indica la posizione predefinita in cui si verifica la divisione.
SplitColumn
viene chiamato dal framework per implementare la logica della finestra di divisione dinamica, ovvero se la finestra di divisione ha lo SPLS_DYNAMIC_SPLIT
stile . Può essere personalizzato, insieme alla funzione CreateView
virtuale , per implementare splitter dinamici più avanzati.
CSplitterWnd::SplitRow
Indica dove una finestra cornice viene divisa orizzontalmente.
virtual BOOL SplitRow(int cyBefore);
Parametri
cyBefore
Posizione, in pixel, prima della quale si verifica la divisione.
Valore restituito
Diverso da zero se ha esito positivo; in caso contrario 0.
Osservazioni:
Questa funzione membro viene chiamata quando viene creata una finestra di divisione orizzontale. SplitRow
indica la posizione predefinita in cui si verifica la divisione.
SplitRow
viene chiamato dal framework per implementare la logica della finestra di divisione dinamica, ovvero se la finestra di divisione ha lo SPLS_DYNAMIC_SPLIT
stile . Può essere personalizzato, insieme alla funzione CreateView
virtuale , per implementare splitter dinamici più avanzati.
CSplitterWnd::OnDraw
Chiamato dal framework per disegnare la finestra di divisione.
virtual void OnDraw(CDC* pDC);
Parametri
pDC
Puntatore a un contesto di dispositivo.
Osservazioni:
Vedi anche
Esempio MFC VIEWEX
CWnd
Classe
Grafico della gerarchia
CView
Classe