Aracılığıyla paylaş


CHeaderCtrl Sınıfı

Windows ortak üst bilgi denetiminin işlevselliğini sağlar.

Sözdizimi

class CHeaderCtrl : public CWnd

Üyeler

Ortak Oluşturucular

Ad Tanım
CHeaderCtrl::CHeaderCtrl Bir CHeaderCtrl nesne oluşturur.

Genel Yöntemler

Ad Tanım
CHeaderCtrl::ClearAllFilters Üst bilgi denetimi için tüm filtreleri temizler.
CHeaderCtrl::ClearFilter Üst bilgi denetiminin filtresini temizler.
CHeaderCtrl::Create Bir üst bilgi denetimi oluşturur ve bunu bir CHeaderCtrl nesneye ekler.
CHeaderCtrl::CreateDragImage Üst bilgi denetiminde öğenin görüntüsünün saydam bir sürümünü oluşturur.
CHeaderCtrl::CreateEx Belirtilen Windows genişletilmiş stilleriyle bir üst bilgi denetimi oluşturur ve bunu bir CListCtrl nesneye ekler.
CHeaderCtrl::D eleteItem Üst bilgi denetiminden bir öğeyi siler.
CHeaderCtrl::D rawItem Bir üst bilgi denetiminin belirtilen öğesini çizer.
CHeaderCtrl::EditFilter Bir üst bilgi denetiminin belirtilen filtresini düzenlemeye başlar.
CHeaderCtrl::GetBitmapMargin Üst bilgi denetimindeki bit eşlem kenar boşluğunun genişliğini alır.
CHeaderCtrl::GetFocusedItem Geçerli üst bilgi denetiminde odağı olan öğenin tanımlayıcısını alır.
CHeaderCtrl::GetImageList Üst bilgi denetiminde üst bilgi öğelerini çizmek için kullanılan bir resim listesinin tutamacını alır.
CHeaderCtrl::GetItem Üst bilgi denetimindeki bir öğe hakkındaki bilgileri alır.
CHeaderCtrl::GetItemCount Üst bilgi denetimindeki öğelerin sayısını alır.
CHeaderCtrl::GetItemDropDownRect Üst bilgi denetiminde belirtilen açılan düğme için sınırlayıcı dikdörtgen bilgilerini alır.
CHeaderCtrl::GetItemRect Üst bilgi denetimindeki belirli bir öğe için sınırlayıcı dikdörtgeni alır.
CHeaderCtrl::GetOrderArray Üst bilgi denetimindeki öğelerin soldan sağa sırasını alır.
CHeaderCtrl::GetOverflowRect Geçerli üst bilgi denetimi için taşma düğmesinin sınırlayıcı dikdörtgenini alır.
CHeaderCtrl::HitTest Varsa, belirtilen bir noktada hangi üst bilgi öğesinin bulunduğunu belirler.
CHeaderCtrl::InsertItem Üst bilgi denetimine yeni bir öğe ekler.
CHeaderCtrl::Layout Belirli bir dikdörtgen içindeki üst bilgi denetiminin boyutunu ve konumunu alır.
CHeaderCtrl::OrderToIndex Bir öğenin dizin değerini üst bilgi denetimindeki sırasına göre alır.
CHeaderCtrl::SetBitmapMargin Üst bilgi denetimindeki bit eşlem kenar boşluğunun genişliğini ayarlar.
CHeaderCtrl::SetFilterChangeTimeout Filtre özniteliklerinde bir değişikliğin gerçekleştiği zaman ile bildirimin HDN_FILTERCHANGE gönderilmesi arasındaki zaman aşımı aralığını ayarlar.
CHeaderCtrl::SetFocusedItem Odağı geçerli üst bilgi denetiminde belirtilen bir üst bilgi öğesine ayarlar.
CHeaderCtrl::SetHotDivider Üst bilgi öğelerinin el ile sürüklenip bırakılıp bırakılıp bırakılası belirtecek şekilde üst bilgi öğeleri arasındaki ayırıcıyı değiştirir.
CHeaderCtrl::SetImageList Üst bilgi denetimine bir resim listesi atar.
CHeaderCtrl::SetItem Bir üst bilgi denetiminde belirtilen öğenin özniteliklerini ayarlar.
CHeaderCtrl::SetOrderArray Üst bilgi denetimindeki öğelerin soldan sağa sırasını ayarlar.

Açıklamalar

Üst bilgi denetimi, genellikle bir metin veya sayı sütunları kümesinin üzerine yerleştirilmiş bir penceredir. Her sütun için bir başlık içerir ve bölümlere ayrılabilir. Kullanıcı, her sütunun genişliğini ayarlamak için bölümleri ayıran ayırıcıları sürükleyebilir. Üst bilgi denetiminin çizimi için bkz . Üst Bilgi Denetimleri.

Bu denetim (ve dolayısıyla CHeaderCtrl sınıfı), yalnızca Windows 95/98 ve Windows NT sürüm 3.51 ve üzeri altında çalışan programlarda kullanılabilir.

Windows 95/Internet Explorer 4.0 ortak denetimleri için eklenen işlevler aşağıdakileri içerir:

  • Üst bilgi öğesi özel sıralama.

  • Üst bilgi öğelerini yeniden sıralamak için üst bilgi öğesini sürükleyip bırakın. Nesneyi oluştururken CHeaderCtrl HDS_DRAGDROP stilini kullanın.

  • Sütun yeniden boyutlandırma sırasında üst bilgi sütun metni sürekli görüntülenebilir. Nesne oluştururken CHeaderCtrl HDS_FULLDRAG stilini kullanın.

  • İşaretçi üzerine geldiğinde üst bilgi öğesini vurgulayan üst bilgi etkin izleme. Nesneyi oluştururken CHeaderCtrl HDS_HOTTRACK stilini kullanın.

  • Resim listesi desteği. Üst bilgi öğeleri bir CImageList nesnede veya metinde depolanan görüntüleri içerebilir.

kullanma CHeaderCtrlhakkında daha fazla bilgi için bkz . Denetimler ve CHeaderCtrl Kullanma.

Devralma Hiyerarşisi

Cobject

Ccmdtarget

Cwnd

CHeaderCtrl

Gereksinimler

Üst bilgi: afxcmn.h

CHeaderCtrl::CHeaderCtrl

Bir CHeaderCtrl nesne oluşturur.

CHeaderCtrl();

Örnek

// Declare a local CHeaderCtrl object.
CHeaderCtrl myHeaderCtrl;

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

CHeaderCtrl::ClearAllFilters

Üst bilgi denetimi için tüm filtreleri temizler.

BOOL ClearAllFilters();

İade Değeri

Bu yöntem başarılı olursa TRUE; aksi takdirde YANLIŞ.

Açıklamalar

Bu yöntem, Windows SDK'da açıklandığı gibi -1 sütun değeriyle HDM_CLEARFILTER Win32 iletisinin davranışını uygular.

Örnek

m_myHeaderCtrl.ClearAllFilters();

CHeaderCtrl::ClearFilter

Üst bilgi denetiminin filtresini temizler.

BOOL ClearFilter(int nColumn);

Parametreler

nSütun
Hangi filtrenin temizlendiğini gösteren sütun değeri.

İade Değeri

Bu yöntem başarılı olursa TRUE; aksi takdirde YANLIŞ.

Açıklamalar

Bu yöntem, Windows SDK'da açıklandığı gibi Win32 ileti HDM_CLEARFILTER davranışını uygular.

Örnek

int iFilt = m_myHeaderCtrl.ClearFilter(1);

CHeaderCtrl::Create

Bir üst bilgi denetimi oluşturur ve bunu bir CHeaderCtrl nesneye ekler.

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

Parametreler

Dwstyle
Üst bilgi denetiminin stilini belirtir. Üst bilgi denetim stillerinin açıklaması için bkz . Windows SDK'sında Üst Bilgi Denetimi Stilleri .

Rect
Üst bilgi denetiminin boyutunu ve konumunu belirtir. Bir CRect nesnesi veya RECTyapısı olabilir.

pParentWnd
Üst bilgi denetiminin üst penceresini ( genellikle bir CDialog) belirtir. NULL olmamalıdır.

Nıd
Üst bilgi denetiminin kimliğini belirtir.

İade Değeri

Başlatma başarılı olursa sıfır olmayan; aksi takdirde sıfır.

Açıklamalar

İki adımda bir CHeaderCtrl nesne oluşturursunuz. İlk olarak oluşturucuyu çağırın ve ardından üst bilgi denetimini oluşturan ve nesnesine ekleyen öğesini çağırınCreateCHeaderCtrl.

Üst bilgi denetim stillerine ek olarak, üst bilgi denetiminin kendisini nasıl konumlandırdığını ve yeniden boyutlandırdığını belirlemek için aşağıdaki yaygın denetim stillerini kullanabilirsiniz (daha fazla bilgi için bkz . Ortak Denetim Stilleri ):

  • CCS_BOTTOM Denetimin kendisini üst pencerenin istemci alanının en altına konumlandırmasına neden olur ve genişliği üst pencerenin genişliğiyle aynı olacak şekilde ayarlar.

  • CCS_NODIVIDER İki piksellik vurgunun denetimin en üstüne çizilmesini engeller.

  • CCS_NOMOVEY Denetimin WM_SIZE bir iletiye yanıt olarak kendisini yatay olarak yeniden boyutlandırmasına ve taşımasına neden olur, ancak dikey olarak hareket ettirmez. CCS_NORESIZE stili kullanılırsa, bu stil uygulanmaz. Üst bilgi denetimleri varsayılan olarak bu stile sahiptir.

  • CCS_NOPARENTALIGN Denetimin üst pencerenin üstüne veya altına otomatik olarak taşınmasını engeller. Bunun yerine denetim, üst pencerenin boyutundaki değişikliklere rağmen üst pencere içindeki konumunu korur. CCS_TOP veya CCS_BOTTOM stili de kullanılıyorsa, yükseklik varsayılana ayarlanır, ancak konum ve genişlik değişmeden kalır.

  • CCS_NORESIZE Denetimin ilk boyutunu veya yeni boyutunu ayarlarken varsayılan genişliği ve yüksekliği kullanmasını engeller. Bunun yerine, denetim oluşturma veya boyutlandırma isteğinde belirtilen genişliği ve yüksekliği kullanır.

  • CCS_TOP Denetimin kendisini üst pencerenin istemci alanının en üstüne konumlandırmasına neden olur ve genişliği üst pencerenin genişliğiyle aynı olacak şekilde ayarlar.

Üst bilgi denetimine aşağıdaki pencere stillerini de uygulayabilirsiniz (daha fazla bilgi için bkz . Pencere Stilleri ):

  • WS_CHILD Alt pencere oluşturur. WS_POPUP stiliyle kullanılamaz.

  • WS_VISIBLE Başlangıçta görünür olan bir pencere oluşturur.

  • WS_DISABLED Başlangıçta devre dışı bırakılmış bir pencere oluşturur.

  • WS_GROUP Kullanıcının ok tuşlarıyla bir denetimden diğerine geçebileceği bir denetim grubunun ilk denetimini belirtir. İlk denetimden sonra WS_GROUP stiliyle tanımlanan tüm denetimler aynı gruba aittir. WS_GROUP stiline sahip bir sonraki denetim, stil grubunu sonlandırır ve sonraki grubu başlatır (diğer bir ifadeyle, bir grup bir sonrakinin başladığı yerde biter).

  • WS_TABSTOP Kullanıcının SEKME tuşunu kullanarak taşıyabileceği herhangi bir sayıda denetimden birini belirtir. SEKME tuşu kullanıcıyı WS_TABSTOP stiliyle belirtilen sonraki denetime taşır.

Denetiminizle genişletilmiş windows stilleri kullanmak istiyorsanız, yerine CreateEx'i çağırın.Create

Örnek

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

Bir denetim (alt pencere) oluşturur ve bunu nesnesiyle ilişkilendirir CHeaderCtrl .

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

Parametreler

dwExStyle
Oluşturulan denetimin genişletilmiş stilini belirtir. Genişletilmiş Windows stillerinin listesi için Windows SDK'sında CreateWindowEx için dwExStyle parametresine bakın.

Dwstyle
Üst bilgi denetiminin stili. Üst bilgi denetim stillerinin açıklaması için bkz . Windows SDK'sında Üst Bilgi Denetimi Stilleri . Ek stillerin listesi için bkz . Oluşturma .

Rect
pParentWnd istemci koordinatlarında oluşturulacak pencerenin boyutunu ve konumunu açıklayan rect yapısına başvuru.

pParentWnd
Denetimin üst öğesi olan pencere işaretçisi.

Nıd
Denetimin alt pencere kimliği.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

WS_EX_ Windows genişletilmiş stil ön biçimi tarafından belirtilen genişletilmiş Windows stilleri uygulamak için yerine Create kullanınCreateEx.

CHeaderCtrl::CreateDragImage

Üst bilgi denetiminde öğenin görüntüsünün saydam bir sürümünü oluşturur.

CImageList* CreateDragImage(int nIndex);

Parametreler

Nındex
Üst bilgi denetimindeki öğenin sıfır tabanlı dizini. Bu öğeye atanan görüntü, saydam görüntünün temelidir.

İade Değeri

Başarılı olursa CImageList nesnesinin işaretçisi; aksi takdirde NULL. Döndürülen liste yalnızca bir resim içeriyor.

Açıklamalar

Bu üye işlevi, Windows SDK'da açıklandığı gibi Win32 ileti HDM_CREATEDRAGIMAGE davranışını uygular. Üst bilgi öğesini sürükleyip bırakmayı desteklemek için sağlanır.

CImageList Döndürülen işaretçinin işaret ettiği nesne geçici bir nesnedir ve bir sonraki boşta kalma zamanı işlemesinde silinir.

CHeaderCtrl::D eleteItem

Üst bilgi denetiminden bir öğeyi siler.

BOOL DeleteItem(int nPos);

Parametreler

nPos
Silinecek öğenin sıfır tabanlı dizinini belirtir.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Örnek

int nCount = m_myHeaderCtrl.GetItemCount();

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

CHeaderCtrl::D rawItem

Sahip çizim üst bilgisi denetiminin görsel bir yönü değiştiğinde çerçeve tarafından çağrılır.

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

Parametreler

lpDrawItemStruct
Boyanacak öğeyi açıklayan DRAWITEMSTRUCT yapısının işaretçisi.

Açıklamalar

Yapının itemAction üyesi DRAWITEMSTRUCT , gerçekleştirilecek çizim eylemini tanımlar.

Varsayılan olarak, bu üye işlevi hiçbir şey yapmaz. Sahip çizim CHeaderCtrl nesnesi için çizim uygulamak için bu üye işlevini geçersiz kılın.

Uygulama, bu üye işlevi sonlanmadan önce lpDrawItemStruct içinde sağlanan görüntüleme bağlamı için seçilen tüm grafik cihaz arabirimi (GDI) nesnelerini geri yüklemelidir.

Örnek

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

Bir üst bilgi denetiminin belirtilen filtresini düzenlemeye başlar.

BOOL EditFilter(
    int nColumn,
    BOOL bDiscardChanges);

Parametreler

nSütun
Düzenlenecek sütun.

bDiscardChanges
kullanıcı, HDM_EDITFILTER iletisi gönderildiğinde filtreyi düzenleme sürecindeyse kullanıcının düzenlemesinin nasıl işleneceğini belirten bir değer.

Kullanıcı tarafından yapılan değişiklikleri atmak için DOĞRU'yu veya kullanıcının yaptığı değişiklikleri kabul etmek için YANLIŞ'ı belirtin.

İade Değeri

Bu yöntem başarılı olursa TRUE; aksi takdirde YANLIŞ.

Açıklamalar

Bu yöntem, Windows SDK'da açıklandığı gibi Win32 ileti HDM_EDITFILTER davranışını uygular.

Örnek

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

CHeaderCtrl::GetBitmapMargin

Üst bilgi denetimindeki bit eşlem kenar boşluğunun genişliğini alır.

int GetBitmapMargin() const;

İade Değeri

Bit eşlem kenar boşluğunun piksel cinsinden genişliği.

Açıklamalar

Bu üye işlevi, Windows SDK'da açıklandığı gibi Win32 ileti HDM_GETBITMAPMARGIN davranışını uygular.

Örnek

int iMargin = m_myHeaderCtrl.GetBitmapMargin();

CHeaderCtrl::GetFocusedItem

Geçerli üst bilgi denetiminde odağı olan öğenin dizinini alır.

int GetFocusedItem() const;

İade Değeri

Odağı olan üst bilgi öğesinin sıfır tabanlı dizini.

Açıklamalar

Bu yöntem, Windows SDK'sında açıklanan HDM_GETFOCUSEDITEM iletisini gönderir.

Örnek

İlk kod örneği, m_headerCtrlgeçerli üst bilgi denetimine erişmek için kullanılan değişkenini tanımlar. Bu değişken sonraki örnekte kullanılır.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

Sonraki kod örneği ve GetFocusedItem yöntemlerini gösterirSetFocusedItem. Kodun önceki bir bölümünde beş sütunlu bir üst bilgi denetimi oluşturduk. Ancak, sütun ayırıcısını sürükleyerek sütunun görünür olmamasını sağlayabilirsiniz. Aşağıdaki örnek, odak öğesi olarak son sütun başlığını ayarlar ve onaylar.

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

Üst bilgi denetiminde üst bilgi öğelerini çizmek için kullanılan bir resim listesinin tutamacını alır.

CImageList* GetImageList() const;

İade Değeri

CImageList nesnesinin işaretçisi.

Açıklamalar

Bu üye işlevi, Windows SDK'da açıklandığı gibi Win32 ileti HDM_GETIMAGELIST davranışını uygular. CImageList Döndürülen işaretçinin işaret ettiği nesne geçici bir nesnedir ve bir sonraki boşta kalma zamanı işlemesinde silinir.

Örnek

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

Üst bilgi denetim öğesi hakkındaki bilgileri alır.

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

Parametreler

nPos
Alınacak öğenin sıfır tabanlı dizinini belirtir.

pHeaderItem
Yeni öğeyi alan bir HDITEM yapısının işaretçisi. Bu yapı ve SetItem üye işlevleriyle InsertItem birlikte kullanılır. öğesinde mask ayarlanan tüm bayraklar, karşılık gelen öğelerdeki değerlerin iade edildikten sonra düzgün bir şekilde doldurulmasını sağlar. mask öğe sıfır olarak ayarlanırsa, diğer yapı öğelerindeki değerler anlamsızdır.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Örnek

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

Üst bilgi denetimindeki öğelerin sayısını alır.

int GetItemCount() const;

İade Değeri

Başarılı olursa üst bilgi denetimi öğelerinin sayısı; aksi takdirde - 1.

Örnek

CHeaderCtrl::D eleteItem örneğine bakın.

CHeaderCtrl::GetItemDropDownRect

Geçerli üst bilgi denetimindeki bir üst bilgi öğesi için açılan düğmenin sınırlayıcı dikdörtgenini alır.

BOOL GetItemDropDownRect(
    int iItem,
    LPRECT lpRect) const;

Parametreler

iItem
[in] Stili HDF_SPLITBUTTON olan üst bilgi öğesinin sıfır tabanlı dizini. Daha fazla bilgi için bkzfmt. HDITEM yapısının üyesi.

Lprect
[out] Sınırlayıcı dikdörtgen bilgilerini almak için RECT yapısına yönelik işaretçi.

İade Değeri

Bu işlev başarılı olursa TRUE; aksi takdirde YANLIŞ.

Açıklamalar

Bu yöntem, Windows SDK'sında açıklanan HDM_GETITEMDROPDOWNRECT iletisini gönderir.

Örnek

İlk kod örneği, m_headerCtrlgeçerli üst bilgi denetimine erişmek için kullanılan değişkenini tanımlar. Bu değişken sonraki örnekte kullanılır.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

Sonraki kod örneği yöntemini gösterir GetItemDropDownRect . Kodun önceki bir bölümünde beş sütunlu bir üst bilgi denetimi oluşturduk. Aşağıdaki kod örneği, üst bilgi açılan düğmesi için ayrılmış olan ilk sütundaki konumun etrafına bir 3B dikdörtgen çizer.

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

Üst bilgi denetimindeki belirli bir öğe için sınırlayıcı dikdörtgeni alır.

BOOL GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

Parametreler

Nındex
Üst bilgi denetim öğesinin sıfır tabanlı dizini.

Lprect
Sınırlayıcı dikdörtgen bilgilerini alan rect yapısının adresine yönelik bir işaretçi.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Bu yöntem, Windows SDK'da açıklandığı gibi Win32 ileti HDM_GETITEMRECT davranışını uygular.

CHeaderCtrl::GetOrderArray

Üst bilgi denetimindeki öğelerin soldan sağa sırasını alır.

BOOL GetOrderArray(
    LPINT piArray,
    int iCount);

Parametreler

piArray
Üst bilgi denetimindeki öğelerin dizin değerlerini soldan sağa göründükleri sırayla alan arabellek adresinin işaretçisi.

iCount
Üst bilgi denetim öğelerinin sayısı. Negatif olmamalıdır.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Bu üye işlevi, Windows SDK'da açıklandığı gibi Win32 ileti HDM_GETORDERARRAY davranışını uygular. Üst bilgi öğesi sıralamasını desteklemek için sağlanır.

Örnek

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

Geçerli üst bilgi denetiminin taşma düğmesinin sınırlayıcı dikdörtgenini alır.

BOOL GetOverflowRect(LPRECT lpRect) const;

Parametreler

Lprect
[out] Sınırlayıcı dikdörtgen bilgilerini alan bir RECT yapısının işaretçisi.

İade Değeri

Bu işlev başarılı olursa TRUE; aksi takdirde YANLIŞ.

Açıklamalar

Üst bilgi denetimi aynı anda görüntülenebilenden daha fazla öğe içeriyorsa, denetim görünür olmayan öğelere kayan bir taşma düğmesi görüntüleyebilir. Üst bilgi denetiminin taşma düğmesini görüntülemek için HDS_OVERFLOW ve HDF_SPLITBUTTON stilleri olmalıdır. Sınırlayıcı dikdörtgen taşma düğmesini içine alır ve yalnızca taşma düğmesi görüntülendiğinde bulunur. Daha fazla bilgi için bkz . Üst Bilgi Denetim Stilleri.

Bu yöntem, Windows SDK'sında açıklanan HDM_GETOVERFLOWRECT iletisini gönderir.

Örnek

İlk kod örneği, m_headerCtrlgeçerli üst bilgi denetimine erişmek için kullanılan değişkenini tanımlar. Bu değişken sonraki örnekte kullanılır.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

Sonraki kod örneği yöntemini gösterir GetOverflowRect . Kodun önceki bir bölümünde beş sütunlu bir üst bilgi denetimi oluşturduk. Ancak, sütun ayırıcısını sürükleyerek sütunun görünür olmamasını sağlayabilirsiniz. Bazı sütunlar görünmüyorsa, üst bilgi denetimi bir taşma düğmesi çizer. Aşağıdaki kod örneği taşma düğmesinin konumunun etrafına bir 3B dikdörtgen çizer.

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

Varsa, belirtilen bir noktada hangi üst bilgi öğesinin bulunduğunu belirler.

int HitTest(LPHDHITTESTINFO* phdhti);

Parametreler

phdhti
[in, out] Test noktasını belirten ve testin sonuçlarını alan HDHITTESTINFO yapısının işaretçisi.

İade Değeri

Varsa, belirtilen konumdaki üst bilgi öğesinin sıfır tabanlı dizini; aksi takdirde, -1.

Açıklamalar

Bu yöntem, Windows SDK'sında açıklanan HDM_HITTEST iletisini gönderir.

Örnek

İlk kod örneği, m_headerCtrlgeçerli üst bilgi denetimine erişmek için kullanılan değişkenini tanımlar. Bu değişken sonraki örnekte kullanılır.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

Sonraki kod örneği yöntemini gösterir HitTest . Bu kod örneğinin önceki bir bölümünde beş sütunlu bir üst bilgi denetimi oluşturduk. Ancak, sütun ayırıcısını sürükleyerek sütunun görünür olmamasını sağlayabilirsiniz. Bu örnek, görünür durumdaysa sütunun dizinini ve görünür değilse -1'i bildirir.

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

Belirtilen dizinde üst bilgi denetimine yeni bir öğe ekler.

int InsertItem(
    int nPos,
    HDITEM* phdi);

Parametreler

nPos
Eklenecek öğenin sıfır tabanlı dizini. Değer sıfırsa, öğe üst bilgi denetiminin başına eklenir. Değer maksimum değerden büyükse, öğe üst bilgi denetiminin sonuna eklenir.

phdi
Eklenecek öğe hakkında bilgi içeren bir HDITEM yapısının işaretçisi.

İade Değeri

Başarılı olursa yeni öğenin dizini; aksi takdirde - 1.

Örnek

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

Belirli bir dikdörtgen içindeki üst bilgi denetiminin boyutunu ve konumunu alır.

BOOL Layout(HDLAYOUT* pHeaderLayout);

Parametreler

pHeaderLayout
Üst bilgi denetiminin boyutunu ve konumunu ayarlamak için kullanılan bilgileri içeren HDLAYOUT yapısının işaretçisi.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Bu işlev, verilen dikdörtgeni kaplayan yeni bir üst bilgi denetimi için uygun boyutları belirlemek için kullanılır.

Örnek

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

Bir öğenin dizin değerini üst bilgi denetimindeki sırasına göre alır.

int OrderToIndex(int nOrder) const;

Parametreler

nOrder
Öğenin üst bilgi denetiminde soldan sağa doğru göründüğü sıfır tabanlı sıra.

İade Değeri

Öğenin üst bilgi denetimindeki sırasına göre dizini. Dizin, 0 ile başlayarak soldan sağa doğru sayılır.

Açıklamalar

Bu üye işlevi, Windows SDK'da açıklandığı gibi Win32 makro HDM_ORDERTOINDEX davranışını uygular. Üst bilgi öğesi sıralamasını desteklemek için sağlanır.

CHeaderCtrl::SetBitmapMargin

Üst bilgi denetimindeki bit eşlem kenar boşluğunun genişliğini ayarlar.

int SetBitmapMargin(int nWidth);

Parametreler

Nwidth
Var olan üst bilgi denetiminde bit eşlem çevreleyen kenar boşluğunun piksel cinsinden belirtilen genişliği.

İade Değeri

Bit eşlem kenar boşluğunun piksel cinsinden genişliği.

Açıklamalar

Bu üye işlevi, Windows SDK'da açıklandığı gibi Win32 ileti HDM_SETBITMAPMARGIN davranışını uygular.

Örnek

int iOldMargin = m_myHeaderCtrl.SetBitmapMargin(15);

CHeaderCtrl::SetFilterChangeTimeout

Filtre özniteliklerinde bir değişikliğin gerçekleştiği zaman ile HDN_FILTERCHANGE bildiriminin gönderilmesi arasındaki zaman aşımı aralığını ayarlar.

int SetFilterChangeTimeout(DWORD dwTimeOut);

Parametreler

dwTimeOut
Milisaniye cinsinden zaman aşımı değeri.

İade Değeri

Değiştirilen filtre denetiminin dizini.

Açıklamalar

Bu üye işlevi, Windows SDK'da açıklandığı gibi Win32 ileti HDM_SETFILTERCHANGETIMEOUT davranışını uygular.

Örnek

int iFltr = m_myHeaderCtrl.SetFilterChangeTimeout(15);

CHeaderCtrl::SetFocusedItem

Odağı geçerli üst bilgi denetiminde belirtilen bir üst bilgi öğesine ayarlar.

BOOL SetFocusedItem(int iItem);

Parametreler

iItem
[in] Üst bilgi öğesinin sıfır tabanlı dizini.

İade Değeri

Bu yöntem başarılı olursa TRUE; aksi takdirde YANLIŞ.

Açıklamalar

Bu yöntem, Windows SDK'sında açıklanan HDM_SETFOCUSEDITEM iletisini gönderir.

Örnek

İlk kod örneği, m_headerCtrlgeçerli üst bilgi denetimine erişmek için kullanılan değişkenini tanımlar. Bu değişken sonraki örnekte kullanılır.

CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;

Sonraki kod örneği ve GetFocusedItem yöntemlerini gösterirSetFocusedItem. Kodun önceki bir bölümünde beş sütunlu bir üst bilgi denetimi oluşturduk. Ancak, sütun ayırıcısını sürükleyerek sütunun görünür olmamasını sağlayabilirsiniz. Aşağıdaki örnek, odak öğesi olarak son sütun başlığını ayarlar ve onaylar.

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

Üst bilgi öğelerinin el ile sürüklenip bırakılıp bırakılıp bırakılası belirtecek şekilde üst bilgi öğeleri arasındaki ayırıcıyı değiştirir.

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

Parametreler

Pt
İşaretçinin konumu. Üst bilgi denetimi, işaretçinin konumuna göre uygun ayırıcıyı vurgular.

Nındex
Vurgulanan ayırıcının dizini.

İade Değeri

Vurgulanan ayırıcının dizini.

Açıklamalar

Bu üye işlevi, Windows SDK'da açıklandığı gibi Win32 ileti HDM_SETHOTDIVIDER davranışını uygular. Üst bilgi öğesini sürükleyip bırakmayı desteklemek için sağlanır.

Örnek

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

   CHeaderCtrl::OnMouseMove(nFlags, point);
}

CHeaderCtrl::SetImageList

Üst bilgi denetimine bir resim listesi atar.

CImageList* SetImageList(CImageList* pImageList);

Parametreler

pImageList
Üst bilgi denetimine atanacak görüntü listesini içeren bir CImageList nesnenin işaretçisi.

İade Değeri

Daha önce üst bilgi denetimine atanmış olan CImageList nesnesinin işaretçisi.

Açıklamalar

Bu üye işlevi, Windows SDK'da açıklandığı gibi Win32 ileti HDM_SETIMAGELIST davranışını uygular. CImageList Döndürülen işaretçinin işaret ettiği nesne geçici bir nesnedir ve bir sonraki boşta kalma zamanı işlemesinde silinir.

Örnek

CHeaderCtrl::GetImageList örneğine bakın.

CHeaderCtrl::SetItem

Bir üst bilgi denetiminde belirtilen öğenin özniteliklerini ayarlar.

BOOL SetItem(
    int nPos,
    HDITEM* pHeaderItem);

Parametreler

nPos
İşlenecek öğenin sıfır tabanlı dizini.

pHeaderItem
Yeni öğe hakkında bilgi içeren bir HDITEM yapısının işaretçisi.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Örnek

CHeaderCtrl::GetItem örneğine bakın.

CHeaderCtrl::SetOrderArray

Üst bilgi denetimindeki öğelerin soldan sağa sırasını ayarlar.

BOOL SetOrderArray(
    int iCount,
    LPINT piArray);

Parametreler

iCount
Üst bilgi denetim öğelerinin sayısı.

piArray
Üst bilgi denetimindeki öğelerin dizin değerlerini soldan sağa göründükleri sırayla alan arabellek adresinin işaretçisi.

İade Değeri

Başarılı olursa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Bu üye işlevi, Windows SDK'da açıklandığı gibi Win32 makro HDM_SETORDERARRAY davranışını uygular. Üst bilgi öğesi sıralamasını desteklemek için sağlanır.

Örnek

CHeaderCtrl::GetOrderArray örneğine bakın.

Ayrıca bkz.

CWnd Sınıfı
Hiyerarşi Grafiği
CTabCtrl Sınıfı
CListCtrl Sınıfı
CImageList Sınıfı