CSplitterWnd-Klasse

Stellt die Funktionalität eines unterteilten Fensters bereit. Dabei handelt es sich um ein Fenster, das mehrere Bereiche enthält.

Syntax

class CSplitterWnd : public CWnd

Member

Öffentliche Konstruktoren

Name Beschreibung
CSplitterWnd::CSplitterWnd Aufrufen zum Erstellen eines CSplitterWnd Objekts.

Öffentliche Methoden

Name Beschreibung
CSplitterWnd::ActivateNext Führt den Befehl "Nächster Bereich" oder "Vorheriger Bereich" aus.
CSplitterWnd::CanActivateNext Überprüft, ob der Befehl "Nächster Bereich" oder "Vorheriger Bereich" zurzeit möglich ist.
CSplitterWnd::Create Rufen Sie auf, um ein dynamisches Teilerfenster zu erstellen und es an das CSplitterWnd Objekt anzufügen.
CSplitterWnd::CreateScrollBarCtrl Erstellt ein freigegebenes Bildlaufleisten-Steuerelement.
CSplitterWnd::CreateStatic Rufen Sie auf, um ein statisches Teilerfenster zu erstellen und an das CSplitterWnd Objekt anzufügen.
CSplitterWnd::CreateView Rufen Sie auf, um einen Bereich in einem Teilerfenster zu erstellen.
CSplitterWnd::DeleteColumn Löscht eine Spalte aus dem Splitterfenster.
CSplitterWnd::DeleteRow Löscht eine Zeile aus dem Teilerfenster.
CSplitterWnd::DeleteView Löscht eine Ansicht aus dem Splitterfenster.
CSplitterWnd::DoKeyboardSplit Führt den Befehl zum Teilen der Tastatur aus, in der Regel "Fenster teilen".
CSplitterWnd::DoScroll Führt synchronisierten Bildlauf von geteilten Fenstern aus.
CSplitterWnd::DoScrollBy Scrollt geteilte Fenster um eine bestimmte Anzahl von Pixeln.
CSplitterWnd::GetActivePane Bestimmt den aktiven Bereich aus dem Fokus oder der aktiven Ansicht im Frame.
CSplitterWnd::GetColumnCount Gibt die Anzahl der aktuellen Bereichsspalten zurück.
CSplitterWnd::GetColumnInfo Gibt Informationen zur angegebenen Spalte zurück.
CSplitterWnd::GetPane Gibt den Bereich an der angegebenen Zeile und Spalte zurück.
CSplitterWnd::GetRowCount Gibt die Anzahl der aktuellen Bereichszeilen zurück.
CSplitterWnd::GetRowInfo Gibt Informationen zu der angegebenen Zeile zurück.
CSplitterWnd::GetScrollStyle Gibt die Formatvorlage für freigegebene Bildlaufleisten zurück.
CSplitterWnd::IdFromRowCol Gibt die untergeordnete Fenster-ID des Bereichs in der angegebenen Zeile und Spalte zurück.
CSplitterWnd::IsChildPane Rufen Sie auf, um zu bestimmen, ob das Fenster derzeit ein untergeordneter Bereich dieses Teilerfensters ist.
CSplitterWnd::IsTracking Bestimmt, ob die Teilerleiste zurzeit verschoben wird.
CSplitterWnd::RecalcLayout Rufen Sie auf, um das Teilerfenster nach dem Anpassen der Zeilen- oder Spaltengröße erneut anzuzeigen.
CSplitterWnd::SetActivePane Legt einen Bereich auf den aktiven Bereich im Frame fest.
CSplitterWnd::SetColumnInfo Aufrufen, um die angegebenen Spalteninformationen festzulegen.
CSplitterWnd::SetRowInfo Aufrufen, um die angegebenen Zeileninformationen festzulegen.
CSplitterWnd::SetScrollStyle Gibt die neue Bildlaufleistenart für die unterstützung des geteilten Fensters für die Bildlaufleiste an.
CSplitterWnd::SplitColumn Gibt an, wo ein Rahmenfenster vertikal geteilt wird.
CSplitterWnd::SplitRow Gibt an, wo ein Rahmenfenster horizontal geteilt wird.

Geschützte Methoden

Name Beschreibung
CSplitterWnd::OnDraw Wird vom Framework aufgerufen, um das Teilerfenster zu zeichnen.
CSplitterWnd::OnDrawSplitter Rendert ein Bild eines geteilten Fensters.
CSplitterWnd::OnInvertTracker Rendert das Bild eines geteilten Fensters so, dass es die gleiche Größe und Form wie das Rahmenfenster aufweist.

Hinweise

Bei einem Bereich handelt es sich in der Regel um ein anwendungsspezifisches Objekt, das von CViewdiesem abgeleitet wird. Es kann sich jedoch um ein beliebiges CWnd Objekt handeln, das über die entsprechende untergeordnete Fenster-ID verfügt.

Ein CSplitterWnd Objekt wird in der Regel in ein übergeordnetes CFrameWnd Objekt oder CMDIChildWnd Objekt eingebettet. Erstellen Sie ein CSplitterWnd Objekt mithilfe der folgenden Schritte:

  1. Betten Sie eine CSplitterWnd Membervariable in den übergeordneten Frame ein.

  2. Überschreiben Sie die Memberfunktion des übergeordneten CFrameWnd::OnCreateClient Frames.

  3. Rufen Sie in der außerkraftsetzung OnCreateClientdie Funktion oder CreateStatic Memberfunktion Create von CSplitterWnd.

Rufen Sie die Create Memberfunktion auf, um ein dynamisches Teilerfenster zu erstellen. Ein dynamisches Teilerfenster wird in der Regel verwendet, um eine Reihe einzelner Bereiche oder Ansichten desselben Dokuments zu erstellen und zu scrollen. Das Framework erstellt automatisch einen anfänglichen Bereich für den Teiler; anschließend erstellt, ändert sich die Größe des Frameworks und entfernt zusätzliche Bereiche, während der Benutzer die Steuerelemente des Splitterfensters betreibt.

Beim Aufrufen Creategeben Sie eine Mindestzeilenhöhe und Spaltenbreite an, die bestimmen, wann die Bereiche zu klein sind, um vollständig angezeigt werden zu können. Nachdem Sie aufgerufen Createhaben, können Sie diese Mindestwerte anpassen, indem Sie die SetColumnInfo Funktionen und SetRowInfo Memberfunktionen aufrufen.

Verwenden Sie außerdem die SetColumnInfo Funktionen und SetRowInfo Member, um eine "ideale" Breite für eine Spalte und eine "ideale" Höhe für eine Zeile festzulegen. Wenn das Framework ein Teilerfenster anzeigt, zeigt es zuerst den übergeordneten Frame und dann das Teilerfenster an. Das Framework legt dann die Bereiche in Spalten und Zeilen entsprechend ihren idealen Dimensionen fest, die von der oberen linken bis zur unteren rechten Ecke des Clientbereichs des Teilers funktionieren.

Alle Bereiche in einem dynamischen Teilerfenster müssen derselben Klasse entsprechen. Vertraute Anwendungen, die dynamische Splitterfenster unterstützen, umfassen Microsoft Word und Microsoft Excel.

Verwenden Sie die CreateStatic Memberfunktion, um ein statisches Teilerfenster zu erstellen. Der Benutzer kann nur die Größe der Bereiche in einem statischen Teilerfenster ändern, nicht seine Nummer oder Reihenfolge.

Sie müssen speziell alle Bereiche des statischen Spliters erstellen, wenn Sie den statischen Teiler erstellen. Stellen Sie sicher, dass Sie alle Bereiche erstellen, bevor die Memberfunktion des OnCreateClient übergeordneten Frames zurückgegeben wird, oder das Framework zeigt das Fenster nicht ordnungsgemäß an.

Die CreateStatic Memberfunktion initialisiert automatisch einen statischen Teiler mit einer Mindestzeilenhöhe und Spaltenbreite von 0. Passen Sie diese Mindestwerte nach dem Aufruf Createan, indem Sie die SetColumnInfo Funktionen und SetRowInfo Member aufrufen. Verwenden SetColumnInfo Sie auch und SetRowInfo nachdem Sie aufgerufen haben CreateStatic , um die gewünschten idealen Bereichsabmessungen anzugeben.

Die einzelnen Bereiche eines statischen Teilers gehören häufig zu verschiedenen Klassen. Beispiele für statische Teilerfenster finden Sie im Grafik-Editor und im Windows-Datei-Manager.

Ein Teilerfenster unterstützt spezielle Bildlaufleisten (abgesehen von den Bildlaufleisten, über die Bereiche verfügen können). Diese Bildlaufleisten sind untergeordnete Elemente des CSplitterWnd Objekts und werden für die Bereiche freigegeben.

Sie erstellen diese speziellen Bildlaufleisten, wenn Sie das Teilerfenster erstellen. Beispielsweise zeigt eine CSplitterWnd Zeile, zwei Spalten und die WS_VSCROLL Formatvorlage eine vertikale Bildlaufleiste an, die von den beiden Bereichen gemeinsam genutzt wird. Wenn der Benutzer die Bildlaufleiste verschiebt, WM_VSCROLL werden Nachrichten an beide Bereiche gesendet. Wenn die Bereiche die Bildlaufleistenposition festlegen, wird die freigegebene Bildlaufleiste festgelegt.

Weitere Informationen zu Splitterfenstern finden Sie in technischem Hinweis 29.

Weitere Informationen zum Erstellen dynamischer Splitterfenster finden Sie unter:

Vererbungshierarchie

CObject

CCmdTarget

CWnd

CSplitterWnd

Anforderungen

Headerafxext.h:

CSplitterWnd::ActivateNext

Vom Framework aufgerufen, um den Befehl "Nächster Bereich" oder "Vorheriger Bereich" auszuführen.

virtual void ActivateNext(BOOL bPrev = FALSE);

Parameter

bPrev
Gibt an, welches Fenster aktiviert werden soll. TRUE für vorherige; FALSE für nächstes.

Hinweise

Diese Memberfunktion ist ein Befehl auf hoher Ebene, der von der CView Klasse zum Delegieren an die CSplitterWnd Implementierung verwendet wird.

CSplitterWnd::CanActivateNext

Wird vom Framework aufgerufen, um zu überprüfen, ob der Befehl "Nächster Bereich" oder "Vorheriger Bereich" zurzeit möglich ist.

virtual BOOL CanActivateNext(BOOL bPrev = FALSE);

Parameter

bPrev
Gibt an, welches Fenster aktiviert werden soll. TRUE für vorherige; FALSE für nächstes.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Diese Memberfunktion ist ein Befehl auf hoher Ebene, der von der CView Klasse zum Delegieren an die CSplitterWnd Implementierung verwendet wird.

CSplitterWnd::Create

Rufen Sie die Create Memberfunktion auf, um ein dynamisches Teilerfenster zu erstellen.

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

Parameter

pParentWnd
Das übergeordnete Rahmenfenster des Teilerfensters.

nMaxRows
Die maximale Anzahl von Zeilen im Teilerfenster. Dieser Wert darf 2 nicht überschreiten.

nMaxCols
Die maximale Anzahl von Spalten im Teilerfenster. Dieser Wert darf 2 nicht überschreiten.

sizeMin
Gibt die Mindestgröße an, in der ein Bereich angezeigt werden kann.

pContext
Ein Zeiger auf eine CCreateContext Struktur. In den meisten Fällen kann dies das pContext übergebene An das übergeordnete Rahmenfenster sein.

dwStyle
Gibt die Fensterformatvorlage an.

nID
Die untergeordnete Fenster-ID des Fensters. Die ID kann sein AFX_IDW_PANE_FIRST , es sei denn, das Splitterfenster ist in einem anderen Splitterfenster geschachtelt.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Sie können ein Objekt CSplitterWnd in ein übergeordnetes CFrameWnd Objekt CMDIChildWnd einbetten, indem Sie die folgenden Schritte ausführen:

  1. Betten Sie eine CSplitterWnd Membervariable in den übergeordneten Frame ein.

  2. Überschreiben Sie die Memberfunktion des übergeordneten CFrameWnd::OnCreateClient Frames.

  3. Rufen Sie die Create Memberfunktion innerhalb des außerkraftsetzungen OnCreateClientauf.

Wenn Sie ein Teilerfenster aus einem übergeordneten Frame erstellen, übergeben Sie den Parameter des übergeordneten pContext Frames an das Teilerfenster. Andernfalls kann dieser Parameter sein NULL.

Die anfängliche Mindestzeilenhöhe und Spaltenbreite eines dynamischen Splitterfensters werden durch den sizeMin Parameter festgelegt. Diese Mindestwerte, die bestimmen, ob ein Bereich zu klein ist, um vollständig angezeigt zu werden, kann mit den SetRowInfo Funktionen und SetColumnInfo Membern geändert werden.

Weitere Informationen zu dynamischen Teilerfenstern finden Sie unter "Splitter Windows" im Artikel "Multiple Document Types, Views, and Frame Windows, Technical Note 29, and the CSplitterWnd class overview".

Beispiel

// 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

Vom Framework aufgerufen, um ein freigegebenes Bildlaufleisten-Steuerelement zu erstellen.

virtual BOOL CreateScrollBarCtrl(
    DWORD dwStyle,
    UINT nID);

Parameter

dwStyle
Gibt die Fensterformatvorlage an.

nID
Die untergeordnete Fenster-ID des Fensters. Die ID kann sein AFX_IDW_PANE_FIRST , es sei denn, das Splitterfenster ist in einem anderen Splitterfenster geschachtelt.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Überschreiben, um zusätzliche Steuerelemente neben einer Bildlaufleiste einzuschließen CreateScrollBarCtrl . Das Standardverhalten besteht darin, normale Windows-Bildlaufleisten-Steuerelemente zu erstellen.

CSplitterWnd::CreateStatic

Rufen Sie die CreateStatic Memberfunktion auf, um ein statisches Teilerfenster zu erstellen.

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

Parameter

pParentWnd
Das übergeordnete Rahmenfenster des Teilerfensters.

nRows
Die Anzahl der Zeilen. Dieser Wert darf 16 nicht überschreiten.

nCols
Die Anzahl der Spalten. Dieser Wert darf 16 nicht überschreiten.

dwStyle
Gibt die Fensterformatvorlage an.

nID
Die untergeordnete Fenster-ID des Fensters. Die ID kann sein AFX_IDW_PANE_FIRST , es sei denn, das Splitterfenster ist in einem anderen Splitterfenster geschachtelt.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

A CSplitterWnd wird in der Regel in ein übergeordnetes CFrameWnd Objekt eingebettet CMDIChildWnd , indem die folgenden Schritte ausgeführt werden:

  1. Betten Sie eine CSplitterWnd Membervariable in den übergeordneten Frame ein.

  2. Überschreiben Sie die Memberfunktion des übergeordneten OnCreateClient Frames.

  3. Rufen Sie die CreateStatic Memberfunktion innerhalb des außerkraftsetzungen CFrameWnd::OnCreateClientauf.

Ein statisches Teilerfenster enthält eine feste Anzahl von Bereichen, häufig aus verschiedenen Klassen.

Wenn Sie ein statisches Teilerfenster erstellen, müssen Sie gleichzeitig alle zugehörigen Bereiche erstellen. Die CreateView Memberfunktion wird in der Regel für diesen Zweck verwendet, Sie können aber auch andere Nichtansichtsklassen erstellen.

Die anfängliche Mindestzeilenhöhe und Spaltenbreite für ein statisches Teilerfenster beträgt 0. Diese Mindestwerte, die bestimmen, wann ein Bereich zu klein ist, um vollständig angezeigt zu werden, kann mit den SetRowInfo Funktionen und SetColumnInfo Membern geändert werden.

Zum Hinzufügen von Bildlaufleisten zu einem statischen Teilerfenster fügen Sie die WS_HSCROLL Formatvorlagen dwStylehinzuWS_VSCROLL.

Weitere Informationen zu statischen Teilerfenstern finden Sie im Artikel "Splitter Windows", "Mehrere Dokumenttypen", "Ansichten" und "Frame Windows", "Technical Note 29" CSplitterWnd .

CSplitterWnd::CreateView

Erstellt die Bereiche für ein statisches Teilerfenster.

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

Parameter

row
Gibt die Teilerfensterzeile an, in der die neue Ansicht platziert werden soll.

col
Gibt die Spalte des Geteilter Fensters an, in der die neue Ansicht platziert werden soll.

pViewClass
Gibt die CRuntimeClass neue Ansicht an.

sizeInit
Gibt die Anfangsgröße der neuen Ansicht an.

pContext
Ein Zeiger auf einen Erstellungskontext, der zum Erstellen der Ansicht verwendet wird (in der Regel wird die pContext überschriebene CFrameWnd::OnCreateClient Memberfunktion des übergeordneten Frames übergeben, in der das Teilerfenster erstellt wird).

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Alle Bereiche eines statischen Teilerfensters müssen erstellt werden, bevor das Framework den Teiler anzeigt.

Das Framework ruft diese Memberfunktion auch auf, um neue Bereiche zu erstellen, wenn der Benutzer eines dynamischen Teilerfensters einen Bereich, eine Zeile oder Spalte teilt.

Beispiel

// 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

Aufrufen zum Erstellen eines CSplitterWnd Objekts.

CSplitterWnd();

Hinweise

Erstellen Sie ein CSplitterWnd Objekt in zwei Schritten. Rufen Sie zuerst den Konstruktor auf, der das CSplitterWnd Objekt erstellt, und rufen Sie dann die Create Memberfunktion auf, die das Splitterfenster erstellt und an das CSplitterWnd Objekt anfügt.

CSplitterWnd::DeleteColumn

Löscht eine Spalte aus dem Splitterfenster.

virtual void DeleteColumn(int colDelete);

Parameter

colDelete
Gibt die zu löschende Spalte an.

Hinweise

Diese Memberfunktion wird vom Framework aufgerufen, um die Logik des dynamischen Splitterfensters zu implementieren (d. r., wenn das Teilerfenster über die SPLS_DYNAMIC_SPLIT Formatvorlage verfügt). Sie kann zusammen mit der virtuellen Funktion CreateViewangepasst werden, um komplexere dynamische Splitter zu implementieren.

CSplitterWnd::DeleteRow

Löscht eine Zeile aus dem Teilerfenster.

virtual void DeleteRow(int rowDelete);

Parameter

rowDelete
Gibt die zu löschende Zeile an.

Hinweise

Diese Memberfunktion wird vom Framework aufgerufen, um die Logik des dynamischen Splitterfensters zu implementieren (d. r., wenn das Teilerfenster über die SPLS_DYNAMIC_SPLIT Formatvorlage verfügt). Sie kann zusammen mit der virtuellen Funktion CreateViewangepasst werden, um komplexere dynamische Splitter zu implementieren.

CSplitterWnd::DeleteView

Löscht eine Ansicht aus dem Splitterfenster.

virtual void DeleteView(
    int row,
    int col);

Parameter

row
Gibt die Teilerfensterzeile an, an der die Ansicht gelöscht werden soll.

col
Gibt die Spalte des Geteilter Fensters an, in der die Ansicht gelöscht werden soll.

Hinweise

Wenn die aktive Ansicht gelöscht wird, wird die nächste Ansicht aktiv. Bei der Standardimplementierung wird davon ausgegangen, dass die Ansicht automatisch gelöscht PostNcDestroywird.

Diese Memberfunktion wird vom Framework aufgerufen, um die Logik des dynamischen Splitterfensters zu implementieren (d. r., wenn das Teilerfenster über die SPLS_DYNAMIC_SPLIT Formatvorlage verfügt). Sie kann zusammen mit der virtuellen Funktion CreateViewangepasst werden, um komplexere dynamische Splitter zu implementieren.

CSplitterWnd::DoKeyboardSplit

Führt den Befehl zum Teilen der Tastatur aus, in der Regel "Fenster teilen".

virtual BOOL DoKeyboardSplit();

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Diese Memberfunktion ist ein Befehl auf hoher Ebene, der von der CView Klasse zum Delegieren an die CSplitterWnd Implementierung verwendet wird.

CSplitterWnd::DoScroll

Führt synchronisierten Bildlauf von geteilten Fenstern aus.

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

Parameter

pViewFrom
Ein Zeiger auf die Ansicht, aus der die Bildlaufnachricht stammt.

nScrollCode
Ein Bildlaufleistencode, der die Bildlaufanforderung des Benutzers angibt. Dieser Parameter besteht aus zwei Teilen: einem Byte mit niedriger Reihenfolge, das den Typ des horizontalen Bildlaufs bestimmt, und einem Byte mit hoher Reihenfolge, das den Typ des vertikalen Bildlaufs bestimmt:

  • SB_BOTTOM Scrollt nach unten.

  • SB_LINEDOWN Scrollt eine Zeile nach unten.

  • SB_LINEUP Scrollt eine Zeile nach oben.

  • SB_PAGEDOWN Scrollt eine Seite nach unten.

  • SB_PAGEUP Scrollt eine Seite nach oben.

  • SB_TOP Scrollt nach oben.

bDoScroll
Bestimmt, ob die angegebene Bildlaufaktion auftritt. Wenn bDoScroll ( TRUE d. h., wenn ein untergeordnetes Fenster vorhanden ist und die geteilten Fenster einen Bildlaufbereich haben), kann die angegebene Bildlaufaktion ausgeführt werden; wenn bDoScrollFALSE (d. h., wenn kein untergeordnetes Fenster vorhanden ist oder die geteilten Ansichten keinen Bildlaufbereich haben), tritt kein Bildlauf auf.

Rückgabewert

Nonzero, wenn synchronisierter Bildlauf auftritt; andernfalls 0.

Hinweise

Diese Memberfunktion wird vom Framework aufgerufen, um synchronisierten Bildlauf von geteilten Fenstern durchzuführen, wenn die Ansicht eine Bildlaufnachricht empfängt. Überschreiben, um eine Aktion durch den Benutzer vor dem Synchronisieren des Bildlaufs zu verlangen.

CSplitterWnd::DoScrollBy

Scrollt geteilte Fenster um eine bestimmte Anzahl von Pixeln.

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

Parameter

pViewFrom
Ein Zeiger auf die Ansicht, aus der die Bildlaufnachricht stammt.

sizeScroll
Die Anzahl der Pixel, die horizontal und vertikal gescrollt werden sollen.

bDoScroll
Bestimmt, ob die angegebene Bildlaufaktion auftritt. Wenn bDoScroll ( TRUE d. h., wenn ein untergeordnetes Fenster vorhanden ist und die geteilten Fenster einen Bildlaufbereich haben), kann die angegebene Bildlaufaktion ausgeführt werden; wenn bDoScrollFALSE (d. h., wenn kein untergeordnetes Fenster vorhanden ist oder die geteilten Ansichten keinen Bildlaufbereich haben), tritt kein Bildlauf auf.

Rückgabewert

Nonzero, wenn synchronisierter Bildlauf auftritt; andernfalls 0.

Hinweise

Diese Memberfunktion wird vom Framework als Reaktion auf eine Bildlaufnachricht aufgerufen, um einen synchronisierten Bildlauf der geteilten Fenster um die Menge in Pixeln auszuführen, die durch sizeScrollangegeben wird. Positive Werte deuten darauf hin, dass der Bildlauf nach unten und nach rechts verschoben wird. Negative Werte deuten auf den Bildlauf nach oben und nach links hin hin.

Überschreiben, um eine Aktion durch den Benutzer vor dem Zulassen des Bildlaufs zu erfordern.

CSplitterWnd::GetActivePane

Bestimmt den aktiven Bereich aus dem Fokus oder der aktiven Ansicht im Frame.

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

Parameter

pRow
Ein Zeiger auf einen int , um die Zeilennummer des aktiven Bereichs abzurufen.

pCol
Ein Zeiger auf einen int , um die Spaltennummer des aktiven Bereichs abzurufen.

Rückgabewert

Zeigen Sie auf den aktiven Bereich. NULL wenn kein aktiver Bereich vorhanden ist.

Hinweise

Diese Memberfunktion wird vom Framework aufgerufen, um den aktiven Bereich in einem Teilerfenster zu bestimmen. Überschreiben, um eine Aktion durch den Benutzer zu erfordern, bevor der aktive Bereich angezeigt wird.

CSplitterWnd::GetColumnCount

Gibt die Anzahl der aktuellen Bereichsspalten zurück.

int GetColumnCount() const;

Rückgabewert

Gibt die aktuelle Anzahl von Spalten im Teiler zurück. Bei einem statischen Teiler ist dies auch die maximale Anzahl von Spalten.

CSplitterWnd::GetColumnInfo

Gibt Informationen zur angegebenen Spalte zurück.

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

Parameter

col
Gibt eine Spalte an.

cxCur
Ein Verweis auf einen int , der auf die aktuelle Breite der Spalte festgelegt werden soll.

cxMin
Ein Verweis auf einen int , der auf die aktuelle Mindestbreite der Spalte festgelegt werden soll.

CSplitterWnd::GetPane

Gibt den Bereich an der angegebenen Zeile und Spalte zurück.

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

Parameter

row
Gibt eine Zeile an.

col
Gibt eine Spalte an.

Rückgabewert

Gibt den Bereich an der angegebenen Zeile und Spalte zurück. Der zurückgegebene Bereich ist in der Regel eine CViewabgeleitete Klasse.

CSplitterWnd::GetRowCount

Gibt die Anzahl der aktuellen Bereichszeilen zurück.

int GetRowCount() const;

Rückgabewert

Gibt die aktuelle Anzahl von Zeilen im Teilerfenster zurück. Bei einem statischen Teilerfenster ist dies auch die maximale Anzahl von Zeilen.

CSplitterWnd::GetRowInfo

Gibt Informationen zu der angegebenen Zeile zurück.

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

Parameter

row
Gibt eine Zeile an.

cyCur
Bezug, int der auf die aktuelle Höhe der Zeile in Pixel festgelegt werden soll.

cyMin
Bezug, int der auf die aktuelle Mindesthöhe der Zeile in Pixel festgelegt werden soll.

Hinweise

Rufen Sie diese Memberfunktion auf, um Informationen zur angegebenen Zeile abzurufen. Der cyCur Parameter wird mit der aktuellen Höhe der angegebenen Zeile gefüllt und cyMin mit der Mindesthöhe der Zeile gefüllt.

CSplitterWnd::GetScrollStyle

Gibt die Formatvorlage für die freigegebene Bildlaufleiste für das Teilerfenster zurück.

DWORD GetScrollStyle() const;

Rückgabewert

Mindestens eine der folgenden Fensterstilkennzeichnungen, falls erfolgreich:

  • WS_HSCROLL Wenn der Teiler derzeit freigegebene horizontale Bildlaufleisten verwaltet.

  • WS_VSCROLL Wenn der Teiler zurzeit freigegebene vertikale Bildlaufleisten verwaltet.

Wenn null, verwaltet das Teilerfenster derzeit keine freigegebenen Bildlaufleisten.

CSplitterWnd::IdFromRowCol

Ruft die untergeordnete Fenster-ID für den Bereich in der angegebenen Zeile und Spalte ab.

int IdFromRowCol(
    int row,
    int col) const;

Parameter

row
Gibt die Zeile für das Teilerfenster an.

col
Gibt die Spalte für das Teilerfenster an.

Rückgabewert

Die untergeordnete Fenster-ID für den Bereich.

Hinweise

Diese Memberfunktion wird zum Erstellen von Nichtansichten als Bereiche verwendet und kann aufgerufen werden, bevor der Bereich vorhanden ist.

Beispiel

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

Bestimmt, ob pWnd es sich derzeit um einen untergeordneten Bereich dieses Teilerfensters handelt.

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

Parameter

pWnd
Ein Zeiger auf ein CWnd zu testende Objekt.

pRow
Ein Zeiger auf eine int Zeile, in der zeilennummer gespeichert werden soll.

pCol
Ein Zeiger auf einen int , in dem eine Spaltennummer gespeichert werden soll.

Rückgabewert

Ist nonzero pWnd derzeit ein untergeordneter Bereich dieses Teilerfensters und pRowpCol wird mit der Position des Bereichs im Teilerfenster ausgefüllt. Wenn pWnd es sich nicht um einen untergeordneten Bereich dieses Teilerfensters handelt, wird 0 zurückgegeben.

Hinweise

In Visual C++-Versionen vor 6.0 wurde diese Funktion definiert als

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

Diese Version ist jetzt veraltet und sollte nicht verwendet werden.

CSplitterWnd::IsTracking

Rufen Sie diese Memberfunktion auf, um zu ermitteln, ob die Teilerleiste im Fenster zurzeit verschoben wird.

BOOL IsTracking();

Rückgabewert

Nonzero, wenn ein Splittervorgang ausgeführt wird; andernfalls 0.

CSplitterWnd::OnDrawSplitter

Rendert ein Bild eines geteilten Fensters.

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

Parameter

pDC
Ein Zeiger auf den Gerätekontext, in dem gezeichnet werden soll. Wenn pDC ja NULL, wird das CWnd::RedrawWindow Framework aufgerufen, und es wird kein geteiltes Fenster gezeichnet.

nType
Ein Wert des enum ESplitType, der eine der folgenden Sein kann:

  • splitBox Das Teilerziehfeld.

  • splitBar Die Leiste, die zwischen den beiden geteilten Fenstern angezeigt wird.

  • splitIntersection Die Schnittmenge der geteilten Fenster. Dieses Element wird nicht aufgerufen, wenn es unter Windows 95/98 ausgeführt wird.

  • splitBorder Die Rahmen des geteilten Fensters.

rect
Ein Verweis auf ein CRect Objekt, das die Größe und Form der geteilten Fenster angibt.

Hinweise

Diese Memberfunktion wird vom Framework aufgerufen, um die genauen Merkmale eines Teilerfensters zu zeichnen und anzugeben. Überschreiben OnDrawSplitter Sie die erweiterte Anpassung der Bilder für die verschiedenen grafischen Komponenten eines Splitterfensters. Die Standardimages ähneln dem Splitter in Microsoft Works für Windows oder Microsoft Windows 95/98, da die Schnittmengen der Teilerleisten miteinander kombiniert werden.

Weitere Informationen zu dynamischen Teilerfenstern finden Sie unter "Splitter Windows" im Artikel "Multiple Document Types, Views, and Frame Windows, Technical Note 29, and the CSplitterWnd class overview".

CSplitterWnd::OnInvertTracker

Rendert das Bild eines geteilten Fensters so, dass es die gleiche Größe und Form wie das Rahmenfenster aufweist.

virtual void OnInvertTracker(const CRect& rect);

Parameter

rect
Verweis auf ein CRect Objekt, das das Nachverfolgungsrechteck angibt.

Hinweise

Diese Memberfunktion wird beim Ändern der Größe von Splittern vom Framework aufgerufen. Überschreiben OnInvertTracker Sie die erweiterte Anpassung des Bilds des Splitterfensters. Die Standardimages ähneln dem Splitter in Microsoft Works für Windows oder Microsoft Windows 95/98, da die Schnittmengen der Teilerleisten miteinander kombiniert werden.

Weitere Informationen zu dynamischen Teilerfenstern finden Sie unter "Splitter Windows" im Artikel "Multiple Document Types, Views, and Frame Windows, Technical Note 29, and the CSplitterWnd class overview".

CSplitterWnd::RecalcLayout

Rufen Sie auf, um das Teilerfenster nach dem Anpassen der Zeilen- oder Spaltengröße erneut anzuzeigen.

virtual void RecalcLayout();

Hinweise

Rufen Sie diese Memberfunktion auf, um das Teilerfenster ordnungsgemäß erneut anzuzeigen, nachdem Sie Zeilen- und Spaltengrößen mit den SetRowInfo Funktionen und SetColumnInfo Memberfunktionen angepasst haben. Wenn Sie die Zeilen- und Spaltengrößen im Rahmen des Erstellungsprozesses ändern, bevor das Teilerfenster sichtbar ist, ist es nicht erforderlich, diese Memberfunktion aufzurufen.

Das Framework ruft diese Memberfunktion auf, wenn der Benutzer die Größe des Splitterfensters ändert oder eine Unterbrechung verschiebt.

Beispiel

Sehen Sie sich das Beispiel für CSplitterWnd::SetColumnInfo.

CSplitterWnd::SetActivePane

Legt einen Bereich auf den aktiven Bereich im Frame fest.

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

Parameter

row
Wenn pWnd dies der Wert ist NULL, gibt die Zeile im Bereich an, die aktiv ist.

col
Wenn pWnd dies der Wert ist NULL, gibt die Spalte im Bereich an, der aktiv ist.

pWnd
Ein Zeiger auf ein CWnd-Objekt. Wenn NULL, der bereich, der durch row und col festgelegt wird aktiv ist. Wenn nicht NULL, gibt den Bereich an, der aktiv festgelegt ist.

Hinweise

Diese Memberfunktion wird vom Framework aufgerufen, um einen Bereich als aktiv festzulegen, wenn der Benutzer den Fokus in einen Bereich im Rahmenfenster ändert. Sie können explizit aufrufen SetActivePane , um den Fokus in die angegebene Ansicht zu ändern.

Geben Sie den Bereich an, indem Sie entweder Zeile und Spalte angeben oder angeben pWnd.

CSplitterWnd::SetColumnInfo

Aufrufen, um die angegebenen Spalteninformationen festzulegen.

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

Parameter

col
Gibt eine Splitterfensterspalte an.

cxIdeal
Gibt eine ideale Breite für die Spalte des Teilerfensters in Pixeln an.

cxMin
Gibt eine Mindestbreite für die Spalte des Splitterfensters in Pixeln an.

Hinweise

Rufen Sie diese Memberfunktion auf, um eine neue Mindestbreite und ideale Breite für eine Spalte festzulegen. Der Mindestwert der Spalte bestimmt, wann die Spalte zu klein ist, um vollständig angezeigt zu werden.

Wenn das Framework das Teilerfenster anzeigt, werden die Bereiche in Spalten und Zeilen entsprechend ihren idealen Abmessungen angeordnet, die von der oberen linken bis zur unteren rechten Ecke des Clientbereichs des Splitterfensters funktionieren.

Beispiel

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

Aufrufen, um die angegebenen Zeileninformationen festzulegen.

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

Parameter

row
Gibt eine Teilerfensterzeile an.

cyIdeal
Gibt eine ideale Höhe für die Teilerfensterzeile in Pixel an.

cyMin
Gibt eine Mindesthöhe für die Teilerfensterzeile in Pixel an.

Hinweise

Rufen Sie diese Memberfunktion auf, um eine neue Mindesthöhe und ideale Höhe für eine Zeile festzulegen. Der Zeilenminimwert bestimmt, wann die Zeile zu klein ist, um vollständig angezeigt zu werden.

Wenn das Framework das Teilerfenster anzeigt, werden die Bereiche in Spalten und Zeilen entsprechend ihren idealen Abmessungen angeordnet, die von der oberen linken bis zur unteren rechten Ecke des Clientbereichs des Splitterfensters funktionieren.

CSplitterWnd::SetScrollStyle

Gibt die neue Bildlaufformatvorlage für die unterstützung der freigegebenen Bildlaufleiste des Geteilten Fensters an.

void SetScrollStyle(DWORD dwStyle);

Parameter

dwStyle
Die neue Bildlaufformatvorlage für die unterstützung der freigegebenen Bildlaufleiste des Geteilten Fensters, die einer der folgenden Werte sein kann:

  • WS_HSCROLL Erstellen/Anzeigen horizontaler freigegebener Bildlaufleisten

  • WS_VSCROLL Erstellen/Anzeigen vertikaler freigegebener Bildlaufleisten

Hinweise

Nachdem eine Bildlaufleiste erstellt wurde, wird sie nicht zerstört, auch wenn SetScrollStyle sie ohne diese Formatvorlage aufgerufen wird. Stattdessen werden diese Bildlaufleisten ausgeblendet. Dadurch können die Bildlaufleisten ihren Zustand beibehalten, obwohl sie ausgeblendet sind. Nach dem Aufruf SetScrollStyleist es erforderlich, alle Änderungen in Kraft zu setzen RecalcLayout .

CSplitterWnd::SplitColumn

Gibt an, wo ein Rahmenfenster vertikal geteilt wird.

virtual BOOL SplitColumn(int cxBefore);

Parameter

cxBefore
Die Position in Pixeln, vor der die Teilung erfolgt.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Diese Memberfunktion wird aufgerufen, wenn ein vertikales Teilerfenster erstellt wird. SplitColumn gibt den Standardspeicherort an, an dem die Aufteilung erfolgt.

SplitColumn wird vom Framework aufgerufen, um die Logik des dynamischen Splitterfensters zu implementieren (d. r., wenn das Teilerfenster über die SPLS_DYNAMIC_SPLIT Formatvorlage verfügt). Sie kann zusammen mit der virtuellen Funktion CreateViewangepasst werden, um komplexere dynamische Splitter zu implementieren.

CSplitterWnd::SplitRow

Gibt an, wo ein Rahmenfenster horizontal geteilt wird.

virtual BOOL SplitRow(int cyBefore);

Parameter

cyBefore
Die Position in Pixeln, vor der die Teilung erfolgt.

Rückgabewert

Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).

Hinweise

Diese Memberfunktion wird aufgerufen, wenn ein horizontales Teilerfenster erstellt wird. SplitRow gibt den Standardspeicherort an, an dem die Aufteilung erfolgt.

SplitRow wird vom Framework aufgerufen, um die Logik des dynamischen Splitterfensters zu implementieren (d. r., wenn das Teilerfenster über die SPLS_DYNAMIC_SPLIT Formatvorlage verfügt). Sie kann zusammen mit der virtuellen Funktion CreateViewangepasst werden, um komplexere dynamische Splitter zu implementieren.

CSplitterWnd::OnDraw

Wird vom Framework aufgerufen, um das Teilerfenster zu zeichnen.

virtual void OnDraw(CDC* pDC);

Parameter

pDC
Ein Zeiger zu einem Gerätekontext.

Hinweise

Siehe auch

MFC-Beispiel VIEWEX
CWnd Klasse
Hierarchiediagramm
CView Klasse