Megosztás a következőn keresztül:


CHeaderCtrl osztály

Megjegyzés:

A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.

A Windows általános fejlécvezérlőjének funkcióit biztosítja.

Szemantika

class CHeaderCtrl : public CWnd

Tagok

Nyilvános konstruktorok

Név Description
CHeaderCtrl::CHeaderCtrl Egy CHeaderCtrl objektumot hoz létre.

Nyilvános metódusok

Név Description
CHeaderCtrl::ClearAllFilters Törli a fejlécvezérlő összes szűrőjének jelölését.
CHeaderCtrl::ClearFilter Törli a fejlécvezérlő szűrőjének jelölését.
CHeaderCtrl::Létrehozás Létrehoz egy fejlécvezérlőt, és csatolja egy CHeaderCtrl objektumhoz.
CHeaderCtrl::CreateDragImage Egy elem képének transzparens verzióját hozza létre egy fejlécvezérlőn belül.
CHeaderCtrl::CreateEx Létrehoz egy fejlécvezérlőt a megadott Bővített Windows-stílusokkal, és csatolja egy CListCtrl objektumhoz.
CHeaderCtrl::D eleteItem Töröl egy elemet egy fejlécvezérlőből.
CHeaderCtrl::D rawItem Egy fejlécvezérlő megadott elemének rajzolása.
CHeaderCtrl::EditFilter Megkezdi a fejlécvezérlő megadott szűrőjének szerkesztését.
CHeaderCtrl::GetBitmapMargin Lekéri a bitkép margójának szélességét egy fejlécvezérlőben.
CHeaderCtrl::GetFocusedItem Lekéri annak az elemnek az azonosítóját az aktuális fejlécvezérlőben, amely a fókuszt tartalmazza.
CHeaderCtrl::GetImageList Lekéri a fejléc vezérlőelemben lévő rajzfejelemekhez használt képlista leíróját.
CHeaderCtrl::GetItem Beolvassa az élőfej vezérlőelem egy elemének adatait.
CHeaderCtrl::GetItemCount Lekéri a fejlécvezérlő elemeinek számát.
CHeaderCtrl::GetItemDropDownRect Lekéri a határoló téglalap adatait a megadott legördülő gombhoz egy fejlécvezérlőben.
CHeaderCtrl::GetItemRect Lekéri az adott elemhez tartozó határoló téglalapot egy fejlécvezérlőben.
CHeaderCtrl::GetOrderArray Lekéri a fejléc vezérlőelem elemeinek balról jobbra sorrendjét.
CHeaderCtrl::GetOverflowRect Lekéri az aktuális fejlécvezérlő túlcsordulás gombjának határoló téglalapját.
CHeaderCtrl::HitTest Meghatározza, hogy melyik fejlécelem (ha van ilyen) egy adott ponton található.
CHeaderCtrl::InsertItem Új elemet szúr be egy fejlécvezérlőbe.
CHeaderCtrl::Layout Lekéri egy fejlécvezérlő méretét és pozícióját egy adott téglalapon belül.
CHeaderCtrl::OrderToIndex Lekéri egy elem indexértékét a fejléc vezérlőelemben lévő sorrendje alapján.
CHeaderCtrl::SetBitmapMargin A bitkép margójának szélességét állítja be egy fejlécvezérlőben.
CHeaderCtrl::SetFilterChangeTimeout Beállítja az időtúllépési időközt a szűrőattribútumokban a módosítás időpontja és az értesítés közzététele HDN_FILTERCHANGE között.
CHeaderCtrl::SetFocusedItem Beállítja a fókuszt egy adott fejlécelemre az aktuális fejlécvezérlőben.
CHeaderCtrl::SetHotDivider Módosítja az elválasztó elemet az élőfejelemek között, hogy egy fejlécelem manuális húzását jelezze.
CHeaderCtrl::SetImageList Képlistát rendel egy fejlécvezérlőhöz.
CHeaderCtrl::SetItem Beállítja a megadott elem attribútumait egy fejlécvezérlőben.
CHeaderCtrl::SetOrderArray A fejléc vezérlőelem elemeinek balról jobbra sorrendjét állítja be.

Megjegyzések

Az élőfej-vezérlők olyan ablakok, amelyek általában szöveg- vagy számoszlopok fölött vannak elhelyezve. Minden oszlophoz tartalmaz egy címet, és részekre osztható. A felhasználó az egyes oszlopok szélességének beállításához húzhatja a részeket elválasztó elválasztó elemeket. A fejlécvezérlők illusztrációját a Fejlécvezérlők című témakörben tekintheti meg.

Ez a vezérlő (és ezért az CHeaderCtrl osztály) csak a Windows 95/98 és a Windows NT 3.51-es és újabb verzióiban futó programokhoz érhető el.

A Windows 95/Internet Explorer 4.0 általános vezérlőihez hozzáadott funkciók a következőket tartalmazzák:

  • Fejlécelem egyéni rendelése.

  • Az élőfejelem húzásával átrendezheti a fejlécelemeket. Az objektum létrehozásakor használja a HDS_DRAGDROP stílust CHeaderCtrl .

  • A fejlécoszlop szövege folyamatosan megtekinthető az oszlop átméretezése során. Objektum létrehozásakor használja a HDS_FULLDRAG stílust CHeaderCtrl .

  • Élőfej gyakori nyomon követése, amely kiemeli az élőfej elemet, amikor az egérmutató rá mutat. Az objektum létrehozásakor használja a HDS_HOTTRACK stílust CHeaderCtrl .

  • Képlista támogatása. A fejlécelemek tartalmazhatnak objektumban vagy szövegben CImageList tárolt képeket.

A használatról CHeaderCtrltovábbi információt a Vezérlők és a CHeaderCtrl használata című témakörben talál.

Öröklési hierarchia

CObject

CCmdTarget

CWnd

CHeaderCtrl

Requirements

Fejléc: afxcmn.h

CHeaderCtrl::CHeaderCtrl

Egy CHeaderCtrl objektumot hoz létre.

CHeaderCtrl();

Example

// Declare a local CHeaderCtrl object.
CHeaderCtrl myHeaderCtrl;

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

CHeaderCtrl::ClearAllFilters

Törli a fejlécvezérlő összes szűrőjének jelölését.

BOOL ClearAllFilters();

Visszaadott érték

IGAZ, ha ez a módszer sikeres; egyéb esetben HAMIS.

Megjegyzések

Ez a módszer implementálja a Win32-üzenet viselkedését HDM_CLEARFILTER -1 oszlopértékkel, a Windows SDK-ban leírtak szerint.

Example

m_myHeaderCtrl.ClearAllFilters();

CHeaderCtrl::ClearFilter

Törli a fejlécvezérlő szűrőjének jelölését.

BOOL ClearFilter(int nColumn);

Paraméterek

nColumn
Oszlopérték, amely azt jelzi, hogy melyik szűrőt szeretné törölni.

Visszaadott érték

IGAZ, ha ez a módszer sikeres; egyéb esetben HAMIS.

Megjegyzések

Ez a módszer implementálja a Win32-üzenet HDM_CLEARFILTER viselkedését a Windows SDK-ban leírtak szerint.

Example

int iFilt = m_myHeaderCtrl.ClearFilter(1);

CHeaderCtrl::Létrehozás

Létrehoz egy fejlécvezérlőt, és csatolja egy CHeaderCtrl objektumhoz.

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

Paraméterek

dwStyle
Megadja a fejlécvezérlő stílusát. Az élőfej-vezérlési stílusok leírását a Windows SDK fejlécvezérlő stílusai című témakörben tekintheti meg.

téglalap
Megadja a fejlécvezérlő méretét és pozícióját. Lehet CRect objektum vagy RECT-struktúra .

pParentWnd
A fejlécvezérlő szülőablakát adja meg, általában egy CDialog. Nem lehet NULL.

nID
Megadja a fejlécvezérlő azonosítóját.

Visszaadott érték

Nonzero, ha az inicializálás sikeres volt; ellenkező esetben nulla.

Megjegyzések

Egy objektumot CHeaderCtrl két lépésben hozhat létre. Először hívja meg a konstruktort, majd hívja meg Create, amely létrehozza a fejlécvezérlőt, és csatolja az CHeaderCtrl objektumhoz.

A fejlécvezérlő stílusokon kívül az alábbi gyakori vezérlőstílusokkal meghatározhatja, hogy a fejlécvezérlő hogyan pozitálja és méretezi át magát (további információt a Közös vezérlőstílusok című témakörben talál):

  • CCS_BOTTOM Azt eredményezi, hogy a vezérlő a szülőablak ügyfélterületének alján helyezkedik el, és a szélességet a szülőablak szélességével megegyezőre állítja.

  • CCS_NODIVIDER Megakadályozza, hogy a vezérlő tetején két képpontos kiemelés legyen rajzolva.

  • CCS_NOMOVEY A vezérlő horizontálisan, de nem függőlegesen átméretezi és áthelyezi magát egy WM_SIZE üzenetre válaszul. Ha a CCS_NORESIZE stílust használja, ez a stílus nem érvényes. Az élőfej-vezérlők alapértelmezés szerint ezt a stílust használják.

  • CCS_NOPARENTALIGN Megakadályozza, hogy a vezérlő automatikusan a szülőablak tetejére vagy aljára lépjen. Ehelyett a vezérlő megtartja a szülőablakban elfoglalt helyét a szülőablak méretének módosítása ellenére. Ha a CCS_TOP vagy CCS_BOTTOM stílust is használja, a magasság az alapértelmezett értékre van állítva, de a pozíció és a szélesség változatlan marad.

  • CCS_NORESIZE Megakadályozza, hogy a vezérlő az alapértelmezett szélességet és magasságot használja a kezdeti vagy új méret beállításakor. A vezérlő ehelyett a létrehozási vagy méretezési kérelemben megadott szélességet és magasságot használja.

  • CCS_TOP Azt eredményezi, hogy a vezérlő a szülőablak ügyfélterületének tetején helyezkedik el, és a szélességet a szülőablak szélességével megegyezőre állítja.

Az alábbi ablakstílusokat is alkalmazhatja egy fejlécvezérlőre (további információt az Ablakstílusok című témakörben talál):

  • WS_CHILD Gyermekablakot hoz létre. Nem használható WS_POPUP stílussal.

  • WS_VISIBLE Először látható ablakot hoz létre.

  • WS_DISABLED Először letiltott ablakot hoz létre.

  • WS_GROUP Egy vezérlőcsoport első vezérlőelemét adja meg, amelyben a felhasználó a nyílbillentyűkkel egyik vezérlőről a másikra léphet. Az első vezérlőelem utáni WS_GROUP stílussal definiált összes vezérlő ugyanahhoz a csoporthoz tartozik. A következő vezérlőelem a WS_GROUP stílussal véget vet a stíluscsoportnak, és elindítja a következő csoportot (vagyis az egyik csoport ott végződik, ahol a következő kezdődik).

  • WS_TABSTOP A tabulátorbillentyűvel a felhasználó által áthelyezhető vezérlők egyikét adja meg. A TAB billentyű a felhasználót a WS_TABSTOP stílus által megadott következő vezérlőre helyezi át.

Ha a vezérlővel bővített ablakstílusokat szeretne használni, ahelyett hívja meg a CreateCreateExet.

Example

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

Létrehoz egy vezérlőt (egy gyermekablakot), és társítja az CHeaderCtrl objektummal.

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

Paraméterek

dwExStyle
A létrehozott vezérlőelem kiterjesztett stílusát adja meg. A bővített Windows-stílusok listáját a CreateWindowExdwExStyle paraméterében találja a Windows SDK-ban.

dwStyle
A fejléc vezérlőelem stílusa. Az élőfej-vezérlési stílusok leírását a Windows SDK fejlécvezérlő stílusai című témakörben tekintheti meg. További stílusok listáját a Létrehozás című témakörben találja.

téglalap
Hivatkozás a létrehozandó ablak méretét és pozícióját leíró RECT-struktúrára a pParentWnd ügyfélkoordinátáiban.

pParentWnd
A vezérlő szülőablakára mutató mutató.

nID
A vezérlő gyermekablak-azonosítója.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Create A CreateEx windowsos bővített stílus előszavában megadott kiterjesztett Windows-stílusok helyett WS_EX_.

CHeaderCtrl::CreateDragImage

Egy elem képének transzparens verzióját hozza létre egy fejlécvezérlőn belül.

CImageList* CreateDragImage(int nIndex);

Paraméterek

nIndex
Az elem nulla alapú indexe a fejlécvezérlőben. A transzparens kép alapjául az elemhez rendelt kép szolgál.

Visszaadott érték

A CImageList objektumra mutató mutató, ha sikeres; ellenkező esetben NULL. A visszaadott lista csak egy képet tartalmaz.

Megjegyzések

Ez a tagfüggvény implementálja a Win32-üzenet HDM_CREATEDRAGIMAGE viselkedését a Windows SDK-ban leírtak szerint. Ez a lehetőség támogatja a fejlécelem húzása és húzása elemet.

Az CImageList az objektum, amelyre a visszaadott mutatópont egy ideiglenes objektum, és a következő tétlenségi feldolgozás során törlődik.

CHeaderCtrl::D eleteItem

Töröl egy elemet egy fejlécvezérlőből.

BOOL DeleteItem(int nPos);

Paraméterek

nPos
A törölni kívánt elem nulla alapú indexét adja meg.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Example

int nCount = m_myHeaderCtrl.GetItemCount();

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

CHeaderCtrl::D rawItem

A keretrendszer meghívja, amikor egy tulajdonosi rajz fejlécvezérlőjének vizuális aspektusa megváltozik.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Paraméterek

lpDrawItemStruct
Mutató a festendő elemet leíró DRAWITEMSTRUCT-struktúrára .

Megjegyzések

A itemAction struktúra tagja DRAWITEMSTRUCT határozza meg a végrehajtandó rajzműveletet.

Alapértelmezés szerint ez a tagfüggvény nem tesz semmit. A tagfüggvény felülbírálása egy tulajdonosi rajzobjektum CHeaderCtrl rajzának implementálásához.

Az alkalmazásnak a tagfüggvény leállása előtt vissza kell állítania az lpDrawItemStruct-ben megadott megjelenítési környezethez kiválasztott grafikus eszközillesztő (GDI) objektumokat.

Example

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

Megkezdi a fejlécvezérlő megadott szűrőjének szerkesztését.

BOOL EditFilter(
    int nColumn,
    BOOL bDiscardChanges);

Paraméterek

nColumn
A szerkeszteni kívánt oszlop.

bDiscardChanges
Egy érték, amely meghatározza, hogyan kezelheti a felhasználó szerkesztési módosításait, ha a felhasználó éppen szerkeszti a szűrőt a HDM_EDITFILTER üzenet küldésekor.

Adja meg a TRUE értéket a felhasználó által végrehajtott módosítások elvetéséhez, vagy HAMIS értéket a felhasználó által végrehajtott módosítások elfogadásához.

Visszaadott érték

IGAZ, ha ez a módszer sikeres; egyéb esetben HAMIS.

Megjegyzések

Ez a módszer implementálja a Win32-üzenet HDM_EDITFILTER viselkedését a Windows SDK-ban leírtak szerint.

Example

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

CHeaderCtrl::GetBitmapMargin

Lekéri a bitkép margójának szélességét egy fejlécvezérlőben.

int GetBitmapMargin() const;

Visszaadott érték

A bitkép margójának szélessége képpontban.

Megjegyzések

Ez a tagfüggvény implementálja a Win32-üzenet HDM_GETBITMAPMARGIN viselkedését a Windows SDK-ban leírtak szerint.

Example

int iMargin = m_myHeaderCtrl.GetBitmapMargin();

CHeaderCtrl::GetFocusedItem

Lekéri annak az elemnek az indexét, amelynek fókusza az aktuális fejlécvezérlőben van.

int GetFocusedItem() const;

Visszaadott érték

A fókuszt tartalmazó fejlécelem nulla alapú indexe.

Megjegyzések

Ez a metódus elküldi a Windows SDK-ban leírt HDM_GETFOCUSEDITEM üzenetet.

Example

Az első példakód az aktuális fejlécvezérlő eléréséhez használt változót m_headerCtrlhatározza meg. Ezt a változót a következő példában használjuk.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

A következő példakód bemutatja a metódusokat és GetFocusedItem a SetFocusedItem metódusokat. A kód egy korábbi szakaszában létrehoztunk egy öt oszlopból álló fejlécvezérlőt. Az oszlopelválasztót azonban áthúzhatja úgy, hogy az oszlop ne legyen látható. Az alábbi példa beállítja, majd megerősíti az utolsó oszlopfejlécet fókuszelemként.

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

Lekéri a fejléc vezérlőelemben lévő rajzfejelemekhez használt képlista leíróját.

CImageList* GetImageList() const;

Visszaadott érték

Mutató egy CImageList-objektumra .

Megjegyzések

Ez a tagfüggvény implementálja a Win32-üzenet HDM_GETIMAGELIST viselkedését a Windows SDK-ban leírtak szerint. Az CImageList az objektum, amelyre a visszaadott mutatópont egy ideiglenes objektum, és a következő tétlenségi feldolgozás során törlődik.

Example

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

Beolvassa az élőfej-vezérlőelem adatait.

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

Paraméterek

nPos
A lekérni kívánt elem nulla alapú indexét adja meg.

pHeaderItem
Mutasson egy HDITEM-struktúrára , amely megkapja az új elemet. Ezt a struktúrát a rendszer a InsertItemSetItem tagfüggvényekkel együtt használja. Az elemben mask beállított jelzők biztosítják, hogy a megfelelő elemek értékei megfelelően legyenek kitöltve a visszatéréskor. Ha az mask elem nullára van állítva, a többi szerkezeti elem értékei értelmetlenek.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Example

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

Lekéri a fejlécvezérlő elemeinek számát.

int GetItemCount() const;

Visszaadott érték

Az élőfej vezérlőelem elemeinek száma, ha sikeres; egyéb esetben - 1.

Example

Lásd a CHeaderCtrl::D eleteItem példát.

CHeaderCtrl::GetItemDropDownRect

Lekéri az aktuális fejlécvezérlő egyik fejléceleméhez tartozó legördülő gomb határoló téglalapját.

BOOL GetItemDropDownRect(
    int iItem,
    LPRECT lpRect) const;

Paraméterek

iItem
[in] Olyan fejlécelem nullaalapú indexe, amelynek stílusa HDF_SPLITBUTTON. További információkért lásd a fmtHDITEM-struktúra tagját.

lpRect
[kifelé] Mutasson egy RECT-struktúrára a határoló téglalap információinak fogadásához.

Visszaadott érték

IGAZ, ha ez a függvény sikeres; egyéb esetben HAMIS.

Megjegyzések

Ez a metódus elküldi a Windows SDK-ban leírt HDM_GETITEMDROPDOWNRECT üzenetet.

Example

Az első példakód az aktuális fejlécvezérlő eléréséhez használt változót m_headerCtrlhatározza meg. Ezt a változót a következő példában használjuk.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

A következő példakód a metódust GetItemDropDownRect mutatja be. A kód egy korábbi szakaszában létrehoztunk egy öt oszlopból álló fejlécvezérlőt. Az alábbi példakód egy 3D téglalapot rajzol az első oszlop helyéhez, amely a fejléc legördülő gombjához van fenntartva.

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

Lekéri az adott elemhez tartozó határoló téglalapot egy fejlécvezérlőben.

BOOL GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

Paraméterek

nIndex
A fejlécvezérlő elem nulla alapú indexe.

lpRect
A határoló téglalap adatait fogadó RECT-struktúra címére mutató mutató.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Ez a módszer implementálja a Win32-üzenet HDM_GETITEMRECT viselkedését a Windows SDK-ban leírtak szerint.

CHeaderCtrl::GetOrderArray

Lekéri a fejléc vezérlőelem elemeinek balról jobbra sorrendjét.

BOOL GetOrderArray(
    LPINT piArray,
    int iCount);

Paraméterek

piArray
Egy olyan puffer címére mutató mutató, amely a fejléc vezérlőelem elemeinek indexértékeit fogadja, a balról jobbra megjelenő sorrendben.

iCount
Az élőfej-vezérlőelemek száma. Nem negatívnak kell lennie.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Ez a tagfüggvény implementálja a Win32-üzenet HDM_GETORDERARRAY viselkedését a Windows SDK-ban leírtak szerint. Ez támogatja a fejlécelemek sorrendjét.

Example

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

Lekéri az aktuális fejlécvezérlő túlcsordulás gombjának határoló téglalapját.

BOOL GetOverflowRect(LPRECT lpRect) const;

Paraméterek

lpRect
[kifelé] Mutasson egy RECT-struktúrára , amely megkapja a határoló téglalap adatait.

Visszaadott érték

IGAZ, ha ez a függvény sikeres; egyéb esetben HAMIS.

Megjegyzések

Ha az élőfej vezérlőelem több elemet tartalmaz, mint amennyit egyidejűleg megjeleníthet, a vezérlő megjeleníthet egy túlcsordulás gombot, amely a nem látható elemekre görget. A fejléc vezérlőelemnek HDS_OVERFLOW és HDF_SPLITBUTTON stílusokkal kell rendelkeznie a túlcsordulás gomb megjelenítéséhez. A határoló téglalap a túlcsordulás gombot zárja be, és csak akkor létezik, ha a túlcsordulás gomb megjelenik. További információ: Fejlécvezérlő stílusok.

Ez a metódus elküldi a Windows SDK-ban leírt HDM_GETOVERFLOWRECT üzenetet.

Example

Az első példakód az aktuális fejlécvezérlő eléréséhez használt változót m_headerCtrlhatározza meg. Ezt a változót a következő példában használjuk.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

A következő példakód a metódust GetOverflowRect mutatja be. A kód egy korábbi szakaszában létrehoztunk egy öt oszlopból álló fejlécvezérlőt. Az oszlopelválasztót azonban áthúzhatja úgy, hogy az oszlop ne legyen látható. Ha egyes oszlopok nem láthatók, a fejlécvezérlő egy túlcsordulás gombot rajzol. Az alábbi példakód egy 3D téglalapot rajzol a túlcsordulás gomb helye körül.

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

Meghatározza, hogy melyik fejlécelem (ha van ilyen) egy adott ponton található.

int HitTest(LPHDHITTESTINFO* phdhti);

Paraméterek

phdhti
[be, ki] Mutasson egy HDHITTESTINFO-struktúrára , amely meghatározza a tesztelni kívánt pontot, és fogadja a teszt eredményeit.

Visszaadott érték

A fejlécelem nulla alapú indexe, ha van ilyen, a megadott pozícióban; ellenkező esetben -1.

Megjegyzések

Ez a metódus elküldi a Windows SDK-ban leírt HDM_HITTEST üzenetet.

Example

Az első példakód az aktuális fejlécvezérlő eléréséhez használt változót m_headerCtrlhatározza meg. Ezt a változót a következő példában használjuk.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

A következő példakód a metódust HitTest mutatja be. A példakód egy korábbi szakaszában létrehoztunk egy öt oszlopból álló fejlécvezérlőt. Az oszlopelválasztót azonban áthúzhatja úgy, hogy az oszlop ne legyen látható. Ez a példa az oszlop indexét jelenti, ha látható, és -1, ha az oszlop nem látható.

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

Új elemet szúr be egy fejlécvezérlőbe a megadott indexen.

int InsertItem(
    int nPos,
    HDITEM* phdi);

Paraméterek

nPos
A beszúrni kívánt elem nulla alapú indexe. Ha az érték nulla, az elem a fejléc vezérlőelem elején lesz beszúrva. Ha az érték nagyobb, mint a maximális érték, az elem be lesz szúrva a fejlécvezérlő végére.

phdi
Mutasson egy HDITEM-struktúrára , amely a beszúrandó elem adatait tartalmazza.

Visszaadott érték

Az új elem indexe, ha sikeres; egyéb esetben - 1.

Example

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

Lekéri egy fejlécvezérlő méretét és pozícióját egy adott téglalapon belül.

BOOL Layout(HDLAYOUT* pHeaderLayout);

Paraméterek

pHeaderLayout
Mutasson egy HDLAYOUT-struktúrára , amely a fejlécvezérlő méretének és helyzetének beállításához használt információkat tartalmazza.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Ez a függvény határozza meg a megfelelő dimenziókat egy új fejlécvezérlőhöz, amely az adott téglalapot foglalja el.

Example

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

Lekéri egy elem indexértékét a fejléc vezérlőelemben lévő sorrendje alapján.

int OrderToIndex(int nOrder) const;

Paraméterek

nOrder
Az elem fejléc vezérlőelemben balról jobbra megjelenő nulla alapú sorrendje.

Visszaadott érték

Az elem indexe a fejléc vezérlőelemben lévő sorrendje alapján. Az index balról jobbra számlál, 0-tól kezdve.

Megjegyzések

Ez a tagfüggvény implementálja a Win32 makró HDM_ORDERTOINDEX viselkedését a Windows SDK-ban leírtak szerint. Ez támogatja a fejlécelemek sorrendjét.

CHeaderCtrl::SetBitmapMargin

A bitkép margójának szélességét állítja be egy fejlécvezérlőben.

int SetBitmapMargin(int nWidth);

Paraméterek

nWidth
A bitképet egy meglévő fejlécvezérlőn belül körülvevő margó képpontban megadott szélessége.

Visszaadott érték

A bitkép margójának szélessége képpontban.

Megjegyzések

Ez a tagfüggvény implementálja a Win32-üzenet HDM_SETBITMAPMARGIN viselkedését a Windows SDK-ban leírtak szerint.

Example

int iOldMargin = m_myHeaderCtrl.SetBitmapMargin(15);

CHeaderCtrl::SetFilterChangeTimeout

Beállítja az időtúllépési időközt a szűrőattribútumokban a módosítás időpontja és egy HDN_FILTERCHANGE értesítés közzététele között.

int SetFilterChangeTimeout(DWORD dwTimeOut);

Paraméterek

dwTimeOut
Időtúllépési érték ezredmásodpercben.

Visszaadott érték

A módosítandó szűrővezérlő indexe.

Megjegyzések

Ez a tagfüggvény implementálja a Win32-üzenet HDM_SETFILTERCHANGETIMEOUT viselkedését a Windows SDK-ban leírtak szerint.

Example

int iFltr = m_myHeaderCtrl.SetFilterChangeTimeout(15);

CHeaderCtrl::SetFocusedItem

Beállítja a fókuszt egy adott fejlécelemre az aktuális fejlécvezérlőben.

BOOL SetFocusedItem(int iItem);

Paraméterek

iItem
[in] Fejlécelem nullaalapú indexe.

Visszaadott érték

IGAZ, ha ez a módszer sikeres; egyéb esetben HAMIS.

Megjegyzések

Ez a metódus elküldi a Windows SDK-ban leírt HDM_SETFOCUSEDITEM üzenetet.

Example

Az első példakód az aktuális fejlécvezérlő eléréséhez használt változót m_headerCtrlhatározza meg. Ezt a változót a következő példában használjuk.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

A következő példakód bemutatja a metódusokat és GetFocusedItem a SetFocusedItem metódusokat. A kód egy korábbi szakaszában létrehoztunk egy öt oszlopból álló fejlécvezérlőt. Az oszlopelválasztót azonban áthúzhatja úgy, hogy az oszlop ne legyen látható. Az alábbi példa beállítja, majd megerősíti az utolsó oszlopfejlécet fókuszelemként.

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

Módosítja az elválasztó elemet az élőfejelemek között, hogy egy fejlécelem manuális húzását jelezze.

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

Paraméterek

Pt
A mutató pozíciója. Az élőfej-vezérlő a mutató pozíciója alapján kiemeli a megfelelő elválasztót.

nIndex
A kiemelt elválasztó indexe.

Visszaadott érték

A kiemelt elválasztó indexe.

Megjegyzések

Ez a tagfüggvény implementálja a Win32-üzenet HDM_SETHOTDIVIDER viselkedését a Windows SDK-ban leírtak szerint. Ez a lehetőség támogatja a fejlécelem húzása és húzása elemet.

Example

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

   CHeaderCtrl::OnMouseMove(nFlags, point);
}

CHeaderCtrl::SetImageList

Képlistát rendel egy fejlécvezérlőhöz.

CImageList* SetImageList(CImageList* pImageList);

Paraméterek

pImageList
A fejlécvezérlőhöz hozzárendelendő képlistát tartalmazó objektumra mutató mutató CImageList .

Visszaadott érték

A fejléc vezérlőelemhez korábban hozzárendelt CImageList objektumra mutató mutató.

Megjegyzések

Ez a tagfüggvény implementálja a Win32-üzenet HDM_SETIMAGELIST viselkedését a Windows SDK-ban leírtak szerint. Az CImageList az objektum, amelyre a visszaadott mutatópont egy ideiglenes objektum, és a következő tétlenségi feldolgozás során törlődik.

Example

Lásd a CHeaderCtrl::GetImageList példát.

CHeaderCtrl::SetItem

Beállítja a megadott elem attribútumait egy fejlécvezérlőben.

BOOL SetItem(
    int nPos,
    HDITEM* pHeaderItem);

Paraméterek

nPos
A módosítandó elem nulla alapú indexe.

pHeaderItem
Mutasson egy HDITEM-struktúrára , amely az új elem adatait tartalmazza.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Example

Lásd a CHeaderCtrl::GetItem példát.

CHeaderCtrl::SetOrderArray

A fejléc vezérlőelem elemeinek balról jobbra sorrendjét állítja be.

BOOL SetOrderArray(
    int iCount,
    LPINT piArray);

Paraméterek

iCount
Az élőfej-vezérlőelemek száma.

piArray
Egy olyan puffer címére mutató mutató, amely a fejléc vezérlőelem elemeinek indexértékeit fogadja, a balról jobbra megjelenő sorrendben.

Visszaadott érték

Nonzero, ha sikeres; egyéb esetben 0.

Megjegyzések

Ez a tagfüggvény implementálja a Win32 makró HDM_SETORDERARRAY viselkedését a Windows SDK-ban leírtak szerint. Ez támogatja a fejlécelemek sorrendjét.

Example

Lásd a CHeaderCtrl::GetOrderArray példát.

Lásd még

CWnd osztály
hierarchiadiagram
CTabCtrl osztály
CListCtrl osztály
CImageList osztály