Condividi tramite


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:

  1. Incorporare una CSplitterWnd variabile membro nel frame padre.

  2. Eseguire l'override della funzione membro del CFrameWnd::OnCreateClient frame padre.

  3. Dall'interno dell'oggetto sottoposto OnCreateClienta override chiamare la Create funzione membro o CreateStatic di CSplitterWnd.

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:

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

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:

  1. Incorporare una CSplitterWnd variabile membro nel frame padre.

  2. Eseguire l'override della funzione membro del CFrameWnd::OnCreateClient frame padre.

  3. Chiamare la Create funzione membro dall'interno dell'oggetto sottoposto OnCreateClienta 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:

  1. Incorporare una CSplitterWnd variabile membro nel frame padre.

  2. Eseguire l'override della funzione membro del OnCreateClient frame padre.

  3. Chiamare la CreateStatic funzione membro dall'interno dell'oggetto sottoposto CFrameWnd::OnCreateClienta 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 CreateViewvirtuale , 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 CreateViewvirtuale , 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 CreateViewvirtuale , 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 CViewclasse 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 CreateViewvirtuale , 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 CreateViewvirtuale , 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