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 CView
diesem 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:
Betten Sie eine
CSplitterWnd
Membervariable in den übergeordneten Frame ein.Überschreiben Sie die Memberfunktion des übergeordneten
CFrameWnd::OnCreateClient
Frames.Rufen Sie in der außerkraftsetzung
OnCreateClient
die Funktion oderCreateStatic
MemberfunktionCreate
vonCSplitterWnd
.
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 Create
geben 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 Create
haben, 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 Create
an, 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
CSplitterWnd
Anforderungen
Header: afxext.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:
Betten Sie eine
CSplitterWnd
Membervariable in den übergeordneten Frame ein.Überschreiben Sie die Memberfunktion des übergeordneten
CFrameWnd::OnCreateClient
Frames.Rufen Sie die
Create
Memberfunktion innerhalb des außerkraftsetzungenOnCreateClient
auf.
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:
Betten Sie eine
CSplitterWnd
Membervariable in den übergeordneten Frame ein.Überschreiben Sie die Memberfunktion des übergeordneten
OnCreateClient
Frames.Rufen Sie die
CreateStatic
Memberfunktion innerhalb des außerkraftsetzungenCFrameWnd::OnCreateClient
auf.
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 dwStyle
hinzuWS_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 CreateView
angepasst 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 CreateView
angepasst 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 PostNcDestroy
wird.
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 CreateView
angepasst 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 bDoScroll
FALSE
(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 bDoScroll
FALSE
(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 sizeScroll
angegeben 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 CView
abgeleitete 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 pRow
pCol
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
Ein Beispiel hierfür finden Sie unter 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 BildlaufleistenWS_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 SetScrollStyle
ist 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 CreateView
angepasst 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 CreateView
angepasst 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