CHeaderCtrl Sınıfı
Windows ortak üst bilgi denetiminin işlevselliğini sağlar.
Sözdizimi
class CHeaderCtrl : public CWnd
Üyeler
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
CHeaderCtrl::CHeaderCtrl | Bir CHeaderCtrl nesne oluşturur. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
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 CHeaderCtrl
hakkında daha fazla bilgi için bkz . Denetimler ve CHeaderCtrl Kullanma.
Devralma Hiyerarşisi
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();
Dönüş 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.
Dönüş 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 RECT yapısı olabilir.
pParentWnd
Üst bilgi denetiminin üst penceresini ( genellikle bir CDialog
) belirtir. NULL olmamalıdır.
Nıd
Üst bilgi denetiminin kimliğini belirtir.
Dönüş 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ınCreate
CHeaderCtrl
.
Ü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.
Dönüş 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
nIndex
Üst bilgi denetimindeki öğenin sıfır tabanlı dizini. Bu öğeye atanan görüntü, saydam görüntünün temelidir.
Dönüş 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.
Dönüş 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.
Dönüş 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;
Dönüş 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;
Dönüş 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_headerCtrl
geç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;
Dönüş 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.
Dönüş 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;
Dönüş 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.
Dönüş 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_headerCtrl
geç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
nIndex
Ü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.
Dönüş 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.
Dönüş 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.
Dönüş 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_headerCtrl
geç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.
Dönüş 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_headerCtrl
geç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.
Dönüş 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.
Dönüş 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.
Dönüş 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.
Dönüş 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.
Dönüş 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.
Dönüş 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_headerCtrl
geç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.
nIndex
Vurgulanan ayırıcının dizini.
Dönüş 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.
Dönüş 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.
Dönüş 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.
Dönüş 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ı