Udostępnij za pośrednictwem


Klasa CHeaderCtrl

Zapewnia funkcjonalność wspólnej kontrolki nagłówka systemu Windows.

Składnia

class CHeaderCtrl : public CWnd

Członkowie

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

Cobject

Ccmdtarget

Cwnd

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 Createmetodę , 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ą klawiszy 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 klawisza TAB. Klawisz 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_headerCtrlktó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_headerCtrlktó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_headerCtrlktó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_headerCtrlktó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_headerCtrlktó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