CHeaderCtrl-Klasse
Stellt die Funktionalität des allgemeinen Windows-Headersteuerelements bereit.
Syntax
class CHeaderCtrl : public CWnd
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CHeaderCtrl::CHeaderCtrl | Erstellt ein CHeaderCtrl -Objekt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CHeaderCtrl::ClearAllFilters | Löscht alle Filter für ein Kopfzeilensteuerelement. |
CHeaderCtrl::ClearFilter | Löscht den Filter für ein Kopfzeilensteuerelement. |
CHeaderCtrl::Create | Erstellt ein Kopfzeilensteuerelement und fügt es an ein CHeaderCtrl Objekt an. |
CHeaderCtrl::CreateDragImage | Erstellt eine transparente Version des Bilds eines Elements innerhalb eines Kopfzeilensteuerelements. |
CHeaderCtrl::CreateEx | Erstellt ein Kopfzeilensteuerelement mit den angegebenen erweiterten Windows-Formatvorlagen und fügt es an ein CListCtrl Objekt an. |
CHeaderCtrl::D eleteItem | Löscht ein Element aus einem Kopfzeilensteuerelement. |
CHeaderCtrl::D rawItem | Zeichnet das angegebene Element eines Kopfzeilensteuerelements. |
CHeaderCtrl::EditFilter | Beginnt mit der Bearbeitung des angegebenen Filters eines Kopfzeilensteuerelements. |
CHeaderCtrl::GetBitmapMargin | Ruft die Breite des Rands einer Bitmap in einem Kopfzeilensteuerelement ab. |
CHeaderCtrl::GetFocusedItem | Ruft den Bezeichner des Elements im aktuellen Kopfzeilensteuerelement ab, das den Fokus hat. |
CHeaderCtrl::GetImageList | Ruft das Handle einer Bildliste ab, die zum Zeichnen von Kopfzeilenelementen in einem Kopfzeilensteuerelement verwendet wird. |
CHeaderCtrl::GetItem | Ruft Informationen zu einem Element in einem Kopfzeilensteuerelement ab. |
CHeaderCtrl::GetItemCount | Ruft die Anzahl der Elemente in einem Kopfzeilensteuerelement ab. |
CHeaderCtrl::GetItemDropDownRect | Ruft die umgebenden Rechteckinformationen für die angegebene Dropdownschaltfläche in einem Kopfzeilensteuerelement ab. |
CHeaderCtrl::GetItemRect | Ruft das umgebende Rechteck für ein bestimmtes Element in einem Kopfzeilensteuerelement ab. |
CHeaderCtrl::GetOrderArray | Ruft die Reihenfolge von Elementen von links nach rechts in einem Kopfzeilensteuerelement ab. |
CHeaderCtrl::GetOverflowRect | Ruft das umgebende Rechteck der Überlaufschaltfläche für das aktuelle Kopfzeilensteuerelement ab. |
CHeaderCtrl::HitTest | Bestimmt, welches Kopfzeilenelement sich an einem bestimmten Punkt befindet. |
CHeaderCtrl::InsertItem | Fügt ein neues Element in ein Kopfzeilensteuerelement ein. |
CHeaderCtrl::Layout | Ruft die Größe und Position eines Kopfzeilensteuerelements innerhalb eines bestimmten Rechtecks ab. |
CHeaderCtrl::OrderToIndex | Ruft den Indexwert für ein Element basierend auf seiner Reihenfolge im Kopfzeilensteuerelement ab. |
CHeaderCtrl::SetBitmapMargin | Legt die Breite des Rands einer Bitmap in einem Kopfzeilensteuerelement fest. |
CHeaderCtrl::SetFilterChangeTimeout | Legt das Timeoutintervall zwischen dem Zeitpunkt fest, zu dem eine Änderung in den Filterattributen und dem Posten einer HDN_FILTERCHANGE Benachrichtigung erfolgt. |
CHeaderCtrl::SetFocusedItem | Legt den Fokus auf ein angegebenes Kopfzeilenelement im aktuellen Kopfzeilensteuerelement fest. |
CHeaderCtrl::SetHotDivider | Ändert die Trennlinie zwischen Kopfzeilenelementen, um ein manuelles Ziehen und Ablegen eines Kopfzeilenelements anzugeben. |
CHeaderCtrl::SetImageList | Weist einem Kopfzeilensteuerelement eine Bildliste zu. |
CHeaderCtrl::SetItem | Legt die Attribute des angegebenen Elements in einem Kopfzeilensteuerelement fest. |
CHeaderCtrl::SetOrderArray | Legt die Reihenfolge von Elementen in einem Kopfzeilensteuerelement von links nach rechts fest. |
Hinweise
Ein Kopfzeilensteuerelement ist ein Fenster, das in der Regel über einer Reihe von Spalten mit Text oder Zahlen positioniert wird. Er enthält einen Titel für jede Spalte und kann in Teile unterteilt werden. Der Benutzer kann die Trennlinien ziehen, die die Teile trennen, um die Breite der einzelnen Spalten festzulegen. Eine Abbildung eines Kopfzeilensteuerelements finden Sie unter Header-Steuerelemente.
Dieses Steuerelement (und daher die Klasse) ist nur für Programme verfügbar, die CHeaderCtrl
unter Windows 95/98 und Windows NT, Version 3.51 und höher ausgeführt werden.
Zu den allgemeinen Steuerelementen für Windows 95/Internet Explorer 4.0 wurden folgende Funktionen hinzugefügt:
Benutzerdefinierte Sortierung des Kopfzeilenelements.
Kopfzeilenelement ziehen und ablegen, zum Neuanordnen von Kopfzeilenelementen. Verwenden Sie beim Erstellen des
CHeaderCtrl
Objekts die HDS_DRAGDROP Formatvorlage.Kopfzeilenspaltentext kann während der Spaltenänderung ständig angezeigt werden. Verwenden Sie beim Erstellen eines
CHeaderCtrl
Objekts die HDS_FULLDRAG Formatvorlage.Header hot tracking, which highlights the header item when the pointer is hovering over it. Verwenden Sie beim Erstellen des
CHeaderCtrl
Objekts die HDS_HOTTRACK Formatvorlage.Unterstützung für Bildlisten. Kopfzeilenelemente können Bilder enthalten, die in einem
CImageList
Objekt oder Text gespeichert sind.
Weitere Informationen zur Verwendung CHeaderCtrl
finden Sie unter "Steuerelemente und Verwenden von CHeaderCtrl".
Vererbungshierarchie
CHeaderCtrl
Anforderungen
Header: afxcmn.h
CHeaderCtrl::CHeaderCtrl
Erstellt ein CHeaderCtrl
-Objekt.
CHeaderCtrl();
Beispiel
// Declare a local CHeaderCtrl object.
CHeaderCtrl myHeaderCtrl;
// Declare a dynamic CHeaderCtrl object.
CHeaderCtrl *pmyHeaderCtrl = new CHeaderCtrl;
CHeaderCtrl::ClearAllFilters
Löscht alle Filter für ein Kopfzeilensteuerelement.
BOOL ClearAllFilters();
Rückgabewert
TRUE, wenn diese Methode erfolgreich ist; andernfalls FALSE.
Hinweise
Diese Methode implementiert das Verhalten der Win32-Nachricht HDM_CLEARFILTER mit einem Spaltenwert von -1, wie im Windows SDK beschrieben.
Beispiel
m_myHeaderCtrl.ClearAllFilters();
CHeaderCtrl::ClearFilter
Löscht den Filter für ein Kopfzeilensteuerelement.
BOOL ClearFilter(int nColumn);
Parameter
nColumn
Spaltenwert, der angibt, welcher Filter gelöscht werden soll.
Rückgabewert
TRUE, wenn diese Methode erfolgreich ist; andernfalls FALSE.
Hinweise
Diese Methode implementiert das Verhalten der Win32-Nachricht HDM_CLEARFILTER, wie im Windows SDK beschrieben.
Beispiel
int iFilt = m_myHeaderCtrl.ClearFilter(1);
CHeaderCtrl::Create
Erstellt ein Kopfzeilensteuerelement und fügt es an ein CHeaderCtrl
Objekt an.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameter
dwStyle
Gibt die Formatvorlage des Kopfzeilensteuerelements an. Eine Beschreibung der Formatvorlagen für Kopfzeilensteuerelemente finden Sie unter Header-Steuerelementstile im Windows SDK.
rect
Gibt die Größe und Position des Kopfzeilensteuerelements an. Es kann sich entweder um ein CRect-Objekt oder eine RECT-Struktur handeln.
pParentWnd
Gibt das übergeordnete Fenster des Kopfzeilensteuerelements an, in der Regel ein CDialog
. Er darf nicht NULL sein.
Nid
Gibt die ID des Kopfzeilensteuerelements an.
Rückgabewert
Nonzero, wenn die Initialisierung erfolgreich war; andernfalls 0.
Hinweise
Sie erstellen ein CHeaderCtrl
Objekt in zwei Schritten. Rufen Sie zuerst den Konstruktor auf, und rufen Sie dann auf Create
, wodurch das Headersteuerelement erstellt und an das CHeaderCtrl
Objekt angefügt wird.
Zusätzlich zu den Formatvorlagen für Kopfzeilensteuerelemente können Sie die folgenden allgemeinen Steuerelementstile verwenden, um zu bestimmen, wie sich das Kopfzeilensteuerelement positioniert und seine Größe ändert (weitere Informationen finden Sie unter "Allgemeine Steuerelementformatvorlagen "):
CCS_BOTTOM bewirkt, dass sich das Steuerelement am unteren Rand des Clientbereichs des übergeordneten Fensters positioniert und die Breite der Breite des übergeordneten Fensters entspricht.
CCS_NODIVIDER Verhindert, dass am oberen Rand des Steuerelements eine Hervorhebung mit zwei Pixeln gezeichnet wird.
CCS_NOMOVEY bewirkt, dass sich die Größe des Steuerelements horizontal, aber nicht vertikal als Reaktion auf eine WM_SIZE Nachricht ändert. Wenn die CCS_NORESIZE-Formatvorlage verwendet wird, wird diese Formatvorlage nicht angewendet. Kopfzeilensteuerelemente weisen diese Formatvorlage standardmäßig auf.
CCS_NOPARENTALIGN Verhindert, dass das Steuerelement automatisch nach oben oder unten im übergeordneten Fenster verschoben wird. Stattdessen behält das Steuerelement seine Position im übergeordneten Fenster bei, obwohl sich die Größe des übergeordneten Fensters ändert. Wenn auch die CCS_TOP- oder CCS_BOTTOM-Formatvorlage verwendet wird, wird die Höhe an die Standardeinstellung angepasst, die Position und Breite bleiben jedoch unverändert.
CCS_NORESIZE Verhindert, dass das Steuerelement beim Festlegen der Anfangsgröße oder einer neuen Größe die Standardbreite und -höhe verwendet. Stattdessen verwendet das Steuerelement die in der Anforderung für die Erstellung oder Größenanpassung angegebene Breite und Höhe.
CCS_TOP bewirkt, dass sich das Steuerelement am oberen Rand des Clientbereichs des übergeordneten Fensters positioniert und die Breite der Breite des übergeordneten Fensters entspricht.
Sie können auch die folgenden Fensterformatvorlagen auf ein Kopfzeilensteuerelement anwenden (weitere Informationen finden Sie unter "Fensterformatvorlagen "):
WS_CHILD Erstellt ein untergeordnetes Fenster. Kann nicht mit der WS_POPUP-Formatvorlage verwendet werden.
WS_VISIBLE Erstellt ein anfangs sichtbares Fenster.
WS_DISABLED Erstellt ein anfangs deaktiviertes Fenster.
WS_GROUP Gibt das erste Steuerelement einer Gruppe von Steuerelementen an, in der der Benutzer mit den Pfeiltasten von einem Steuerelement zum nächsten wechseln kann. Alle Steuerelemente, die nach dem ersten Steuerelement mit der WS_GROUP Formatvorlage definiert sind, gehören derselben Gruppe an. Das nächste Steuerelement mit der WS_GROUP Formatvorlage endet die Formatvorlagengruppe und startet die nächste Gruppe (d. a. eine Gruppe endet an der nächsten Stelle).
WS_TABSTOP Gibt eine beliebige Anzahl von Steuerelementen an, über die der Benutzer mithilfe der TAB-TASTE navigieren kann. Die TAB-TASTE verschiebt den Benutzer zum nächsten Steuerelement, das durch die WS_TABSTOP Formatvorlage angegeben wird.
Wenn Sie erweiterte Fensterstile mit Ihrem Steuerelement verwenden möchten, rufen Sie CreateEx anstelle von Create
.
Beispiel
// pParentWnd is a pointer to the parent window.
m_myHeaderCtrl.Create(WS_CHILD | WS_VISIBLE | HDS_HORZ,
CRect(10, 10, 600, 50), pParentWnd, 1);
CHeaderCtrl::CreateEx
Erstellt ein Steuerelement (ein untergeordnetes Fenster) und ordnen es dem CHeaderCtrl
Objekt zu.
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameter
dwExStyle
Gibt die erweiterte Formatvorlage des zu erstellenden Steuerelements an. Eine Liste der erweiterten Windows-Stile finden Sie unter dem dwExStyle-Parameter für CreateWindowEx im Windows SDK.
dwStyle
Formatvorlage des Kopfzeilensteuerelements. Eine Beschreibung der Formatvorlagen für Kopfzeilensteuerelemente finden Sie unter Header-Steuerelementstile im Windows SDK. Eine Liste mit zusätzlichen Formatvorlagen finden Sie unter "Erstellen ".
rect
Ein Verweis auf eine RECT-Struktur , die die Größe und Position des zu erstellenden Fensters in Clientkoordinaten von pParentWnd beschreibt.
pParentWnd
Ein Zeiger auf das Fenster, das das übergeordnete Steuerelement ist.
Nid
Die Untergeordnete Fenster-ID des Steuerelements.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Verwenden Sie CreateEx
anstelle erweiterter Create
Windows-Formatvorlagen, die durch die erweiterte Windows-Formatvorlage WS_EX_ angegeben werden.
CHeaderCtrl::CreateDragImage
Erstellt eine transparente Version des Bilds eines Elements innerhalb eines Kopfzeilensteuerelements.
CImageList* CreateDragImage(int nIndex);
Parameter
nIndex
Der nullbasierte Index des Elements innerhalb des Kopfzeilensteuerelements. Das diesem Element zugewiesene Bild ist die Basis für das transparente Bild.
Rückgabewert
Ein Zeiger auf ein CImageList-Objekt bei erfolgreicher Ausführung; andernfalls NULL. Die zurückgegebene Liste enthält nur ein Bild.
Hinweise
Diese Memberfunktion implementiert das Verhalten der Win32-Nachricht HDM_CREATEDRAGIMAGE, wie im Windows SDK beschrieben. Es wird bereitgestellt, um das Ziehen und Ablegen von Kopfzeilenelementen zu unterstützen.
Das CImageList
Objekt, auf das der zurückgegebene Zeiger verweist, ist ein temporäres Objekt und wird in der nächsten Leerlaufzeitverarbeitung gelöscht.
CHeaderCtrl::D eleteItem
Löscht ein Element aus einem Kopfzeilensteuerelement.
BOOL DeleteItem(int nPos);
Parameter
nPos
Gibt den nullbasierten Index des zu löschenden Elements an.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Beispiel
int nCount = m_myHeaderCtrl.GetItemCount();
// Delete all of the items.
for (int i = 0; i < nCount; i++)
{
m_myHeaderCtrl.DeleteItem(0);
}
CHeaderCtrl::D rawItem
Wird vom Framework aufgerufen, wenn sich ein visueller Aspekt eines Besitzer-Draw-Kopfzeilen-Steuerelements ändert.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parameter
lpDrawItemStruct
Ein Zeiger auf eine DRAWITEMSTRUCT-Struktur , die das zu zeichnende Element beschreibt.
Hinweise
Das itemAction
Element der DRAWITEMSTRUCT
Struktur definiert die Zeichnungsaktion, die ausgeführt werden soll.
Standardmäßig führt diese Memberfunktion nichts aus. Überschreiben Sie diese Memberfunktion, um die Zeichnung für ein Besitzer-Draw-Objekt CHeaderCtrl
zu implementieren.
Die Anwendung sollte alle GDI-Objekte (Graphics Device Interface) wiederherstellen, die für den in lpDrawItemStruct bereitgestellten Anzeigekontext ausgewählt sind, bevor diese Memberfunktion beendet wird.
Beispiel
// NOTE: CMyHeaderCtrl is a class derived from CHeaderCtrl.
// The CMyHeaderCtrl object was created as follows:
//
// CMyHeaderCtrl m_myHeader;
// myHeader.Create(WS_CHILD | WS_VISIBLE | HDS_HORZ,
// CRect(10, 10, 600, 50), pParentWnd, 1);
// This example implements the DrawItem method for a
// CHeaderCtrl-derived class that draws every item as a
// 3D button using the text color red.
void CMyHeaderCtrl::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// This code only works with header controls.
ASSERT(lpDrawItemStruct->CtlType == ODT_HEADER);
HDITEM hdi;
const int c_cchBuffer = 256;
TCHAR lpBuffer[c_cchBuffer];
hdi.mask = HDI_TEXT;
hdi.pszText = lpBuffer;
hdi.cchTextMax = c_cchBuffer;
GetItem(lpDrawItemStruct->itemID, &hdi);
// Draw the button frame.
::DrawFrameControl(lpDrawItemStruct->hDC,
&lpDrawItemStruct->rcItem, DFC_BUTTON, DFCS_BUTTONPUSH);
// Draw the items text using the text color red.
COLORREF crOldColor = ::SetTextColor(lpDrawItemStruct->hDC,
RGB(255, 0, 0));
::DrawText(lpDrawItemStruct->hDC, lpBuffer,
(int)_tcsnlen(lpBuffer, c_cchBuffer),
&lpDrawItemStruct->rcItem, DT_SINGLELINE | DT_VCENTER | DT_CENTER);
::SetTextColor(lpDrawItemStruct->hDC, crOldColor);
}
CHeaderCtrl::EditFilter
Beginnt mit der Bearbeitung des angegebenen Filters eines Kopfzeilensteuerelements.
BOOL EditFilter(
int nColumn,
BOOL bDiscardChanges);
Parameter
nColumn
Die zu bearbeitende Spalte.
bDiscardChanges
Ein Wert, der angibt, wie die Bearbeitungsänderungen des Benutzers behandelt werden, wenn der Benutzer den Filter bearbeitet, wenn die HDM_EDITFILTER Nachricht gesendet wird.
Geben Sie WAHR an, um die vom Benutzer vorgenommenen Änderungen zu verwerfen, oder FALSE, um die vom Benutzer vorgenommenen Änderungen zu akzeptieren.
Rückgabewert
TRUE, wenn diese Methode erfolgreich ist; andernfalls FALSE.
Hinweise
Diese Methode implementiert das Verhalten der Win32-Nachrichten-HDM_EDITFILTER, wie im Windows SDK beschrieben.
Beispiel
int iFilter = m_myHeaderCtrl.EditFilter(1, TRUE);
CHeaderCtrl::GetBitmapMargin
Ruft die Breite des Rands einer Bitmap in einem Kopfzeilensteuerelement ab.
int GetBitmapMargin() const;
Rückgabewert
Die Breite des Bitmaprands in Pixeln.
Hinweise
Diese Memberfunktion implementiert das Verhalten der Win32-Nachricht HDM_GETBITMAPMARGIN, wie im Windows SDK beschrieben.
Beispiel
int iMargin = m_myHeaderCtrl.GetBitmapMargin();
CHeaderCtrl::GetFocusedItem
Ruft den Index des Elements ab, das den Fokus im aktuellen Kopfzeilensteuerelement hat.
int GetFocusedItem() const;
Rückgabewert
Der nullbasierte Index des Kopfzeilenelements, das den Fokus besitzt.
Hinweise
Diese Methode sendet die HDM_GETFOCUSEDITEM Nachricht, die im Windows SDK beschrieben wird.
Beispiel
Im ersten Codebeispiel wird die Variable definiert, m_headerCtrl
die für den Zugriff auf das aktuelle Headersteuerelement verwendet wird. Diese Variable wird im nächsten Beispiel verwendet.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Im nächsten Codebeispiel werden die SetFocusedItem
Und GetFocusedItem
Methoden veranschaulicht. In einem früheren Abschnitt des Codes haben wir ein Kopfzeilensteuerelement mit fünf Spalten erstellt. Sie können jedoch ein Spaltentrennzeichen ziehen, damit die Spalte nicht sichtbar ist. Im folgenden Beispiel wird die letzte Spaltenüberschrift als Fokuselement festgelegt und bestätigt.
void CNVC_MFC_CHeaderCtrl_s4Dlg::OnXSetfocuseditem()
{
if (controlCreated == FALSE)
{
MessageBox(_T("Header control has not been created yet."));
return;
}
// Check that we get the value we set.
int item = m_headerCtrl.GetItemCount() - 1;
m_headerCtrl.SetFocusedItem(item);
int itemGet = m_headerCtrl.GetFocusedItem();
CString str = _T("Set: focused item = %d\nGet: focused item = %d");
str.Format(str, item, itemGet);
MessageBox(str, _T("Set/GetFocused Item"));
}
CHeaderCtrl::GetImageList
Ruft das Handle einer Bildliste ab, die zum Zeichnen von Kopfzeilenelementen in einem Kopfzeilensteuerelement verwendet wird.
CImageList* GetImageList() const;
Rückgabewert
Ein Zeiger auf ein CImageList-Objekt .
Hinweise
Diese Memberfunktion implementiert das Verhalten der Win32-Nachricht HDM_GETIMAGELIST, wie im Windows SDK beschrieben. Das CImageList
Objekt, auf das der zurückgegebene Zeiger verweist, ist ein temporäres Objekt und wird in der nächsten Leerlaufzeitverarbeitung gelöscht.
Beispiel
// The new image list of the header control.
m_HeaderImages.Create(16, 16, ILC_COLOR, 2, 2);
m_HeaderImages.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_HeaderImages.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_HeaderImages.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
ASSERT(m_myHeaderCtrl.GetImageList() == NULL);
m_myHeaderCtrl.SetImageList(&m_HeaderImages);
ASSERT(m_myHeaderCtrl.GetImageList() == &m_HeaderImages);
CHeaderCtrl::GetItem
Ruft Informationen zu einem Kopfzeilensteuerelementelement ab.
BOOL GetItem(
int nPos,
HDITEM* pHeaderItem) const;
Parameter
nPos
Gibt den nullbasierten Index des abzurufenden Elements an.
pHeaderItem
Zeiger auf eine HDITEM-Struktur , die das neue Element empfängt. Diese Struktur wird mit den InsertItem
Funktionen und SetItem
Memberfunktionen verwendet. Alle im mask
Element festgelegten Flags stellen sicher, dass Werte in den entsprechenden Elementen beim Zurückgeben ordnungsgemäß ausgefüllt werden. Wenn das mask
Element auf Null festgelegt ist, sind Werte in den anderen Strukturelementen bedeutungslos.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Beispiel
LPCTSTR lpszmyString = _T("column 2");
LPCTSTR lpszmyString2 = _T("vertical 2");
// Find the item whose text matches lpszmyString, and
// replace it with lpszmyString2.
int i, nCount = m_myHeaderCtrl.GetItemCount();
HDITEM hdi;
enum
{
sizeOfBuffer = 256
};
TCHAR lpBuffer[sizeOfBuffer];
bool fFound = false;
hdi.mask = HDI_TEXT;
hdi.pszText = lpBuffer;
hdi.cchTextMax = sizeOfBuffer;
for (i = 0; !fFound && (i < nCount); i++)
{
m_myHeaderCtrl.GetItem(i, &hdi);
if (_tcsncmp(hdi.pszText, lpszmyString, sizeOfBuffer) == 0)
{
_tcscpy_s(hdi.pszText, sizeOfBuffer, lpszmyString2);
m_myHeaderCtrl.SetItem(i, &hdi);
fFound = true;
}
}
CHeaderCtrl::GetItemCount
Ruft die Anzahl der Elemente in einem Kopfzeilensteuerelement ab.
int GetItemCount() const;
Rückgabewert
Anzahl der Kopfzeilensteuerungselemente bei erfolgreicher Ausführung; andernfalls - 1.
Beispiel
Sehen Sie sich das Beispiel für CHeaderCtrl::D eleteItem an.
CHeaderCtrl::GetItemDropDownRect
Ruft das umgebende Rechteck der Dropdownschaltfläche für ein Kopfzeilenelement im aktuellen Kopfzeilensteuerelement ab.
BOOL GetItemDropDownRect(
int iItem,
LPRECT lpRect) const;
Parameter
iItem
[in] Nullbasierter Index eines Kopfzeilenelements, dessen Format HDF_SPLITBUTTON ist. Weitere Informationen finden Sie im fmt
Element der HDITEM-Struktur .
lpRect
[out] Zeiger auf eine RECT-Struktur , um die umgebenden Rechteckinformationen zu empfangen.
Rückgabewert
TRUE, wenn diese Funktion erfolgreich ist; andernfalls FALSE.
Hinweise
Diese Methode sendet die HDM_GETITEMDROPDOWNRECT Nachricht, die im Windows SDK beschrieben wird.
Beispiel
Im ersten Codebeispiel wird die Variable definiert, m_headerCtrl
die für den Zugriff auf das aktuelle Headersteuerelement verwendet wird. Diese Variable wird im nächsten Beispiel verwendet.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Im nächsten Codebeispiel wird die GetItemDropDownRect
Methode veranschaulicht. In einem früheren Abschnitt des Codes haben wir ein Kopfzeilensteuerelement mit fünf Spalten erstellt. Das folgende Codebeispiel zeichnet ein 3D-Rechteck um die Position in der ersten Spalte, die für die Dropdownschaltfläche für die Kopfzeile reserviert ist.
void CNVC_MFC_CHeaderCtrl_s4Dlg::OnXGetitemdropdownrect()
{
if (controlCreated == FALSE)
{
MessageBox(_T("Header control has not been created yet."));
return;
}
// Get the dropdown rect for the first column.
CRect rect;
BOOL bRetVal = m_headerCtrl.GetItemDropDownRect(0, &rect);
if (bRetVal == TRUE)
{
// Draw around the dropdown rect a rectangle that has red
// left and top sides, and blue right and bottom sides.
CDC *pDC = m_headerCtrl.GetDC();
pDC->Draw3dRect(rect, RGB(255, 0, 0), RGB(0, 0, 255));
}
}
CHeaderCtrl::GetItemRect
Ruft das umgebende Rechteck für ein bestimmtes Element in einem Kopfzeilensteuerelement ab.
BOOL GetItemRect(
int nIndex,
LPRECT lpRect) const;
Parameter
nIndex
Der nullbasierte Index des Kopfzeilensteuerelementelements.
lpRect
Ein Zeiger auf die Adresse einer RECT-Struktur , die die umgebenden Rechteckinformationen empfängt.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Diese Methode implementiert das Verhalten der Win32-Nachricht HDM_GETITEMRECT, wie im Windows SDK beschrieben.
CHeaderCtrl::GetOrderArray
Ruft die Reihenfolge von Elementen von links nach rechts in einem Kopfzeilensteuerelement ab.
BOOL GetOrderArray(
LPINT piArray,
int iCount);
Parameter
piArray
Ein Zeiger auf die Adresse eines Puffers, der die Indexwerte der Elemente im Kopfzeilensteuerelement empfängt, in der Reihenfolge, in der sie von links nach rechts angezeigt werden.
iCount
Die Anzahl der Kopfzeilensteuerelementelemente. Muss nicht negativ sein.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Diese Memberfunktion implementiert das Verhalten der Win32-Meldung HDM_GETORDERARRAY, wie im Windows SDK beschrieben. Es wird bereitgestellt, um die Sortierung von Kopfzeilenelementen zu unterstützen.
Beispiel
// Reverse the order of the items in the header control.
// (i.e. make the first item the last one, the last item
// the first one, and so on ...).
int nCount = m_myHeaderCtrl.GetItemCount();
LPINT pnOrder = (LPINT)malloc(nCount * sizeof(int));
ASSERT(pnOrder != NULL);
if (NULL != pnOrder)
{
m_myHeaderCtrl.GetOrderArray(pnOrder, nCount);
int i, j, nTemp;
for (i = 0, j = nCount - 1; i < j; i++, j--)
{
nTemp = pnOrder[i];
pnOrder[i] = pnOrder[j];
pnOrder[j] = nTemp;
}
m_myHeaderCtrl.SetOrderArray(nCount, pnOrder);
free(pnOrder);
}
CHeaderCtrl::GetOverflowRect
Ruft das umgebende Rechteck der Überlaufschaltfläche des aktuellen Kopfzeilensteuerelements ab.
BOOL GetOverflowRect(LPRECT lpRect) const;
Parameter
lpRect
[out] Zeiger auf eine RECT-Struktur , die die umgebenden Rechteckinformationen empfängt.
Rückgabewert
TRUE, wenn diese Funktion erfolgreich ist; andernfalls FALSE.
Hinweise
Wenn das Kopfzeilensteuerelement mehr Elemente enthält, als gleichzeitig angezeigt werden können, kann das Steuerelement eine Überlaufschaltfläche anzeigen, die zu Elementen scrollt, die nicht sichtbar sind. Das Kopfzeilensteuerelement muss über die HDS_OVERFLOW und HDF_SPLITBUTTON Formatvorlagen verfügen, um die Überlaufschaltfläche anzuzeigen. Das umgebende Rechteck schließt die Überlaufschaltfläche ein und ist nur vorhanden, wenn die Überlaufschaltfläche angezeigt wird. Weitere Informationen finden Sie unter Header-Steuerelementformatvorlagen.
Diese Methode sendet die HDM_GETOVERFLOWRECT Nachricht, die im Windows SDK beschrieben wird.
Beispiel
Im ersten Codebeispiel wird die Variable definiert, m_headerCtrl
die für den Zugriff auf das aktuelle Headersteuerelement verwendet wird. Diese Variable wird im nächsten Beispiel verwendet.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Im nächsten Codebeispiel wird die GetOverflowRect
Methode veranschaulicht. In einem früheren Abschnitt des Codes haben wir ein Kopfzeilensteuerelement mit fünf Spalten erstellt. Sie können jedoch ein Spaltentrennzeichen ziehen, damit die Spalte nicht sichtbar ist. Wenn einige Spalten nicht sichtbar sind, zeichnet das Kopfzeilensteuerelement eine Überlaufschaltfläche. Das folgende Codebeispiel zeichnet ein 3D-Rechteck um die Position der Überlaufschaltfläche.
void CNVC_MFC_CHeaderCtrl_s4Dlg::OnXGetoverflowrect()
{
if (controlCreated == FALSE)
{
MessageBox(_T("Header control has not been created yet."));
return;
}
CRect rect;
// Get the overflow rectangle.
BOOL bRetVal = m_headerCtrl.GetOverflowRect(&rect);
// Get the device context.
CDC *pDC = m_headerCtrl.GetDC();
// Draw around the overflow rect a rectangle that has red
// left and top sides, and green right and bottom sides.
pDC->Draw3dRect(rect, RGB(255, 0, 0), RGB(0, 255, 0));
}
CHeaderCtrl::HitTest
Bestimmt, welches Kopfzeilenelement sich an einem bestimmten Punkt befindet.
int HitTest(LPHDHITTESTINFO* phdhti);
Parameter
phdhti
[in, out] Zeiger auf eine HDHITTESTINFO-Struktur , die den Testpunkt angibt und die Ergebnisse des Tests empfängt.
Rückgabewert
Der nullbasierte Index des Kopfzeilenelements( falls vorhanden) an der angegebenen Position; andernfalls -1.
Hinweise
Diese Methode sendet die HDM_HITTEST Nachricht, die im Windows SDK beschrieben wird.
Beispiel
Im ersten Codebeispiel wird die Variable definiert, m_headerCtrl
die für den Zugriff auf das aktuelle Headersteuerelement verwendet wird. Diese Variable wird im nächsten Beispiel verwendet.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Im nächsten Codebeispiel wird die HitTest
Methode veranschaulicht. In einem früheren Abschnitt dieses Codebeispiels haben wir ein Kopfzeilensteuerelement mit fünf Spalten erstellt. Sie können jedoch ein Spaltentrennzeichen ziehen, damit die Spalte nicht sichtbar ist. In diesem Beispiel wird der Index der Spalte gemeldet, wenn sie sichtbar ist, und -1, wenn die Spalte nicht sichtbar ist.
void CNVC_MFC_CHeaderCtrl_s4Dlg::OnXHittest()
{
if (controlCreated == FALSE)
{
MessageBox(_T("Header control has not been created yet."));
return;
}
// Initialize HDHITTESTINFO structure.
HDHITTESTINFO hdHitIfo;
memset(&hdHitIfo, 0, sizeof(HDHITTESTINFO));
CString str;
CRect rect;
int iRetVal = -1;
for (int i = 0; i < m_headerCtrl.GetItemCount(); i++)
{
m_headerCtrl.GetItemRect(i, &rect);
hdHitIfo.pt = rect.CenterPoint();
// The hit test depends on whether the header item is visible.
iRetVal = m_headerCtrl.HitTest(&hdHitIfo);
str.AppendFormat(_T("Item = %d, Hit item = %d\n"), i, iRetVal);
}
MessageBox(str, _T("Hit test results"));
}
CHeaderCtrl::InsertItem
Fügt ein neues Element in ein Kopfzeilensteuerelement am angegebenen Index ein.
int InsertItem(
int nPos,
HDITEM* phdi);
Parameter
nPos
Der nullbasierte Index des einzufügenden Elements. Wenn der Wert null ist, wird das Element am Anfang des Kopfzeilensteuerelements eingefügt. Wenn der Wert größer als der Maximalwert ist, wird das Element am Ende des Kopfzeilensteuerelements eingefügt.
phdi
Zeiger auf eine HDITEM-Struktur , die Informationen zum einzufügenden Element enthält.
Rückgabewert
Index des neuen Elements bei erfolgreicher Ausführung; andernfalls - 1.
Beispiel
CString str;
HDITEM hdi;
hdi.mask = HDI_TEXT | HDI_WIDTH | HDI_FORMAT | HDI_IMAGE;
hdi.cxy = 100; // Make all columns 100 pixels wide.
hdi.fmt = HDF_STRING | HDF_CENTER;
// Insert 6 columns in the header control.
for (int i = 0; i < 6; i++)
{
str.Format(TEXT("column %d"), i);
hdi.pszText = str.GetBuffer(0);
hdi.iImage = i % 3;
m_myHeaderCtrl.InsertItem(i, &hdi);
}
CHeaderCtrl::Layout
Ruft die Größe und Position eines Kopfzeilensteuerelements innerhalb eines bestimmten Rechtecks ab.
BOOL Layout(HDLAYOUT* pHeaderLayout);
Parameter
pHeaderLayout
Zeiger auf eine HDLAYOUT-Struktur , die Informationen enthält, die zum Festlegen der Größe und Position eines Kopfzeilensteuerelements verwendet werden.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Diese Funktion wird verwendet, um die geeigneten Dimensionen für ein neues Kopfzeilensteuerelement zu bestimmen, das das angegebene Rechteck einnimmt.
Beispiel
HDLAYOUT hdl;
WINDOWPOS wpos;
RECT rc;
// Reposition the header control so that it is placed at
// the top of its parent window's client area.
m_myHeaderCtrl.GetParent()->GetClientRect(&rc);
hdl.prc = &rc;
hdl.pwpos = &wpos;
if (m_myHeaderCtrl.Layout(&hdl))
{
m_myHeaderCtrl.SetWindowPos(
CWnd::FromHandle(wpos.hwndInsertAfter),
wpos.x,
wpos.y,
wpos.cx,
wpos.cy,
wpos.flags | SWP_SHOWWINDOW);
}
CHeaderCtrl::OrderToIndex
Ruft den Indexwert für ein Element basierend auf seiner Reihenfolge im Kopfzeilensteuerelement ab.
int OrderToIndex(int nOrder) const;
Parameter
nOrder
Die nullbasierte Reihenfolge, in der das Element im Kopfzeilensteuerelement angezeigt wird, von links nach rechts.
Rückgabewert
Der Index des Elements basierend auf seiner Reihenfolge im Kopfzeilensteuerelement. Der Index zählt von links nach rechts, beginnend mit 0.
Hinweise
Diese Memberfunktion implementiert das Verhalten des Win32-Makros HDM_ORDERTOINDEX, wie im Windows SDK beschrieben. Es wird bereitgestellt, um die Sortierung von Kopfzeilenelementen zu unterstützen.
CHeaderCtrl::SetBitmapMargin
Legt die Breite des Rands einer Bitmap in einem Kopfzeilensteuerelement fest.
int SetBitmapMargin(int nWidth);
Parameter
nWidth
Die in Pixel angegebene Breite des Rands, der eine Bitmap in ein vorhandenes Kopfzeilensteuerelement umgibt.
Rückgabewert
Die Breite des Bitmaprands in Pixeln.
Hinweise
Diese Memberfunktion implementiert das Verhalten der Win32-Nachricht HDM_SETBITMAPMARGIN, wie im Windows SDK beschrieben.
Beispiel
int iOldMargin = m_myHeaderCtrl.SetBitmapMargin(15);
CHeaderCtrl::SetFilterChangeTimeout
Legt das Timeoutintervall zwischen dem Zeitpunkt fest, zu dem eine Änderung in den Filterattributen und der Veröffentlichung einer HDN_FILTERCHANGE benachrichtigung erfolgt.
int SetFilterChangeTimeout(DWORD dwTimeOut);
Parameter
dwTimeOut
Timeoutwert in Millisekunden.
Rückgabewert
Der Index des zu ändernden Filtersteuerelements.
Hinweise
Diese Memberfunktion implementiert das Verhalten der Win32-Nachricht HDM_SETFILTERCHANGETIMEOUT, wie im Windows SDK beschrieben.
Beispiel
int iFltr = m_myHeaderCtrl.SetFilterChangeTimeout(15);
CHeaderCtrl::SetFocusedItem
Legt den Fokus auf ein angegebenes Kopfzeilenelement im aktuellen Kopfzeilensteuerelement fest.
BOOL SetFocusedItem(int iItem);
Parameter
iItem
[in] Nullbasierter Index eines Kopfzeilenelements.
Rückgabewert
TRUE, wenn diese Methode erfolgreich ist; andernfalls FALSE.
Hinweise
Diese Methode sendet die HDM_SETFOCUSEDITEM Nachricht, die im Windows SDK beschrieben wird.
Beispiel
Im ersten Codebeispiel wird die Variable definiert, m_headerCtrl
die für den Zugriff auf das aktuelle Headersteuerelement verwendet wird. Diese Variable wird im nächsten Beispiel verwendet.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Im nächsten Codebeispiel werden die SetFocusedItem
Und GetFocusedItem
Methoden veranschaulicht. In einem früheren Abschnitt des Codes haben wir ein Kopfzeilensteuerelement mit fünf Spalten erstellt. Sie können jedoch ein Spaltentrennzeichen ziehen, damit die Spalte nicht sichtbar ist. Im folgenden Beispiel wird die letzte Spaltenüberschrift als Fokuselement festgelegt und bestätigt.
void CNVC_MFC_CHeaderCtrl_s4Dlg::OnXSetfocuseditem()
{
if (controlCreated == FALSE)
{
MessageBox(_T("Header control has not been created yet."));
return;
}
// Check that we get the value we set.
int item = m_headerCtrl.GetItemCount() - 1;
m_headerCtrl.SetFocusedItem(item);
int itemGet = m_headerCtrl.GetFocusedItem();
CString str = _T("Set: focused item = %d\nGet: focused item = %d");
str.Format(str, item, itemGet);
MessageBox(str, _T("Set/GetFocused Item"));
}
CHeaderCtrl::SetHotDivider
Ändert die Trennlinie zwischen Kopfzeilenelementen, um ein manuelles Ziehen und Ablegen eines Kopfzeilenelements anzugeben.
int SetHotDivider(CPoint pt);
int SetHotDivider(int nIndex);
Parameter
pt
Die Position des Zeigers. Das Kopfzeilensteuerelement hebt die entsprechende Trennlinie basierend auf der Position des Zeigers hervor.
nIndex
Der Index der hervorgehobenen Trennlinie.
Rückgabewert
Der Index der hervorgehobenen Trennlinie.
Hinweise
Diese Memberfunktion implementiert das Verhalten der Win32-Nachricht HDM_SETHOTDIVIDER, wie im Windows SDK beschrieben. Es wird bereitgestellt, um das Ziehen und Ablegen von Kopfzeilenelementen zu unterstützen.
Beispiel
void CMyHeaderCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
SetHotDivider(point);
CHeaderCtrl::OnMouseMove(nFlags, point);
}
CHeaderCtrl::SetImageList
Weist einem Kopfzeilensteuerelement eine Bildliste zu.
CImageList* SetImageList(CImageList* pImageList);
Parameter
pImageList
Ein Zeiger auf ein CImageList
Objekt, das die Bildliste enthält, die dem Kopfzeilensteuerelement zugewiesen werden soll.
Rückgabewert
Ein Zeiger auf das zuvor dem Headersteuerelement zugewiesene CImageList-Objekt .
Hinweise
Diese Memberfunktion implementiert das Verhalten der Win32-Nachricht HDM_SETIMAGELIST, wie im Windows SDK beschrieben. Das CImageList
Objekt, auf das der zurückgegebene Zeiger verweist, ist ein temporäres Objekt und wird in der nächsten Leerlaufzeitverarbeitung gelöscht.
Beispiel
Sehen Sie sich das Beispiel für CHeaderCtrl::GetImageList an.
CHeaderCtrl::SetItem
Legt die Attribute des angegebenen Elements in einem Kopfzeilensteuerelement fest.
BOOL SetItem(
int nPos,
HDITEM* pHeaderItem);
Parameter
nPos
Der nullbasierte Index des zu bearbeitenden Elements.
pHeaderItem
Zeiger auf eine HDITEM-Struktur , die Informationen zum neuen Element enthält.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Beispiel
Sehen Sie sich das Beispiel für CHeaderCtrl::GetItem an.
CHeaderCtrl::SetOrderArray
Legt die Reihenfolge von Elementen in einem Kopfzeilensteuerelement von links nach rechts fest.
BOOL SetOrderArray(
int iCount,
LPINT piArray);
Parameter
iCount
Die Anzahl der Kopfzeilensteuerelementelemente.
piArray
Ein Zeiger auf die Adresse eines Puffers, der die Indexwerte der Elemente im Kopfzeilensteuerelement empfängt, in der Reihenfolge, in der sie von links nach rechts angezeigt werden.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Diese Memberfunktion implementiert das Verhalten des Win32-Makros HDM_SETORDERARRAY, wie im Windows SDK beschrieben. Es wird bereitgestellt, um die Sortierung von Kopfzeilenelementen zu unterstützen.
Beispiel
Sehen Sie sich das Beispiel für CHeaderCtrl::GetOrderArray an.
Siehe auch
CWnd-Klasse
Hierarchiediagramm
CTabCtrl-Klasse
CListCtrl-Klasse
CImageList-Klasse