Sdílet prostřednictvím


CHeaderCtrl – třída

Poskytuje funkce běžného ovládacího prvku hlavičky systému Windows.

Syntaxe

class CHeaderCtrl : public CWnd

Členové

Veřejné konstruktory

Jméno popis
CHeaderCtrl::CHeaderCtrl CHeaderCtrl Vytvoří objekt.

Veřejné metody

Jméno popis
CHeaderCtrl::ClearAllFilters Vymaže všechny filtry pro ovládací prvek záhlaví.
CHeaderCtrl::ClearFilter Vymaže filtr pro ovládací prvek záhlaví.
CHeaderCtrl::Create Vytvoří ovládací prvek záhlaví a připojí ho k objektu CHeaderCtrl .
CHeaderCtrl::CreateDragImage Vytvoří průhlednou verzi obrázku položky v ovládacím prvku záhlaví.
CHeaderCtrl::CreateEx Vytvoří ovládací prvek záhlaví se zadanými rozšířenými styly Windows a připojí ho k objektu CListCtrl .
CHeaderCtrl::D eleteItem Odstraní položku z ovládacího prvku záhlaví.
CHeaderCtrl::D rawItem Nakreslí zadanou položku ovládacího prvku záhlaví.
CHeaderCtrl::EditFilter Spustí úpravu zadaného filtru ovládacího prvku záhlaví.
CHeaderCtrl::GetBitmapMargin Načte šířku okraje rastrového obrázku v ovládacím prvku záhlaví.
CHeaderCtrl::GetFocusedItem Získá identifikátor položky v aktuálním ovládacím prvku záhlaví, který má fokus.
CHeaderCtrl::GetImageList Načte popisovač seznamu obrázků použitý pro položky záhlaví výkresu v ovládacím prvku záhlaví.
CHeaderCtrl::GetItem Načte informace o položce v ovládacím prvku záhlaví.
CHeaderCtrl::GetItemCount Načte počet položek v ovládacím prvku záhlaví.
CHeaderCtrl::GetItemDropDownRect Získá ohraničující obdélník informace pro zadané rozevírací tlačítko v ovládacím prvku záhlaví.
CHeaderCtrl::GetItemRect Načte ohraničující obdélník pro danou položku v ovládacím prvku záhlaví.
CHeaderCtrl::GetOrderArray Načte pořadí položek zleva doprava v ovládacím prvku záhlaví.
CHeaderCtrl::GetOverflowRect Získá ohraničující obdélník přetečení tlačítko pro aktuální záhlaví ovládacího prvku.
CHeaderCtrl::HitTest Určuje, která položka záhlaví, pokud existuje, je umístěna v zadaném bodě.
CHeaderCtrl::InsertItem Vloží novou položku do ovládacího prvku záhlaví.
CHeaderCtrl::Layout Načte velikost a umístění ovládacího prvku záhlaví v daném obdélníku.
CHeaderCtrl::OrderToIndex Načte hodnotu indexu položky na základě jejího pořadí v ovládacím prvku záhlaví.
CHeaderCtrl::SetBitmapMargin Nastaví šířku okraje rastrového obrázku v ovládacím prvku záhlaví.
CHeaderCtrl::SetFilterChangeTimeout Nastaví interval časového limitu mezi časem, kdy se změna provede v atributech filtru a zaúčtování HDN_FILTERCHANGE oznámení.
CHeaderCtrl::SetFocusedItem Nastaví fokus na zadanou položku záhlaví v aktuálním ovládacím prvku záhlaví.
CHeaderCtrl::SetHotDivider Změní rozdělovač mezi položkami záhlaví tak, aby označí ruční přetažení položky záhlaví.
CHeaderCtrl::SetImageList Přiřadí seznam obrázků ovládacímu prvku záhlaví.
CHeaderCtrl::SetItem Nastaví atributy zadané položky v ovládacím prvku záhlaví.
CHeaderCtrl::SetOrderArray Nastaví pořadí položek zleva doprava v ovládacím prvku záhlaví.

Poznámky

Ovládací prvek záhlaví je okno, které je obvykle umístěné nad sadou sloupců textu nebo čísel. Obsahuje název pro každý sloupec a dá se rozdělit do částí. Uživatel může přetáhnout rozdělovače, které rozdělují části, a nastavit tak šířku každého sloupce. Obrázek ovládacího prvku záhlaví najdete v tématu Ovládací prvky záhlaví.

Tento ovládací prvek (a proto CHeaderCtrl třída) je k dispozici pouze pro programy, které běží v systému Windows 95/98 a systém Windows NT verze 3.51 a novější.

Mezi funkce přidané pro běžné ovládací prvky systému Windows 95/Internet Explorer 4.0 patří:

  • Vlastní řazení položek záhlaví

  • Přetažení položky záhlaví pro přeuspořádání položek záhlaví Při vytváření objektu CHeaderCtrl použijte styl HDS_DRAGDROP.

  • Text sloupce záhlaví je při změně velikosti sloupce neustále zobrazitelný. Při vytváření objektu CHeaderCtrl použijte styl HDS_FULLDRAG.

  • Sledování horkého záhlaví, které zvýrazní položku záhlaví, když na ni ukazatel najede myší. Při vytváření objektu CHeaderCtrl použijte styl HDS_HOTTRACK.

  • Podpora seznamu obrázků Položky záhlaví můžou obsahovat obrázky uložené v objektu CImageList nebo textu.

Další informace o použití CHeaderCtrlnaleznete v tématu Ovládací prvky a použití CHeaderCtrl.

Hierarchie dědičnosti

Objekt CObject

CCmdTarget

Cwnd

CHeaderCtrl

Požadavky

Hlavička: afxcmn.h

CHeaderCtrl::CHeaderCtrl

CHeaderCtrl Vytvoří objekt.

CHeaderCtrl();

Příklad

// Declare a local CHeaderCtrl object.
CHeaderCtrl myHeaderCtrl;

// Declare a dynamic CHeaderCtrl object.
CHeaderCtrl *pmyHeaderCtrl = new CHeaderCtrl;

CHeaderCtrl::ClearAllFilters

Vymaže všechny filtry pro ovládací prvek záhlaví.

BOOL ClearAllFilters();

Vrácená hodnota

TRUE, pokud tato metoda je úspěšná; jinak NEPRAVDA.

Poznámky

Tato metoda implementuje chování zprávy Win32 HDM_CLEARFILTER s hodnotou sloupce -1, jak je popsáno v sadě Windows SDK.

Příklad

m_myHeaderCtrl.ClearAllFilters();

CHeaderCtrl::ClearFilter

Vymaže filtr pro ovládací prvek záhlaví.

BOOL ClearFilter(int nColumn);

Parametry

nSloupcová
Hodnota sloupce označující, který filtr se má vymazat.

Vrácená hodnota

TRUE, pokud tato metoda je úspěšná; jinak NEPRAVDA.

Poznámky

Tato metoda implementuje chování zprávy Win32 HDM_CLEARFILTER, jak je popsáno v sadě Windows SDK.

Příklad

int iFilt = m_myHeaderCtrl.ClearFilter(1);

CHeaderCtrl::Create

Vytvoří ovládací prvek záhlaví a připojí ho k objektu CHeaderCtrl .

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parametry

dwStyle
Určuje styl ovládacího prvku záhlaví. Popis stylů ovládacích prvků záhlaví naleznete v tématu Styly ovládacích prvků záhlaví v sadě Windows SDK.

Rect
Určuje velikost a umístění ovládacího prvku záhlaví. Může to být objekt CRect nebo struktura RECT .

pParentWnd
Určuje nadřazené okno ovládacího prvku záhlaví, obvykle .CDialog Nesmí mít hodnotu NULL.

Nid
Určuje ID ovládacího prvku záhlaví.

Vrácená hodnota

Nenulové, pokud byla inicializace úspěšná; jinak nula.

Poznámky

Objekt vytvoříte CHeaderCtrl ve dvou krocích. Nejprve zavolejte konstruktor a potom volání Create, který vytvoří ovládací prvek záhlaví a připojí ho k objektu CHeaderCtrl .

Kromě stylů ovládacích prvků záhlaví můžete pomocí následujících běžných stylů ovládacích prvků určit, jak se pozice a změna velikosti ovládacích prvků záhlaví změní (další informace najdete v tématu Běžné styly ovládacích prvků):

  • CCS_BOTTOM Způsobí, že se ovládací prvek umístí do dolní části klientské oblasti nadřazeného okna a nastaví šířku stejnou jako šířka nadřazeného okna.

  • CCS_NODIVIDER Zabrání vykreslení dvou pixelů zvýraznění v horní části ovládacího prvku.

  • CCS_NOMOVEY Způsobí, že ovládací prvek změní velikost a přesune se vodorovně, ale ne svisle, v reakci na zprávu WM_SIZE. Pokud se použije styl CCS_NORESIZE, tento styl se nepoužije. Ovládací prvky záhlaví mají ve výchozím nastavení tento styl.

  • CCS_NOPARENTALIGN Zabrání automatickému přechodu ovládacího prvku do horní nebo dolní části nadřazeného okna. Místo toho ovládací prvek zachová jeho pozici v nadřazené okně i přes změny velikosti nadřazeného okna. Pokud se použije také styl CCS_TOP nebo CCS_BOTTOM, výška se upraví na výchozí, ale pozice a šířka zůstanou beze změny.

  • CCS_NORESIZE Zabrání ovládacímu prvku použít výchozí šířku a výšku při nastavování počáteční velikosti nebo nové velikosti. Místo toho ovládací prvek používá šířku a výšku zadanou v požadavku pro vytvoření nebo změnu velikosti.

  • CCS_TOP Způsobí, že se ovládací prvek umístí do horní části klientské oblasti nadřazeného okna a nastaví šířku stejnou jako šířka nadřazeného okna.

U ovládacího prvku záhlaví můžete použít také následující styly oken (další informace najdete v tématu Styly oken):

  • WS_CHILD Vytvoří podřízené okno. Nelze použít se stylem WS_POPUP.

  • WS_VISIBLE Vytvoří okno, které je zpočátku viditelné.

  • WS_DISABLED Vytvoří okno, které je původně zakázáno.

  • WS_GROUP Určuje první ovládací prvek skupiny ovládacích prvků, ve kterých může uživatel přejít z jednoho ovládacího prvku na další pomocí kláves se šipkami. Všechny ovládací prvky definované stylem WS_GROUP po prvním ovládacím prvku patří do stejné skupiny. Další ovládací prvek se stylem WS_GROUP ukončí skupinu stylů a spustí další skupinu (to znamená, že jedna skupina končí tam, kde začíná další).

  • WS_TABSTOP Určuje jeden z libovolných ovládacích prvků, kterými se uživatel může pohybovat pomocí klávesy TAB. Klávesa TAB přesune uživatele na další ovládací prvek určený stylem WS_TABSTOP.

Chcete-li použít rozšířené styly oken s ovládacím prvek, volání CreateEx místo Create.

Příklad

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

Vytvoří ovládací prvek (podřízené okno) a přidruží ho k objektu CHeaderCtrl .

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parametry

dwExStyle
Určuje rozšířený styl vytvářeného ovládacího prvku. Seznam rozšířených stylů Windows naleznete v části dwExStyle parametr pro CreateWindowEx v sadě Windows SDK.

dwStyle
Styl ovládacího prvku záhlaví. Popis stylů ovládacích prvků záhlaví naleznete v tématu Styly ovládacích prvků záhlaví v sadě Windows SDK. Viz Vytvoření seznamu dalších stylů.

Rect
Odkaz na strukturu RECT popisující velikost a umístění okna, které se má vytvořit, v souřadnicích klienta pParentWnd.

pParentWnd
Ukazatel na okno, které je nadřazeným objektem ovládacího prvku.

Nid
ID podřízeného okna ovládacího prvku.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Create Místo CreateEx použití rozšířených stylů Windows určených před WS_EX_ rozšířeného stylu Windows.

CHeaderCtrl::CreateDragImage

Vytvoří průhlednou verzi obrázku položky v ovládacím prvku záhlaví.

CImageList* CreateDragImage(int nIndex);

Parametry

nIndex
Index položky založené na nule v ovládacím prvku záhlaví. Obrázek přiřazený k této položce je základem průhledného obrázku.

Vrácená hodnota

Ukazatel na objekt CImageList v případě úspěchu; jinak NULL. Vrácený seznam obsahuje pouze jeden obrázek.

Poznámky

Tato členová funkce implementuje chování zprávy Win32 HDM_CREATEDRAGIMAGE, jak je popsáno v sadě Windows SDK. Poskytuje se pro podporu přetahování položek záhlaví.

Objekt CImageList , na který vrácený ukazatel odkazuje, je dočasným objektem a v dalším zpracování nečinnosti se odstraní.

CHeaderCtrl::D eleteItem

Odstraní položku z ovládacího prvku záhlaví.

BOOL DeleteItem(int nPos);

Parametry

NPos
Určuje nulový index položky, který se má odstranit.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Příklad

int nCount = m_myHeaderCtrl.GetItemCount();

// Delete all of the items.
for (int i = 0; i < nCount; i++)
{
   m_myHeaderCtrl.DeleteItem(0);
}

CHeaderCtrl::D rawItem

Volá se architekturou, když se změní vizuální aspekt ovládacího prvku záhlaví pro kreslení vlastníka.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parametry

lpDrawItem – struktura
Ukazatel na strukturu DRAWITEMSTRUCT popisující položku, která má být vykreslena.

Poznámky

Člen itemActionDRAWITEMSTRUCT struktury definuje akci výkresu, která se má provést.

Ve výchozím nastavení tato členová funkce nic nedělá. Přepište tuto členovou funkci tak, aby implementovaly výkres pro objekt pro kreslení CHeaderCtrl vlastníka.

Aplikace by měla obnovit všechny objekty rozhraní grafického zařízení (GDI) vybrané pro kontext zobrazení zadaný v lpDrawItemStruct před ukončením této členské funkce.

Příklad

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

Začne upravovat zadaný filtr ovládacího prvku záhlaví.

BOOL EditFilter(
    int nColumn,
    BOOL bDiscardChanges);

Parametry

nSloupcová
Sloupec, který chcete upravit.

bDiscardChanges
Hodnota, která určuje, jak zpracovat změny úprav uživatele, pokud je uživatel v procesu úprav filtru při odeslání HDM_EDITFILTER zprávy.

Chcete-li zahodit změny provedené uživatelem, zadejte hodnotu TRUE, pokud chcete přijmout změny provedené uživatelem.

Vrácená hodnota

TRUE, pokud tato metoda je úspěšná; jinak NEPRAVDA.

Poznámky

Tato metoda implementuje chování zprávy Win32 HDM_EDITFILTER, jak je popsáno v sadě Windows SDK.

Příklad

int iFilter = m_myHeaderCtrl.EditFilter(1, TRUE);

CHeaderCtrl::GetBitmapMargin

Načte šířku okraje rastrového obrázku v ovládacím prvku záhlaví.

int GetBitmapMargin() const;

Vrácená hodnota

Šířka okraje rastrového obrázku v pixelech.

Poznámky

Tato členová funkce implementuje chování zprávy Win32 HDM_GETBITMAPMARGIN, jak je popsáno v sadě Windows SDK.

Příklad

int iMargin = m_myHeaderCtrl.GetBitmapMargin();

CHeaderCtrl::GetFocusedItem

Získá index položky, která má fokus v aktuálním záhlaví ovládacího prvku.

int GetFocusedItem() const;

Vrácená hodnota

Index záhlaví s nulovým indexem položky, která má fokus.

Poznámky

Tato metoda odešle HDM_GETFOCUSEDITEM zprávu, která je popsaná v sadě Windows SDK.

Příklad

První příklad kódu definuje proměnnou , m_headerCtrlkterá se používá pro přístup k aktuálnímu ovládacímu prvku záhlaví. Tato proměnná se používá v dalším příkladu.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

Následující příklad kódu ukazuje metody SetFocusedItem a GetFocusedItem metody. V dřívější části kódu jsme vytvořili ovládací prvek záhlaví s pěti sloupci. Oddělovač sloupců ale můžete přetáhnout tak, aby nebyl viditelný. Následující příklad nastaví a pak potvrdí záhlaví posledního sloupce jako položku 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

Načte popisovač seznamu obrázků použitý pro položky záhlaví výkresu v ovládacím prvku záhlaví.

CImageList* GetImageList() const;

Vrácená hodnota

Ukazatel na objekt CImageList .

Poznámky

Tato členová funkce implementuje chování zprávy Win32 HDM_GETIMAGELIST, jak je popsáno v sadě Windows SDK. Objekt CImageList , na který vrácený ukazatel odkazuje, je dočasným objektem a v dalším zpracování nečinnosti se odstraní.

Příklad

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

Načte informace o položce ovládacího prvku záhlaví.

BOOL GetItem(
    int nPos,
    HDITEM* pHeaderItem) const;

Parametry

NPos
Určuje index položky založený na nule, který se má načíst.

pHeaderItem
Ukazatel na strukturu HDITEM , která přijímá novou položku. Tato struktura se používá s členskými funkcemiInsertItem.SetItem Všechny příznaky nastavené v elementu mask zajišťují, aby hodnoty v odpovídajících prvcích byly správně vyplněny při vrácení. Pokud je prvek nastaven na nulu mask , hodnoty v ostatních elementech struktury jsou nesmyslné.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Příklad

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

Načte počet položek v ovládacím prvku záhlaví.

int GetItemCount() const;

Vrácená hodnota

Počet položek ovládacího prvku záhlaví v případě úspěchu; jinak - 1.

Příklad

Podívejte se na příklad pro CHeaderCtrl::D eleteItem.

CHeaderCtrl::GetItemDropDownRect

Získá ohraničující obdélník rozevíracího tlačítka pro položku záhlaví v aktuálním ovládacím prvku záhlaví.

BOOL GetItemDropDownRect(
    int iItem,
    LPRECT lpRect) const;

Parametry

iItem
[v] Index záhlaví, jehož styl je HDF_SPLITBUTTON, je index založený na nule. Další informace najdete v fmt členu struktury HDITEM .

lpRect
[ven] Ukazatel na strukturu RECT pro příjem ohraničující informace o obdélníku.

Vrácená hodnota

TRUE, pokud je tato funkce úspěšná; jinak NEPRAVDA.

Poznámky

Tato metoda odešle HDM_GETITEMDROPDOWNRECT zprávu, která je popsaná v sadě Windows SDK.

Příklad

První příklad kódu definuje proměnnou , m_headerCtrlkterá se používá pro přístup k aktuálnímu ovládacímu prvku záhlaví. Tato proměnná se používá v dalším příkladu.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

Následující příklad kódu ukazuje metodu GetItemDropDownRect . V dřívější části kódu jsme vytvořili ovládací prvek záhlaví s pěti sloupci. Následující příklad kódu nakreslí 3D obdélník kolem umístění v prvním sloupci, který je vyhrazený pro tlačítko rozevíracího seznamu záhlaví.

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

Načte ohraničující obdélník pro danou položku v ovládacím prvku záhlaví.

BOOL GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

Parametry

nIndex
Nulový index položky ovládacího prvku záhlaví.

lpRect
Ukazatel na adresu struktury RECT , která přijímá ohraničující informace o obdélníku.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Tato metoda implementuje chování zprávy Win32 HDM_GETITEMRECT, jak je popsáno v sadě Windows SDK.

CHeaderCtrl::GetOrderArray

Načte pořadí položek zleva doprava v ovládacím prvku záhlaví.

BOOL GetOrderArray(
    LPINT piArray,
    int iCount);

Parametry

piArray
Ukazatel na adresu vyrovnávací paměti, která přijímá hodnoty indexu položek v ovládacím prvku záhlaví v pořadí, v jakém se zobrazují zleva doprava.

iCount
Počet položek ovládacího prvku záhlaví. Musí být nezáporná.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Tato členová funkce implementuje chování zprávy Win32 HDM_GETORDERARRAY, jak je popsáno v sadě Windows SDK. Poskytuje se pro podporu řazení položek záhlaví.

Příklad

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

Získá ohraničující obdélník tlačítka přetečení aktuálního ovládacího prvku záhlaví.

BOOL GetOverflowRect(LPRECT lpRect) const;

Parametry

lpRect
[ven] Ukazatel na strukturu RECT , která přijímá ohraničující informace o obdélníku.

Vrácená hodnota

TRUE, pokud je tato funkce úspěšná; jinak NEPRAVDA.

Poznámky

Pokud ovládací prvek záhlaví obsahuje více položek, než lze současně zobrazit, může ovládací prvek zobrazit tlačítko přetečení, které se posune na položky, které nejsou viditelné. Ovládací prvek záhlaví musí mít styly HDS_OVERFLOW a HDF_SPLITBUTTON, aby se zobrazilo tlačítko přetečení. Ohraničující obdélník uzavře tlačítko přetečení a existuje pouze v případě, že se zobrazí tlačítko přetečení. Další informace naleznete v tématu Styly ovládacích prvků záhlaví.

Tato metoda odešle HDM_GETOVERFLOWRECT zprávu, která je popsaná v sadě Windows SDK.

Příklad

První příklad kódu definuje proměnnou , m_headerCtrlkterá se používá pro přístup k aktuálnímu ovládacímu prvku záhlaví. Tato proměnná se používá v dalším příkladu.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

Následující příklad kódu ukazuje metodu GetOverflowRect . V dřívější části kódu jsme vytvořili ovládací prvek záhlaví s pěti sloupci. Oddělovač sloupců ale můžete přetáhnout tak, aby nebyl viditelný. Pokud některé sloupce nejsou viditelné, ovládací prvek záhlaví nakreslí tlačítko přetečení. Následující příklad kódu nakreslí 3D obdélník kolem umístění tlačítka přetečení.

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

Určuje, která položka záhlaví, pokud existuje, je umístěna v zadaném bodě.

int HitTest(LPHDHITTESTINFO* phdhti);

Parametry

phdhti
[in, out] Ukazatel na strukturu HDHITTESTINFO , která určuje bod pro testování a přijímá výsledky testu.

Vrácená hodnota

Index záhlaví položky založené na nule, pokud existuje, na zadané pozici; jinak, -1.

Poznámky

Tato metoda odešle HDM_HITTEST zprávu, která je popsaná v sadě Windows SDK.

Příklad

První příklad kódu definuje proměnnou , m_headerCtrlkterá se používá pro přístup k aktuálnímu ovládacímu prvku záhlaví. Tato proměnná se používá v dalším příkladu.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

Následující příklad kódu ukazuje metodu HitTest . V předchozí části tohoto příkladu kódu jsme vytvořili ovládací prvek záhlaví s pěti sloupci. Oddělovač sloupců ale můžete přetáhnout tak, aby nebyl viditelný. Tento příklad hlásí index sloupce, pokud je viditelný, a -1, pokud sloupec není viditelný.

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

Vloží novou položku do ovládacího prvku záhlaví v zadaném indexu.

int InsertItem(
    int nPos,
    HDITEM* phdi);

Parametry

NPos
Index položky, který se má vložit, je založený na nule. Pokud je hodnota nula, položka se vloží na začátek ovládacího prvku záhlaví. Pokud je hodnota větší než maximální hodnota, položka se vloží na konec ovládacího prvku záhlaví.

Phdi
Ukazatel na strukturu HDITEM , která obsahuje informace o položce, kterou chcete vložit.

Vrácená hodnota

Index nové položky v případě úspěchu; jinak - 1.

Příklad

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

Načte velikost a umístění ovládacího prvku záhlaví v daném obdélníku.

BOOL Layout(HDLAYOUT* pHeaderLayout);

Parametry

pHeaderLayout
Ukazatel na strukturu HDLAYOUT , která obsahuje informace použité k nastavení velikosti a umístění ovládacího prvku záhlaví.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Tato funkce slouží k určení vhodných dimenzí pro nový ovládací prvek záhlaví, který má zabírat daný obdélník.

Příklad

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

Načte hodnotu indexu položky na základě jejího pořadí v ovládacím prvku záhlaví.

int OrderToIndex(int nOrder) const;

Parametry

nObjednávky
Pořadí založené na nule, které se položka zobrazí v ovládacím prvku záhlaví, zleva doprava.

Vrácená hodnota

Index položky na základě jeho pořadí v ovládacím prvku záhlaví. Index se počítá zleva doprava, počínaje 0.

Poznámky

Tato členová funkce implementuje chování HDM_ORDERTOINDEX makra Win32, jak je popsáno v sadě Windows SDK. Poskytuje se pro podporu řazení položek záhlaví.

CHeaderCtrl::SetBitmapMargin

Nastaví šířku okraje rastrového obrázku v ovládacím prvku záhlaví.

int SetBitmapMargin(int nWidth);

Parametry

nWidth
Šířka, zadaná v pixelech, okraje, který obklopuje rastrový obrázek v rámci existujícího ovládacího prvku záhlaví.

Vrácená hodnota

Šířka okraje rastrového obrázku v pixelech.

Poznámky

Tato členová funkce implementuje chování zprávy Win32 HDM_SETBITMAPMARGIN, jak je popsáno v sadě Windows SDK.

Příklad

int iOldMargin = m_myHeaderCtrl.SetBitmapMargin(15);

CHeaderCtrl::SetFilterChangeTimeout

Nastaví interval časového limitu mezi časem, kdy se změna provede v atributech filtru a zaúčtování oznámení HDN_FILTERCHANGE .

int SetFilterChangeTimeout(DWORD dwTimeOut);

Parametry

dwTimeOut
Hodnota časového limitu v milisekundách

Vrácená hodnota

Index ovládacího prvku filtru, který se upravuje.

Poznámky

Tato členová funkce implementuje chování zprávy Win32 HDM_SETFILTERCHANGETIMEOUT, jak je popsáno v sadě Windows SDK.

Příklad

int iFltr = m_myHeaderCtrl.SetFilterChangeTimeout(15);

CHeaderCtrl::SetFocusedItem

Nastaví fokus na zadanou položku záhlaví v aktuálním ovládacím prvku záhlaví.

BOOL SetFocusedItem(int iItem);

Parametry

iItem
[v] Index položky záhlaví založený na nule

Vrácená hodnota

TRUE, pokud tato metoda je úspěšná; jinak NEPRAVDA.

Poznámky

Tato metoda odešle HDM_SETFOCUSEDITEM zprávu, která je popsaná v sadě Windows SDK.

Příklad

První příklad kódu definuje proměnnou , m_headerCtrlkterá se používá pro přístup k aktuálnímu ovládacímu prvku záhlaví. Tato proměnná se používá v dalším příkladu.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

Následující příklad kódu ukazuje metody SetFocusedItem a GetFocusedItem metody. V dřívější části kódu jsme vytvořili ovládací prvek záhlaví s pěti sloupci. Oddělovač sloupců ale můžete přetáhnout tak, aby nebyl viditelný. Následující příklad nastaví a pak potvrdí záhlaví posledního sloupce jako položku 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

Změní rozdělovač mezi položkami záhlaví tak, aby označí ruční přetažení položky záhlaví.

int SetHotDivider(CPoint pt);
int SetHotDivider(int nIndex);

Parametry

Pt
Pozice ukazatele. Ovládací prvek záhlaví zvýrazní příslušný rozdělovač na základě pozice ukazatele.

nIndex
Index zvýrazněného oddělovače.

Vrácená hodnota

Index zvýrazněného oddělovače.

Poznámky

Tato členová funkce implementuje chování zprávy Win32 HDM_SETHOTDIVIDER, jak je popsáno v sadě Windows SDK. Poskytuje se pro podporu přetahování položek záhlaví.

Příklad

void CMyHeaderCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
   SetHotDivider(point);

   CHeaderCtrl::OnMouseMove(nFlags, point);
}

CHeaderCtrl::SetImageList

Přiřadí seznam obrázků ovládacímu prvku záhlaví.

CImageList* SetImageList(CImageList* pImageList);

Parametry

pImageList
Ukazatel na CImageList objekt obsahující seznam obrázků, který se má přiřadit ovládacímu prvku záhlaví.

Vrácená hodnota

Ukazatel na objekt CImageList dříve přiřazený k ovládacímu prvku záhlaví.

Poznámky

Tato členová funkce implementuje chování zprávy Win32 HDM_SETIMAGELIST, jak je popsáno v sadě Windows SDK. Objekt CImageList , na který vrácený ukazatel odkazuje, je dočasným objektem a v dalším zpracování nečinnosti se odstraní.

Příklad

Podívejte se na příklad pro CHeaderCtrl::GetImageList.

CHeaderCtrl::SetItem

Nastaví atributy zadané položky v ovládacím prvku záhlaví.

BOOL SetItem(
    int nPos,
    HDITEM* pHeaderItem);

Parametry

NPos
Index položky, který má být manipulován s nulovou hodnotou.

pHeaderItem
Ukazatel na strukturu HDITEM , která obsahuje informace o nové položce.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Příklad

Podívejte se na příklad pro CHeaderCtrl::GetItem.

CHeaderCtrl::SetOrderArray

Nastaví pořadí položek zleva doprava v ovládacím prvku záhlaví.

BOOL SetOrderArray(
    int iCount,
    LPINT piArray);

Parametry

iCount
Počet položek ovládacího prvku záhlaví.

piArray
Ukazatel na adresu vyrovnávací paměti, která přijímá hodnoty indexu položek v ovládacím prvku záhlaví v pořadí, v jakém se zobrazují zleva doprava.

Vrácená hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Tato členová funkce implementuje chování HDM_SETORDERARRAY makra Win32, jak je popsáno v sadě Windows SDK. Poskytuje se pro podporu řazení položek záhlaví.

Příklad

Podívejte se na příklad pro CHeaderCtrl::GetOrderArray.

Viz také

CWnd – třída
Graf hierarchie
CTabCtrl – třída
CListCtrl – třída
CImageList – třída