Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
CImageListtá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
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