Klasa CHeaderCtrl
Zapewnia funkcjonalność wspólnej kontrolki nagłówka systemu Windows.
Składnia
class CHeaderCtrl : public CWnd
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CHeaderCtrl::CHeaderCtrl | CHeaderCtrl Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CHeaderCtrl::ClearAllFilters | Czyści wszystkie filtry dla kontrolki nagłówka. |
CHeaderCtrl::ClearFilter | Czyści filtr kontrolki nagłówka. |
CHeaderCtrl::Create | Tworzy kontrolkę nagłówka i dołącza ją do CHeaderCtrl obiektu. |
CHeaderCtrl::CreateDragImage | Tworzy przezroczystą wersję obrazu elementu w kontrolce nagłówka. |
CHeaderCtrl::CreateEx | Tworzy kontrolkę nagłówka z określonymi stylami rozszerzonymi systemu Windows i dołącza ją do CListCtrl obiektu. |
CHeaderCtrl::D eleteItem | Usuwa element z kontrolki nagłówka. |
CHeaderCtrl::D rawItem | Rysuje określony element kontrolki nagłówka. |
CHeaderCtrl::EditFilter | Rozpoczyna edytowanie określonego filtru kontrolki nagłówka. |
CHeaderCtrl::GetBitmapMargin | Pobiera szerokość marginesu mapy bitowej w kontrolce nagłówka. |
CHeaderCtrl::GetFocusedItem | Pobiera identyfikator elementu w bieżącej kontrolce nagłówka, która ma fokus. |
CHeaderCtrl::GetImageList | Pobiera uchwyt listy obrazów używany do rysowania elementów nagłówka w kontrolce nagłówka. |
CHeaderCtrl::GetItem | Pobiera informacje o elemencie w kontrolce nagłówka. |
CHeaderCtrl::GetItemCount | Pobiera liczbę elementów w kontrolce nagłówka. |
CHeaderCtrl::GetItemDropDownRect | Pobiera informacje o ograniczeniach prostokąta dla określonego przycisku listy rozwijanej w kontrolce nagłówka. |
CHeaderCtrl::GetItemRect | Pobiera prostokąt ograniczenia dla danego elementu w kontrolce nagłówka. |
CHeaderCtrl::GetOrderArray | Pobiera kolejność elementów od lewej do prawej w kontrolce nagłówka. |
CHeaderCtrl::GetOverflowRect | Pobiera prostokąt ograniczenia przycisku przepełnienia dla bieżącej kontrolki nagłówka. |
CHeaderCtrl::HitTest | Określa, który element nagłówka, jeśli istnieje, znajduje się w określonym punkcie. |
CHeaderCtrl::InsertItem | Wstawia nowy element do kontrolki nagłówka. |
CHeaderCtrl::Layout | Pobiera rozmiar i położenie kontrolki nagłówka w danym prostokątze. |
CHeaderCtrl::OrderToIndex | Pobiera wartość indeksu dla elementu na podstawie jego kolejności w kontrolce nagłówka. |
CHeaderCtrl::SetBitmapMargin | Ustawia szerokość marginesu mapy bitowej w kontrolce nagłówka. |
CHeaderCtrl::SetFilterChangeTimeout | Ustawia interwał limitu czasu między czasem zmiany w atrybutach filtru a publikowaniem HDN_FILTERCHANGE powiadomienia. |
CHeaderCtrl::SetFocusedItem | Ustawia fokus na określony element nagłówka w bieżącej kontrolce nagłówka. |
CHeaderCtrl::SetHotDivider | Zmienia podział między elementami nagłówka, aby wskazać ręczne przeciąganie i upuszczanie elementu nagłówka. |
CHeaderCtrl::SetImageList | Przypisuje listę obrazów do kontrolki nagłówka. |
CHeaderCtrl::SetItem | Ustawia atrybuty określonego elementu w kontrolce nagłówka. |
CHeaderCtrl::SetOrderArray | Ustawia kolejność od lewej do prawej elementów w kontrolce nagłówka. |
Uwagi
Kontrolka nagłówka to okno, które zwykle znajduje się powyżej zestawu kolumn tekstowych lub liczbowych. Zawiera tytuł dla każdej kolumny i można go podzielić na części. Użytkownik może przeciągnąć separatory oddzielające części, aby ustawić szerokość każdej kolumny. Aby uzyskać ilustrację kontrolki nagłówka, zobacz Kontrolki nagłówka.
Ta kontrolka CHeaderCtrl
(i dlatego klasa) jest dostępna tylko dla programów uruchamianych w systemach Windows 95/98 i Windows NT w wersji 3.51 lub nowszej.
Funkcje dodane dla typowych kontrolek systemu Windows 95/Internet Explorer 4.0 obejmują następujące elementy:
Kolejność niestandardowa elementu nagłówka.
Przeciąganie i upuszczanie elementu nagłówka w celu zmiany kolejności elementów nagłówka. Użyj stylu HDS_DRAGDROP podczas tworzenia
CHeaderCtrl
obiektu.Tekst kolumny nagłówka jest stale wyświetlany podczas zmiany rozmiaru kolumny. Użyj stylu HDS_FULLDRAG podczas tworzenia
CHeaderCtrl
obiektu.Śledzenie gorąca nagłówka, które wyróżnia element nagłówka, gdy wskaźnik znajduje się nad nim. Użyj stylu HDS_HOTTRACK podczas tworzenia
CHeaderCtrl
obiektu.Obsługa listy obrazów. Elementy nagłówka mogą zawierać obrazy przechowywane w
CImageList
obiekcie lub tekście.
Aby uzyskać więcej informacji na temat korzystania z programu CHeaderCtrl
, zobacz Controls and Using CHeaderCtrl (Kontrolki i używanie CHeaderCtrl).
Hierarchia dziedziczenia
CHeaderCtrl
Wymagania
Nagłówek: afxcmn.h
CHeaderCtrl::CHeaderCtrl
CHeaderCtrl
Tworzy obiekt.
CHeaderCtrl();
Przykład
// Declare a local CHeaderCtrl object.
CHeaderCtrl myHeaderCtrl;
// Declare a dynamic CHeaderCtrl object.
CHeaderCtrl *pmyHeaderCtrl = new CHeaderCtrl;
CHeaderCtrl::ClearAllFilters
Czyści wszystkie filtry dla kontrolki nagłówka.
BOOL ClearAllFilters();
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Ta metoda implementuje zachowanie komunikatu Win32 HDM_CLEARFILTER z wartością kolumny -1 zgodnie z opisem w zestawie WINDOWS SDK.
Przykład
m_myHeaderCtrl.ClearAllFilters();
CHeaderCtrl::ClearFilter
Czyści filtr kontrolki nagłówka.
BOOL ClearFilter(int nColumn);
Parametry
nKolumn
Wartość kolumny wskazująca filtr do wyczyszczenia.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Ta metoda implementuje zachowanie komunikatu Win32 HDM_CLEARFILTER zgodnie z opisem w zestawie Windows SDK.
Przykład
int iFilt = m_myHeaderCtrl.ClearFilter(1);
CHeaderCtrl::Create
Tworzy kontrolkę nagłówka i dołącza ją do CHeaderCtrl
obiektu.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parametry
dwStyle
Określa styl kontrolki nagłówka. Opis stylów kontrolek nagłówka można znaleźć w temacie Header Control Styles in the Windows SDK (Style kontrolek nagłówka w zestawie Windows SDK).
Rect
Określa rozmiar i położenie kontrolki nagłówka. Może to być obiekt CRect lub struktura RECT .
pParentWnd
Określa nadrzędne okno kontrolki nagłówka, zwykle CDialog
. Nie może mieć wartości NULL.
Nid
Określa identyfikator kontrolki nagłówka.
Wartość zwracana
Niezerowe, jeśli inicjowanie zakończyło się pomyślnie; w przeciwnym razie zero.
Uwagi
Obiekt jest konstruowany CHeaderCtrl
w dwóch krokach. Najpierw wywołaj konstruktor, a następnie wywołaj Create
metodę , która tworzy kontrolkę nagłówka i dołącza ją do CHeaderCtrl
obiektu.
Oprócz stylów kontrolek nagłówka można użyć następujących typowych stylów kontrolek, aby określić, jak pozycje i zmiany rozmiaru nagłówka (zobacz Common Control Styles (Typowe style sterowania, aby uzyskać więcej informacji):
CCS_BOTTOM Powoduje, że kontrolka znajduje się w dolnej części obszaru klienta okna nadrzędnego i ustawia szerokość tak samo jak szerokość okna nadrzędnego.
CCS_NODIVIDER Uniemożliwia rysowanie dwukrotnego wyróżnienia w górnej części kontrolki.
CCS_NOMOVEY Powoduje, że kontrolka zmienia rozmiar i przenosi się w poziomie, ale nie w pionie, w odpowiedzi na komunikat WM_SIZE. Jeśli jest używany styl CCS_NORESIZE, ten styl nie ma zastosowania. Kontrolki nagłówka domyślnie mają ten styl.
CCS_NOPARENTALIGN Uniemożliwia automatyczne przejście kontrolki do górnej lub dolnej części okna nadrzędnego. Zamiast tego kontrolka zachowuje swoją pozycję w oknie nadrzędnym pomimo zmian rozmiaru okna nadrzędnego. Jeśli jest również używany styl CCS_TOP lub CCS_BOTTOM, wysokość jest dostosowana do wartości domyślnej, ale pozycja i szerokość pozostają niezmienione.
CCS_NORESIZE Uniemożliwia kontrolce używanie domyślnej szerokości i wysokości podczas ustawiania początkowego rozmiaru lub nowego rozmiaru. Zamiast tego kontrolka używa szerokości i wysokości określonej w żądaniu tworzenia lub określania rozmiaru.
CCS_TOP Powoduje, że kontrolka znajduje się w górnej części obszaru klienta okna nadrzędnego i ustawia szerokość tak samo jak szerokość okna nadrzędnego.
Możesz również zastosować następujące style okna do kontrolki nagłówka (zobacz Style okien, aby uzyskać więcej informacji):
WS_CHILD Tworzy okno podrzędne. Nie można używać z stylem WS_POPUP.
WS_VISIBLE Tworzy okno, które jest początkowo widoczne.
WS_DISABLED Tworzy okno, które jest początkowo wyłączone.
WS_GROUP Określa pierwszą kontrolkę grupy kontrolek, w której użytkownik może przejść z jednej kontrolki do następnej za pomocą strzałek. Wszystkie kontrolki zdefiniowane za pomocą stylu WS_GROUP po pierwszym kontrolce należą do tej samej grupy. Następna kontrolka z stylem WS_GROUP kończy grupę stylów i uruchamia następną grupę (czyli jedną grupę kończy się, gdzie rozpoczyna się następny).
WS_TABSTOP Określa jedną z dowolnej liczby kontrolek, za pomocą których użytkownik może poruszać się przy użyciu TAB. TAB przenosi użytkownika do następnej kontrolki określonej przez styl WS_TABSTOP.
Jeśli chcesz użyć rozszerzonych stylów okien z kontrolką, wywołaj metodę CreateEx zamiast Create
.
Przykład
// 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
Tworzy kontrolkę (okno podrzędne) i skojarzy ją z obiektem CHeaderCtrl
.
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parametry
dwExStyle
Określa rozszerzony styl tworzonej kontrolki. Aby uzyskać listę rozszerzonych stylów systemu Windows, zobacz parametr dwExStyle dla polecenia CreateWindowEx w zestawie WINDOWS SDK.
dwStyle
Styl kontrolki nagłówka. Opis stylów kontrolek nagłówka można znaleźć w temacie Header Control Styles in the Windows SDK (Style kontrolek nagłówka w zestawie Windows SDK). Zobacz Tworzenie , aby uzyskać listę dodatkowych stylów.
Rect
Odwołanie do struktury RECT opisującej rozmiar i położenie okna do utworzenia w współrzędnych klienta pParentWnd.
pParentWnd
Wskaźnik do okna, który jest elementem nadrzędnym kontrolki.
Nid
Identyfikator okna podrzędnego kontrolki.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Użyj CreateEx
zamiast Create
stosować rozszerzone style systemu Windows określone przez WS_EX_ stylu rozszerzonego systemu Windows.
CHeaderCtrl::CreateDragImage
Tworzy przezroczystą wersję obrazu elementu w kontrolce nagłówka.
CImageList* CreateDragImage(int nIndex);
Parametry
nIndex
Indeks zerowy elementu w kontrolce nagłówka. Obraz przypisany do tego elementu jest podstawą przezroczystego obrazu.
Wartość zwracana
Wskaźnik do obiektu CImageList , jeśli się powiedzie; w przeciwnym razie wartość NULL. Zwrócona lista zawiera tylko jeden obraz.
Uwagi
Ta funkcja składowa implementuje zachowanie HDM_CREATEDRAGIMAGE komunikatu Win32 zgodnie z opisem w zestawie WINDOWS SDK. Zapewnia obsługę przeciągania i upuszczania elementu nagłówka.
CImageList
Obiekt, do którego zwracane punkty wskaźnika jest obiektem tymczasowym i jest usuwany w następnym przetwarzaniu bezczynności.
CHeaderCtrl::D eleteItem
Usuwa element z kontrolki nagłówka.
BOOL DeleteItem(int nPos);
Parametry
nPos
Określa indeks zerowy elementu do usunięcia.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Przykład
int nCount = m_myHeaderCtrl.GetItemCount();
// Delete all of the items.
for (int i = 0; i < nCount; i++)
{
m_myHeaderCtrl.DeleteItem(0);
}
CHeaderCtrl::D rawItem
Wywoływana przez strukturę, gdy zmienia się wizualny aspekt kontrolki nagłówka właściciela rysowania.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parametry
lpDrawItem, struktura
Wskaźnik do struktury DRAWITEMSTRUCT opisujący element do malowania.
Uwagi
Element itemAction
członkowski DRAWITEMSTRUCT
struktury definiuje akcję rysunku, która ma zostać wykonana.
Domyślnie ta funkcja składowa nic nie robi. Zastąpi tę funkcję składową, aby zaimplementować rysunek dla obiektu rysowania CHeaderCtrl
właściciela.
Aplikacja powinna przywrócić wszystkie obiekty interfejsu urządzenia graficznego (GDI) wybrane dla kontekstu wyświetlania podanego w lpDrawItemStruct przed zakończeniem tej funkcji składowej.
Przykład
// 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
Rozpoczyna edytowanie określonego filtru kontrolki nagłówka.
BOOL EditFilter(
int nColumn,
BOOL bDiscardChanges);
Parametry
nKolumn
Kolumna do edycji.
bDiscardChanges
Wartość określająca sposób obsługi zmian edycji użytkownika, jeśli użytkownik jest w trakcie edytowania filtru podczas wysyłania komunikatu HDM_EDITFILTER .
Określ wartość TRUE, aby odrzucić zmiany wprowadzone przez użytkownika lub wartość FALSE, aby zaakceptować zmiany wprowadzone przez użytkownika.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Ta metoda implementuje zachowanie HDM_EDITFILTER komunikatu Win32 zgodnie z opisem w zestawie Windows SDK.
Przykład
int iFilter = m_myHeaderCtrl.EditFilter(1, TRUE);
CHeaderCtrl::GetBitmapMargin
Pobiera szerokość marginesu mapy bitowej w kontrolce nagłówka.
int GetBitmapMargin() const;
Wartość zwracana
Szerokość marginesu mapy bitowej w pikselach.
Uwagi
Ta funkcja składowa implementuje zachowanie komunikatu Win32 HDM_GETBITMAPMARGIN zgodnie z opisem w zestawie WINDOWS SDK.
Przykład
int iMargin = m_myHeaderCtrl.GetBitmapMargin();
CHeaderCtrl::GetFocusedItem
Pobiera indeks elementu, który ma fokus w bieżącej kontrolce nagłówka.
int GetFocusedItem() const;
Wartość zwracana
Indeks zerowy elementu nagłówka, który ma fokus.
Uwagi
Ta metoda wysyła komunikat HDM_GETFOCUSEDITEM opisany w zestawie Windows SDK.
Przykład
Pierwszy przykład kodu definiuje zmienną , m_headerCtrl
która jest używana do uzyskiwania dostępu do bieżącej kontrolki nagłówka. Ta zmienna jest używana w następnym przykładzie.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
W następnym przykładzie kodu przedstawiono SetFocusedItem
metody i .GetFocusedItem
We wcześniejszej sekcji kodu utworzyliśmy kontrolkę nagłówka z pięcioma kolumnami. Można jednak przeciągnąć separator kolumny, aby kolumna nie jest widoczna. Poniższy przykład ustawia, a następnie potwierdza ostatni nagłówek kolumny jako element fokusu.
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
Pobiera uchwyt listy obrazów używany do rysowania elementów nagłówka w kontrolce nagłówka.
CImageList* GetImageList() const;
Wartość zwracana
Wskaźnik do obiektu CImageList .
Uwagi
Ta funkcja składowa implementuje zachowanie komunikatu Win32 HDM_GETIMAGELIST zgodnie z opisem w zestawie WINDOWS SDK. CImageList
Obiekt, do którego zwracane punkty wskaźnika jest obiektem tymczasowym i jest usuwany w następnym przetwarzaniu bezczynności.
Przykład
// 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
Pobiera informacje o elemencie kontrolki nagłówka.
BOOL GetItem(
int nPos,
HDITEM* pHeaderItem) const;
Parametry
nPos
Określa indeks zerowy elementu do pobrania.
pHeaderItem
Wskaźnik do struktury HDITEM , która odbiera nowy element. Ta struktura jest używana z funkcjami składowymi InsertItem
i SetItem
. Wszystkie flagi ustawione w elemecie mask
zapewniają, że wartości w odpowiednich elementach są poprawnie wypełniane po powrocie. mask
Jeśli element jest ustawiony na zero, wartości w innych elementach struktury są bez znaczenia.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Przykład
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
Pobiera liczbę elementów w kontrolce nagłówka.
int GetItemCount() const;
Wartość zwracana
Liczba elementów kontrolek nagłówka w przypadku powodzenia; w przeciwnym razie - 1.
Przykład
Zobacz przykład CHeaderCtrl ::D eleteItem.
CHeaderCtrl::GetItemDropDownRect
Pobiera prostokąt ograniczenia przycisku listy rozwijanej dla elementu nagłówka w bieżącej kontrolce nagłówka.
BOOL GetItemDropDownRect(
int iItem,
LPRECT lpRect) const;
Parametry
iItem
[in] Indeks zerowy elementu nagłówka, którego styl jest HDF_SPLITBUTTON. Aby uzyskać więcej informacji, zobacz fmt
element członkowski struktury HDITEM .
lpRect
[out] Wskaźnik do struktury RECT w celu odbierania informacji prostokąta ograniczenia.
Wartość zwracana
Wartość TRUE, jeśli ta funkcja zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Ta metoda wysyła komunikat HDM_GETITEMDROPDOWNRECT opisany w zestawie Windows SDK.
Przykład
Pierwszy przykład kodu definiuje zmienną , m_headerCtrl
która jest używana do uzyskiwania dostępu do bieżącej kontrolki nagłówka. Ta zmienna jest używana w następnym przykładzie.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
W następnym przykładzie kodu pokazano metodę GetItemDropDownRect
. We wcześniejszej sekcji kodu utworzyliśmy kontrolkę nagłówka z pięcioma kolumnami. Poniższy przykład kodu rysuje prostokąt 3D wokół lokalizacji w pierwszej kolumnie zarezerwowanej dla przycisku rozwijanego nagłówka.
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
Pobiera prostokąt ograniczenia dla danego elementu w kontrolce nagłówka.
BOOL GetItemRect(
int nIndex,
LPRECT lpRect) const;
Parametry
nIndex
Indeks zerowy elementu kontrolki nagłówka.
lpRect
Wskaźnik do adresu struktury RECT , który odbiera informacje prostokąta ograniczenia.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Ta metoda implementuje zachowanie komunikatu Win32 HDM_GETITEMRECT zgodnie z opisem w zestawie Windows SDK.
CHeaderCtrl::GetOrderArray
Pobiera kolejność elementów od lewej do prawej w kontrolce nagłówka.
BOOL GetOrderArray(
LPINT piArray,
int iCount);
Parametry
piArray
Wskaźnik do adresu buforu, który odbiera wartości indeksu elementów w kontrolce nagłówka, w kolejności, w której pojawiają się od lewej do prawej.
iCount
Liczba elementów kontrolki nagłówka. Musi być nieujemna.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa implementuje zachowanie HDM_GETORDERARRAY komunikatu Win32 zgodnie z opisem w zestawie WINDOWS SDK. Zapewnia obsługę porządkowania elementów nagłówka.
Przykład
// 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
Pobiera prostokąt ograniczenia przycisku przepełnienia bieżącego formantu nagłówka.
BOOL GetOverflowRect(LPRECT lpRect) const;
Parametry
lpRect
[out] Wskaźnik do struktury RECT , która odbiera informacje prostokąta ograniczenia.
Wartość zwracana
Wartość TRUE, jeśli ta funkcja zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Jeśli kontrolka nagłówka zawiera więcej elementów niż można wyświetlić jednocześnie, kontrolka może wyświetlić przycisk przepełnienia, który przewija się do elementów, które nie są widoczne. Kontrolka nagłówka musi mieć style HDS_OVERFLOW i HDF_SPLITBUTTON, aby wyświetlić przycisk przepełnienia. Prostokąt ograniczenia otacza przycisk przepełnienia i istnieje tylko wtedy, gdy zostanie wyświetlony przycisk przepełnienia. Aby uzyskać więcej informacji, zobacz Style kontrolek nagłówka.
Ta metoda wysyła komunikat HDM_GETOVERFLOWRECT opisany w zestawie WINDOWS SDK.
Przykład
Pierwszy przykład kodu definiuje zmienną , m_headerCtrl
która jest używana do uzyskiwania dostępu do bieżącej kontrolki nagłówka. Ta zmienna jest używana w następnym przykładzie.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
W następnym przykładzie kodu pokazano metodę GetOverflowRect
. We wcześniejszej sekcji kodu utworzyliśmy kontrolkę nagłówka z pięcioma kolumnami. Można jednak przeciągnąć separator kolumny, aby kolumna nie jest widoczna. Jeśli niektóre kolumny nie są widoczne, kontrolka nagłówka rysuje przycisk przepełnienia. Poniższy przykład kodu rysuje prostokąt 3D wokół lokalizacji przycisku przepełnienia.
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
Określa, który element nagłówka, jeśli istnieje, znajduje się w określonym punkcie.
int HitTest(LPHDHITTESTINFO* phdhti);
Parametry
phdhti
[in, out] Wskaźnik do struktury HDHITTESTINFO , która określa punkt do przetestowania i otrzymuje wyniki testu.
Wartość zwracana
Indeks zerowy elementu nagłówka, jeśli istnieje, w określonej pozycji; w przeciwnym razie, -1.
Uwagi
Ta metoda wysyła komunikat HDM_HITTEST opisany w zestawie Windows SDK.
Przykład
Pierwszy przykład kodu definiuje zmienną , m_headerCtrl
która jest używana do uzyskiwania dostępu do bieżącej kontrolki nagłówka. Ta zmienna jest używana w następnym przykładzie.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
W następnym przykładzie kodu pokazano metodę HitTest
. We wcześniejszej sekcji tego przykładu kodu utworzyliśmy kontrolkę nagłówka z pięcioma kolumnami. Można jednak przeciągnąć separator kolumny, aby kolumna nie jest widoczna. W tym przykładzie raportuje indeks kolumny, jeśli jest widoczny i -1, jeśli kolumna nie jest widoczna.
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
Wstawia nowy element do kontrolki nagłówka w określonym indeksie.
int InsertItem(
int nPos,
HDITEM* phdi);
Parametry
nPos
Indeks zerowy elementu, który ma zostać wstawiony. Jeśli wartość ma wartość zero, element zostanie wstawiony na początku kontrolki nagłówka. Jeśli wartość jest większa niż wartość maksymalna, element jest wstawiany na końcu kontrolki nagłówka.
phdi
Wskaźnik do struktury HDITEM zawierającej informacje o elemencie do wstawienia.
Wartość zwracana
Indeks nowego elementu, jeśli się powiedzie; w przeciwnym razie - 1.
Przykład
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
Pobiera rozmiar i położenie kontrolki nagłówka w danym prostokątze.
BOOL Layout(HDLAYOUT* pHeaderLayout);
Parametry
Nakładka pHeaderLayout
Wskaźnik do struktury HDLAYOUT , która zawiera informacje używane do ustawiania rozmiaru i położenia kontrolki nagłówka.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Ta funkcja służy do określania odpowiednich wymiarów dla nowej kontrolki nagłówka, która ma zajmować dany prostokąt.
Przykład
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
Pobiera wartość indeksu dla elementu na podstawie jego kolejności w kontrolce nagłówka.
int OrderToIndex(int nOrder) const;
Parametry
nOrder
Kolejność oparta na zera wyświetlana w kontrolce nagłówka od lewej do prawej.
Wartość zwracana
Indeks elementu na podstawie jego kolejności w kontrolce nagłówka. Indeks liczy się od lewej do prawej, zaczynając od 0.
Uwagi
Ta funkcja składowa implementuje zachowanie makra Win32 HDM_ORDERTOINDEX zgodnie z opisem w zestawie WINDOWS SDK. Zapewnia obsługę porządkowania elementów nagłówka.
CHeaderCtrl::SetBitmapMargin
Ustawia szerokość marginesu mapy bitowej w kontrolce nagłówka.
int SetBitmapMargin(int nWidth);
Parametry
nWidth
Szerokość określona w pikselach marginesu otaczającego mapę bitową w istniejącej kontrolce nagłówka.
Wartość zwracana
Szerokość marginesu mapy bitowej w pikselach.
Uwagi
Ta funkcja składowa implementuje zachowanie komunikatu Win32 HDM_SETBITMAPMARGIN zgodnie z opisem w zestawie WINDOWS SDK.
Przykład
int iOldMargin = m_myHeaderCtrl.SetBitmapMargin(15);
CHeaderCtrl::SetFilterChangeTimeout
Ustawia interwał limitu czasu między czasem zmiany w atrybutach filtru a publikowaniem powiadomienia HDN_FILTERCHANGE .
int SetFilterChangeTimeout(DWORD dwTimeOut);
Parametry
dwTimeOut
Wartość limitu czasu w milisekundach.
Wartość zwracana
Indeks modyfikowanej kontrolki filtru.
Uwagi
Ta funkcja składowa implementuje zachowanie komunikatu Win32 HDM_SETFILTERCHANGETIMEOUT zgodnie z opisem w zestawie Windows SDK.
Przykład
int iFltr = m_myHeaderCtrl.SetFilterChangeTimeout(15);
CHeaderCtrl::SetFocusedItem
Ustawia fokus na określony element nagłówka w bieżącej kontrolce nagłówka.
BOOL SetFocusedItem(int iItem);
Parametry
iItem
[in] Indeks zerowy elementu nagłówka.
Wartość zwracana
Wartość TRUE, jeśli ta metoda zakończyła się pomyślnie; w przeciwnym razie, FAŁSZ.
Uwagi
Ta metoda wysyła komunikat HDM_SETFOCUSEDITEM opisany w zestawie Windows SDK.
Przykład
Pierwszy przykład kodu definiuje zmienną , m_headerCtrl
która jest używana do uzyskiwania dostępu do bieżącej kontrolki nagłówka. Ta zmienna jest używana w następnym przykładzie.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
W następnym przykładzie kodu przedstawiono SetFocusedItem
metody i .GetFocusedItem
We wcześniejszej sekcji kodu utworzyliśmy kontrolkę nagłówka z pięcioma kolumnami. Można jednak przeciągnąć separator kolumny, aby kolumna nie jest widoczna. Poniższy przykład ustawia, a następnie potwierdza ostatni nagłówek kolumny jako element fokusu.
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
Zmienia podział między elementami nagłówka, aby wskazać ręczne przeciąganie i upuszczanie elementu nagłówka.
int SetHotDivider(CPoint pt);
int SetHotDivider(int nIndex);
Parametry
Pt
Położenie wskaźnika. Kontrolka nagłówka wyróżnia odpowiedni element dzielący na podstawie położenia wskaźnika.
nIndex
Indeks wyróżnionego dzielenia.
Wartość zwracana
Indeks wyróżnionego dzielenia.
Uwagi
Ta funkcja składowa implementuje zachowanie HDM_SETHOTDIVIDER komunikatu Win32 zgodnie z opisem w zestawie WINDOWS SDK. Zapewnia obsługę przeciągania i upuszczania elementu nagłówka.
Przykład
void CMyHeaderCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
SetHotDivider(point);
CHeaderCtrl::OnMouseMove(nFlags, point);
}
CHeaderCtrl::SetImageList
Przypisuje listę obrazów do kontrolki nagłówka.
CImageList* SetImageList(CImageList* pImageList);
Parametry
pImageList
Wskaźnik do obiektu zawierającego CImageList
listę obrazów, która ma zostać przypisana do kontrolki nagłówka.
Wartość zwracana
Wskaźnik do obiektu CImageList wcześniej przypisanego do kontrolki nagłówka.
Uwagi
Ta funkcja składowa implementuje zachowanie komunikatu Win32 HDM_SETIMAGELIST zgodnie z opisem w zestawie WINDOWS SDK. CImageList
Obiekt, do którego zwracane punkty wskaźnika jest obiektem tymczasowym i jest usuwany w następnym przetwarzaniu bezczynności.
Przykład
Zobacz przykład CHeaderCtrl ::GetImageList.
CHeaderCtrl::SetItem
Ustawia atrybuty określonego elementu w kontrolce nagłówka.
BOOL SetItem(
int nPos,
HDITEM* pHeaderItem);
Parametry
nPos
Indeks oparty na zera elementu, który ma być manipulowany.
pHeaderItem
Wskaźnik do struktury HDITEM zawierającej informacje o nowym elemencie.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Przykład
Zobacz przykład CHeaderCtrl ::GetItem.
CHeaderCtrl::SetOrderArray
Ustawia kolejność od lewej do prawej elementów w kontrolce nagłówka.
BOOL SetOrderArray(
int iCount,
LPINT piArray);
Parametry
iCount
Liczba elementów kontrolki nagłówka.
piArray
Wskaźnik do adresu buforu, który odbiera wartości indeksu elementów w kontrolce nagłówka, w kolejności, w której pojawiają się od lewej do prawej.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Ta funkcja składowa implementuje zachowanie makra Win32 HDM_SETORDERARRAY zgodnie z opisem w zestawie WINDOWS SDK. Zapewnia obsługę porządkowania elementów nagłówka.
Przykład
Zobacz przykład CHeaderCtrl ::GetOrderArray.
Zobacz też
Klasa CWnd
Wykres hierarchii
Klasa CTabCtrl
Klasa CListCtrl
Klasa CImageList