Kelas CHeaderCtrl
Menyediakan fungsionalitas kontrol header umum Windows.
Sintaks
class CHeaderCtrl : public CWnd
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CHeaderctrl::CHeaderctrl | Membuat CHeaderCtrl objek. |
Metode Publik
Nama | Deskripsi |
---|---|
CHeaderCtrl::ClearAllFilters | Menghapus semua filter untuk kontrol header. |
CHeaderCtrl::ClearFilter | Menghapus filter untuk kontrol header. |
CHeaderCtrl::Create | Membuat kontrol header dan melampirkannya ke CHeaderCtrl objek. |
CHeaderCtrl::CreateDragImage | Membuat versi transparan gambar item dalam kontrol header. |
CHeaderCtrl::CreateEx | Membuat kontrol header dengan gaya perluasan Windows yang ditentukan dan melampirkannya ke CListCtrl objek. |
CHeaderCtrl::D eleteItem | Menghapus item dari kontrol header. |
CHeaderCtrl::D rawItem | Menggambar item kontrol header yang ditentukan. |
CHeaderCtrl::EditFilter | Mulai mengedit filter kontrol header yang ditentukan. |
CHeaderCtrl::GetBitmapMargin | Mengambil lebar margin bitmap dalam kontrol header. |
CHeaderCtrl::GetFocusedItem | Mendapatkan pengidentifikasi item dalam kontrol header saat ini yang memiliki fokus. |
CHeaderctrl::GetImageList | Mengambil handel daftar gambar yang digunakan untuk menggambar item header dalam kontrol header. |
CHeaderCtrl::GetItem | Mengambil informasi tentang item dalam kontrol header. |
CHeaderCtrl::GetItemCount | Mengambil hitungan item dalam kontrol header. |
CHeaderCtrl::GetItemDropDownRect | Mendapatkan informasi persegi panjang pembatas untuk tombol drop-down yang ditentukan dalam kontrol header. |
CHeaderCtrl::GetItemRect | Mengambil persegi panjang pembatas untuk item tertentu dalam kontrol header. |
CHeaderCtrl::GetOrderArray | Mengambil urutan item kiri-ke-kanan dalam kontrol header. |
CHeaderCtrl::GetOverflowRect | Mendapatkan persegi panjang pembatas tombol luapan untuk kontrol header saat ini. |
CHeaderctrl::Hittest | Menentukan item header mana, jika ada, yang terletak pada titik tertentu. |
CHeaderCtrl::InsertItem | Sisipkan item baru ke kontrol header. |
CHeaderCtrl::Layout | Mengambil ukuran dan posisi kontrol header dalam persegi panjang tertentu. |
CHeaderCtrl::OrderToIndex | Mengambil nilai indeks untuk item berdasarkan urutannya dalam kontrol header. |
CHeaderCtrl::SetBitmapMargin | Mengatur lebar margin bitmap dalam kontrol header. |
CHeaderCtrl::SetFilterChangeTimeout | Mengatur interval batas waktu antara waktu perubahan terjadi di atribut filter dan postingan HDN_FILTERCHANGE pemberitahuan. |
CHeaderCtrl::SetFocusedItem | Mengatur fokus ke item header tertentu di kontrol header saat ini. |
CHeaderCtrl::SetHotDivider | Mengubah pembagi antara item header untuk menunjukkan seret dan letakkan item header secara manual. |
CHeaderCtrl::SetImageList | Menetapkan daftar gambar ke kontrol header. |
CHeaderCtrl::SetItem | Mengatur atribut item yang ditentukan dalam kontrol header. |
CHeaderCtrl::SetOrderArray | Mengatur urutan item kiri-ke-kanan dalam kontrol header. |
Keterangan
Kontrol header adalah jendela yang biasanya diposisikan di atas sekumpulan kolom teks atau angka. Ini berisi judul untuk setiap kolom, dan dapat dibagi menjadi beberapa bagian. Pengguna dapat menyeret pembagi yang memisahkan bagian untuk mengatur lebar setiap kolom. Untuk ilustrasi kontrol header, lihat Kontrol Header.
Kontrol ini (dan oleh karena itu CHeaderCtrl
kelas) hanya tersedia untuk program yang berjalan di bawah Windows 95/98 dan Windows NT versi 3.51 dan yang lebih baru.
Fungsionalitas yang ditambahkan untuk kontrol umum Windows 95/Internet Explorer 4.0 mencakup hal berikut:
Urutan kustom item header.
Item header seret dan letakkan, untuk menyusun ulang item header. Gunakan gaya HDS_DRAGDROP saat Anda membuat
CHeaderCtrl
objek.Teks kolom header terus-menerus dapat dilihat selama mengubah ukuran kolom. Gunakan gaya HDS_FULLDRAG saat Anda membuat
CHeaderCtrl
objek.Pelacakan panas header, yang menyoroti item header saat penunjuk mengarah ke atasnya. Gunakan gaya HDS_HOTTRACK saat Anda membuat
CHeaderCtrl
objek.Dukungan daftar gambar. Item header dapat berisi gambar yang
CImageList
disimpan dalam objek atau teks.
Untuk informasi selengkapnya tentang menggunakan CHeaderCtrl
, lihat Kontrol dan Menggunakan CHeaderCtrl.
Hierarki Warisan
CHeaderCtrl
Persyaratan
Header: afxcmn.h
CHeaderctrl::CHeaderctrl
Membuat CHeaderCtrl
objek.
CHeaderCtrl();
Contoh
// Declare a local CHeaderCtrl object.
CHeaderCtrl myHeaderCtrl;
// Declare a dynamic CHeaderCtrl object.
CHeaderCtrl *pmyHeaderCtrl = new CHeaderCtrl;
CHeaderCtrl::ClearAllFilters
Menghapus semua filter untuk kontrol header.
BOOL ClearAllFilters();
Tampilkan Nilai
TRUE jika metode ini berhasil; jika tidak, FALSE.
Keterangan
Metode ini mengimplementasikan perilaku pesan Win32 HDM_CLEARFILTER dengan nilai kolom -1, seperti yang dijelaskan dalam Windows SDK.
Contoh
m_myHeaderCtrl.ClearAllFilters();
CHeaderCtrl::ClearFilter
Menghapus filter untuk kontrol header.
BOOL ClearFilter(int nColumn);
Parameter
nColumn
Nilai kolom yang menunjukkan filter mana yang akan dihapus.
Tampilkan Nilai
TRUE jika metode ini berhasil; jika tidak, FALSE.
Keterangan
Metode ini mengimplementasikan perilaku pesan Win32 HDM_CLEARFILTER, seperti yang dijelaskan dalam Windows SDK.
Contoh
int iFilt = m_myHeaderCtrl.ClearFilter(1);
CHeaderCtrl::Create
Membuat kontrol header dan melampirkannya ke CHeaderCtrl
objek.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameter
dwStyle
Menentukan gaya kontrol header. Untuk deskripsi gaya kontrol header, lihat Gaya Kontrol Header di Windows SDK.
rect
Menentukan ukuran dan posisi kontrol header. Ini bisa berupa objek CRect atau struktur RECT .
pParentWnd
Menentukan jendela induk kontrol header, biasanya .CDialog
Ini tidak boleh NULL.
Nid
Menentukan ID kontrol header.
Tampilkan Nilai
Bukan nol jika inisialisasi berhasil; jika tidak, nol.
Keterangan
Anda membuat CHeaderCtrl
objek dalam dua langkah. Pertama, panggil konstruktor lalu panggil Create
, yang membuat kontrol header dan melampirkannya ke CHeaderCtrl
objek.
Selain gaya kontrol header, Anda dapat menggunakan gaya kontrol umum berikut untuk menentukan bagaimana kontrol header memosisikan dan mengubah ukurannya sendiri (lihat Gaya Kontrol Umum untuk informasi selengkapnya):
CCS_BOTTOM Menyebabkan kontrol memosisikan dirinya di bagian bawah area klien jendela induk dan mengatur lebarnya agar sama dengan lebar jendela induk.
CCS_NODIVIDER Mencegah sorotan dua piksel digambar di bagian atas kontrol.
CCS_NOMOVEY Menyebabkan kontrol mengubah ukuran dan memindahkan dirinya secara horizontal, tetapi tidak secara vertikal, sebagai respons terhadap pesan WM_SIZE. Jika gaya CCS_NORESIZE digunakan, gaya ini tidak berlaku. Kontrol header memiliki gaya ini secara default.
CCS_NOPARENTALIGN Mencegah kontrol berpindah secara otomatis ke bagian atas atau bawah jendela induk. Sebaliknya, kontrol mempertahankan posisinya di dalam jendela induk meskipun perubahan pada ukuran jendela induk. Jika gaya CCS_TOP atau CCS_BOTTOM juga digunakan, tinggi disesuaikan ke default, tetapi posisi dan lebar tetap tidak berubah.
CCS_NORESIZE Mencegah kontrol menggunakan lebar dan tinggi default saat mengatur ukuran awal atau ukuran baru. Sebaliknya, kontrol menggunakan lebar dan tinggi yang ditentukan dalam permintaan pembuatan atau ukuran.
CCS_TOP Menyebabkan kontrol memosisikan dirinya di bagian atas area klien jendela induk dan mengatur lebar agar sama dengan lebar jendela induk.
Anda juga dapat menerapkan gaya jendela berikut ke kontrol header (lihat Gaya Jendela untuk informasi selengkapnya):
WS_CHILD Membuat jendela anak. Tidak dapat digunakan dengan gaya WS_POPUP.
WS_VISIBLE Membuat jendela yang awalnya terlihat.
WS_DISABLED Membuat jendela yang awalnya dinonaktifkan.
WS_GROUP Menentukan kontrol pertama grup kontrol tempat pengguna dapat berpindah dari satu kontrol ke kontrol berikutnya dengan tombol panah. Semua kontrol yang ditentukan dengan gaya WS_GROUP setelah kontrol pertama milik grup yang sama. Kontrol berikutnya dengan gaya WS_GROUP mengakhiri grup gaya dan memulai grup berikutnya (yaitu, satu grup berakhir di mana grup berikutnya dimulai).
WS_TABSTOP Menentukan salah satu dari sejumlah kontrol yang dapat dipindahkan pengguna dengan menggunakan kunci TAB. Tombol TAB memindahkan pengguna ke kontrol berikutnya yang ditentukan oleh gaya WS_TABSTOP.
Jika Anda ingin menggunakan gaya jendela yang diperluas dengan kontrol Anda, panggil CreateEx alih-alih Create
.
Contoh
// 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
Membuat kontrol (jendela anak) dan mengaitkannya dengan CHeaderCtrl
objek.
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameter
dwExStyle
Menentukan gaya kontrol yang diperluas yang sedang dibuat. Untuk daftar gaya Windows yang diperluas, lihat parameter dwExStyle untuk CreateWindowEx di Windows SDK.
dwStyle
Gaya kontrol header. Untuk deskripsi gaya kontrol header, lihat Gaya Kontrol Header di Windows SDK. Lihat Membuat untuk daftar gaya tambahan.
rect
Referensi ke struktur RECT yang menjelaskan ukuran dan posisi jendela yang akan dibuat, dalam koordinat klien pParentWnd.
pParentWnd
Penunjuk ke jendela yang merupakan induk kontrol.
Nid
ID jendela anak kontrol.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Gunakan CreateEx
alih-alih Create
menerapkan gaya Windows yang diperluas, yang ditentukan oleh preface gaya windows yang diperluas WS_EX_.
CHeaderCtrl::CreateDragImage
Membuat versi transparan gambar item dalam kontrol header.
CImageList* CreateDragImage(int nIndex);
Parameter
nIndex
Indeks berbasis nol item dalam kontrol header. Gambar yang ditetapkan ke item ini adalah dasar untuk gambar transparan.
Tampilkan Nilai
Penunjuk ke objek CImageList jika berhasil; jika tidak, NULL. Daftar yang dikembalikan hanya berisi satu gambar.
Keterangan
Fungsi anggota ini mengimplementasikan perilaku pesan Win32 HDM_CREATEDRAGIMAGE, seperti yang dijelaskan dalam Windows SDK. Ini disediakan untuk mendukung seret dan letakkan item header.
Objek CImageList
tempat titik penunjuk yang dikembalikan adalah objek sementara dan dihapus dalam pemrosesan waktu menganggur berikutnya.
CHeaderCtrl::D eleteItem
Menghapus item dari kontrol header.
BOOL DeleteItem(int nPos);
Parameter
nPos
Menentukan indeks berbasis nol item yang akan dihapus.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Contoh
int nCount = m_myHeaderCtrl.GetItemCount();
// Delete all of the items.
for (int i = 0; i < nCount; i++)
{
m_myHeaderCtrl.DeleteItem(0);
}
CHeaderCtrl::D rawItem
Dipanggil oleh kerangka kerja saat aspek visual kontrol header gambar pemilik berubah.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parameter
lpDrawItemStruct
Penunjuk ke struktur DRAWITEMSTRUCT yang menjelaskan item yang akan dicat.
Keterangan
Anggota itemAction
DRAWITEMSTRUCT
struktur mendefinisikan tindakan menggambar yang akan dilakukan.
Secara default, fungsi anggota ini tidak melakukan apa pun. Ambil alih fungsi anggota ini untuk mengimplementasikan gambar untuk objek gambar CHeaderCtrl
pemilik.
Aplikasi harus memulihkan semua objek antarmuka perangkat grafis (GDI) yang dipilih untuk konteks tampilan yang disediakan dalam lpDrawItemStruct sebelum fungsi anggota ini berakhir.
Contoh
// 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
Mulai mengedit filter kontrol header yang ditentukan.
BOOL EditFilter(
int nColumn,
BOOL bDiscardChanges);
Parameter
nColumn
Kolom yang akan diedit.
bDiscardChanges
Nilai yang menentukan cara menangani perubahan pengeditan pengguna jika pengguna sedang dalam proses mengedit filter saat pesan HDM_EDITFILTER dikirim.
Tentukan TRUE untuk membuang perubahan yang dibuat oleh pengguna, atau FALSE untuk menerima perubahan yang dibuat oleh pengguna.
Tampilkan Nilai
TRUE jika metode ini berhasil; jika tidak, FALSE.
Keterangan
Metode ini mengimplementasikan perilaku pesan Win32 HDM_EDITFILTER, seperti yang dijelaskan di Windows SDK.
Contoh
int iFilter = m_myHeaderCtrl.EditFilter(1, TRUE);
CHeaderCtrl::GetBitmapMargin
Mengambil lebar margin bitmap dalam kontrol header.
int GetBitmapMargin() const;
Tampilkan Nilai
Lebar margin bitmap dalam piksel.
Keterangan
Fungsi anggota ini mengimplementasikan perilaku pesan Win32 HDM_GETBITMAPMARGIN, seperti yang dijelaskan dalam Windows SDK.
Contoh
int iMargin = m_myHeaderCtrl.GetBitmapMargin();
CHeaderCtrl::GetFocusedItem
Mendapatkan indeks item yang memiliki fokus dalam kontrol header saat ini.
int GetFocusedItem() const;
Tampilkan Nilai
Indeks berbasis nol dari item header yang memiliki fokus.
Keterangan
Metode ini mengirim pesan HDM_GETFOCUSEDITEM , yang dijelaskan dalam Windows SDK.
Contoh
Contoh kode pertama mendefinisikan variabel, m_headerCtrl
, yang digunakan untuk mengakses kontrol header saat ini. Variabel ini digunakan dalam contoh berikutnya.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Contoh kode berikutnya menunjukkan SetFocusedItem
metode dan GetFocusedItem
. Di bagian kode sebelumnya, kami membuat kontrol header dengan lima kolom. Namun, Anda dapat menyeret pemisah kolom sehingga kolom tidak terlihat. Contoh berikut mengatur lalu mengonfirmasi header kolom terakhir sebagai item fokus.
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
Mengambil handel daftar gambar yang digunakan untuk menggambar item header dalam kontrol header.
CImageList* GetImageList() const;
Tampilkan Nilai
Penunjuk ke objek CImageList .
Keterangan
Fungsi anggota ini mengimplementasikan perilaku pesan Win32 HDM_GETIMAGELIST, seperti yang dijelaskan dalam Windows SDK. Objek CImageList
tempat titik penunjuk yang dikembalikan adalah objek sementara dan dihapus dalam pemrosesan waktu menganggur berikutnya.
Contoh
// 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
Mengambil informasi tentang item kontrol header.
BOOL GetItem(
int nPos,
HDITEM* pHeaderItem) const;
Parameter
nPos
Menentukan indeks berbasis nol item yang akan diambil.
pHeaderItem
Penunjuk ke struktur HDITEM yang menerima item baru. Struktur ini digunakan dengan InsertItem
fungsi anggota dan SetItem
. Setiap bendera yang diatur dalam mask
elemen memastikan bahwa nilai dalam elemen yang sesuai diisi dengan benar setelah pengembalian. mask
Jika elemen diatur ke nol, nilai dalam elemen struktur lainnya tidak ada artinya.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Contoh
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
Mengambil hitungan item dalam kontrol header.
int GetItemCount() const;
Tampilkan Nilai
Jumlah item kontrol header jika berhasil; jika tidak - 1.
Contoh
Lihat contoh untuk CHeaderCtrl::D eleteItem.
CHeaderCtrl::GetItemDropDownRect
Mendapatkan persegi panjang pembatas tombol drop-down untuk item header di kontrol header saat ini.
BOOL GetItemDropDownRect(
int iItem,
LPRECT lpRect) const;
Parameter
iItem
[di] Indeks berbasis nol item header yang gayanya HDF_SPLITBUTTON. Untuk informasi selengkapnya, lihat fmt
anggota struktur HDITEM .
lpRect
[out] Penunjuk ke struktur RECT untuk menerima informasi persegi panjang pembatas.
Tampilkan Nilai
TRUE jika fungsi ini berhasil; jika tidak, FALSE.
Keterangan
Metode ini mengirim pesan HDM_GETITEMDROPDOWNRECT , yang dijelaskan dalam Windows SDK.
Contoh
Contoh kode pertama mendefinisikan variabel, m_headerCtrl
, yang digunakan untuk mengakses kontrol header saat ini. Variabel ini digunakan dalam contoh berikutnya.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Contoh kode berikutnya menunjukkan GetItemDropDownRect
metode . Di bagian kode sebelumnya, kami membuat kontrol header dengan lima kolom. Contoh kode berikut menggambar persegi panjang 3D di sekitar lokasi pada kolom pertama yang dicadangkan untuk tombol drop-down header.
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
Mengambil persegi panjang pembatas untuk item tertentu dalam kontrol header.
BOOL GetItemRect(
int nIndex,
LPRECT lpRect) const;
Parameter
nIndex
Indeks berbasis nol dari item kontrol header.
lpRect
Penunjuk ke alamat struktur RECT yang menerima informasi persegi panjang pembatas.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Metode ini mengimplementasikan perilaku pesan Win32 HDM_GETITEMRECT, seperti yang dijelaskan di Windows SDK.
CHeaderCtrl::GetOrderArray
Mengambil urutan item kiri-ke-kanan dalam kontrol header.
BOOL GetOrderArray(
LPINT piArray,
int iCount);
Parameter
piArray
Penunjuk ke alamat buffer yang menerima nilai indeks item dalam kontrol header, dalam urutan muncul dari kiri ke kanan.
iCount
Jumlah item kontrol header. Harus non-negatif.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Fungsi anggota ini mengimplementasikan perilaku pesan Win32 HDM_GETORDERARRAY, seperti yang dijelaskan dalam Windows SDK. Ini disediakan untuk mendukung pengurutan item header.
Contoh
// 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
Mendapatkan persegi panjang pembatas dari tombol luapan kontrol header saat ini.
BOOL GetOverflowRect(LPRECT lpRect) const;
Parameter
lpRect
[out] Penunjuk ke struktur RECT yang menerima informasi persegi panjang pembatas.
Tampilkan Nilai
TRUE jika fungsi ini berhasil; jika tidak, FALSE.
Keterangan
Jika kontrol header berisi lebih banyak item daripada yang dapat ditampilkan secara bersamaan, kontrol dapat menampilkan tombol luapan yang menggulir ke item yang tidak terlihat. Kontrol header harus memiliki gaya HDS_OVERFLOW dan HDF_SPLITBUTTON untuk menampilkan tombol luapan. Persegi panjang pembatas mengapit tombol luapan dan hanya ada saat tombol luapan ditampilkan. Untuk informasi selengkapnya, lihat Gaya Kontrol Header.
Metode ini mengirim pesan HDM_GETOVERFLOWRECT , yang dijelaskan dalam Windows SDK.
Contoh
Contoh kode pertama mendefinisikan variabel, m_headerCtrl
, yang digunakan untuk mengakses kontrol header saat ini. Variabel ini digunakan dalam contoh berikutnya.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Contoh kode berikutnya menunjukkan GetOverflowRect
metode . Di bagian kode sebelumnya, kami membuat kontrol header dengan lima kolom. Namun, Anda dapat menyeret pemisah kolom sehingga kolom tidak terlihat. Jika beberapa kolom tidak terlihat, kontrol header akan menggambar tombol luapan. Contoh kode berikut menggambar persegi panjang 3D di sekitar lokasi tombol luapan.
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
Menentukan item header mana, jika ada, yang terletak pada titik tertentu.
int HitTest(LPHDHITTESTINFO* phdhti);
Parameter
phdhti
[masuk, keluar] Pointer ke struktur HDHITTESTINFO yang menentukan titik untuk menguji dan menerima hasil pengujian.
Tampilkan Nilai
Indeks berbasis nol dari item header, jika ada, pada posisi yang ditentukan; jika tidak, -1.
Keterangan
Metode ini mengirim pesan HDM_HITTEST , yang dijelaskan dalam Windows SDK.
Contoh
Contoh kode pertama mendefinisikan variabel, m_headerCtrl
, yang digunakan untuk mengakses kontrol header saat ini. Variabel ini digunakan dalam contoh berikutnya.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Contoh kode berikutnya menunjukkan HitTest
metode . Di bagian sebelumnya dari contoh kode ini, kami membuat kontrol header dengan lima kolom. Namun, Anda dapat menyeret pemisah kolom sehingga kolom tidak terlihat. Contoh ini melaporkan indeks kolom jika terlihat dan -1 jika kolom tidak terlihat.
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
Menyisipkan item baru ke dalam kontrol header pada indeks yang ditentukan.
int InsertItem(
int nPos,
HDITEM* phdi);
Parameter
nPos
Indeks berbasis nol dari item yang akan disisipkan. Jika nilainya nol, item disisipkan di awal kontrol header. Jika nilai lebih besar dari nilai maksimum, item disisipkan di akhir kontrol header.
phdi
Penunjuk ke struktur HDITEM yang berisi informasi tentang item yang akan disisipkan.
Tampilkan Nilai
Indeks item baru jika berhasil; jika tidak - 1.
Contoh
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
Mengambil ukuran dan posisi kontrol header dalam persegi panjang tertentu.
BOOL Layout(HDLAYOUT* pHeaderLayout);
Parameter
pHeaderLayout
Penunjuk ke struktur HDLAYOUT , yang berisi informasi yang digunakan untuk mengatur ukuran dan posisi kontrol header.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Fungsi ini digunakan untuk menentukan dimensi yang sesuai untuk kontrol header baru yaitu menempati persegi panjang yang diberikan.
Contoh
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
Mengambil nilai indeks untuk item berdasarkan urutannya dalam kontrol header.
int OrderToIndex(int nOrder) const;
Parameter
nOrder
Urutan berbasis nol yang muncul di kontrol header, dari kiri ke kanan.
Tampilkan Nilai
Indeks item, berdasarkan urutannya dalam kontrol header. Indeks dihitung dari kiri ke kanan, dimulai dengan 0.
Keterangan
Fungsi anggota ini mengimplementasikan perilaku makro Win32 HDM_ORDERTOINDEX, seperti yang dijelaskan dalam Windows SDK. Ini disediakan untuk mendukung pengurutan item header.
CHeaderCtrl::SetBitmapMargin
Mengatur lebar margin bitmap dalam kontrol header.
int SetBitmapMargin(int nWidth);
Parameter
nWidth
Lebar, ditentukan dalam piksel, dari margin yang mengelilingi bitmap dalam kontrol header yang ada.
Tampilkan Nilai
Lebar margin bitmap dalam piksel.
Keterangan
Fungsi anggota ini mengimplementasikan perilaku pesan Win32 HDM_SETBITMAPMARGIN, seperti yang dijelaskan dalam Windows SDK.
Contoh
int iOldMargin = m_myHeaderCtrl.SetBitmapMargin(15);
CHeaderCtrl::SetFilterChangeTimeout
Mengatur interval batas waktu antara waktu perubahan terjadi di atribut filter dan postingan pemberitahuan HDN_FILTERCHANGE .
int SetFilterChangeTimeout(DWORD dwTimeOut);
Parameter
dwTimeOut
Nilai batas waktu, dalam milidetik.
Tampilkan Nilai
Indeks kontrol filter yang sedang dimodifikasi.
Keterangan
Fungsi anggota ini mengimplementasikan perilaku pesan Win32 HDM_SETFILTERCHANGETIMEOUT, seperti yang dijelaskan dalam Windows SDK.
Contoh
int iFltr = m_myHeaderCtrl.SetFilterChangeTimeout(15);
CHeaderCtrl::SetFocusedItem
Mengatur fokus ke item header tertentu di kontrol header saat ini.
BOOL SetFocusedItem(int iItem);
Parameter
iItem
[di] Indeks berbasis nol dari item header.
Tampilkan Nilai
TRUE jika metode ini berhasil; jika tidak, FALSE.
Keterangan
Metode ini mengirim pesan HDM_SETFOCUSEDITEM , yang dijelaskan dalam Windows SDK.
Contoh
Contoh kode pertama mendefinisikan variabel, m_headerCtrl
, yang digunakan untuk mengakses kontrol header saat ini. Variabel ini digunakan dalam contoh berikutnya.
CHeaderCtrl m_headerCtrl;
CSplitButton m_splitButton;
Contoh kode berikutnya menunjukkan SetFocusedItem
metode dan GetFocusedItem
. Di bagian kode sebelumnya, kami membuat kontrol header dengan lima kolom. Namun, Anda dapat menyeret pemisah kolom sehingga kolom tidak terlihat. Contoh berikut mengatur lalu mengonfirmasi header kolom terakhir sebagai item fokus.
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
Mengubah pembagi antara item header untuk menunjukkan seret dan letakkan item header secara manual.
int SetHotDivider(CPoint pt);
int SetHotDivider(int nIndex);
Parameter
Pt
Posisi penunjuk. Kontrol header menyoroti pembagi yang sesuai berdasarkan posisi penunjuk.
nIndex
Indeks pembagi yang disorot.
Tampilkan Nilai
Indeks pembagi yang disorot.
Keterangan
Fungsi anggota ini mengimplementasikan perilaku pesan Win32 HDM_SETHOTDIVIDER, seperti yang dijelaskan dalam Windows SDK. Ini disediakan untuk mendukung seret dan letakkan item header.
Contoh
void CMyHeaderCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
SetHotDivider(point);
CHeaderCtrl::OnMouseMove(nFlags, point);
}
CHeaderCtrl::SetImageList
Menetapkan daftar gambar ke kontrol header.
CImageList* SetImageList(CImageList* pImageList);
Parameter
pImageList
Penunjuk ke objek yang CImageList
berisi daftar gambar yang akan ditetapkan ke kontrol header.
Tampilkan Nilai
Penunjuk ke objek CImageList yang sebelumnya ditetapkan ke kontrol header.
Keterangan
Fungsi anggota ini mengimplementasikan perilaku pesan Win32 HDM_SETIMAGELIST, seperti yang dijelaskan dalam Windows SDK. Objek CImageList
tempat titik penunjuk yang dikembalikan adalah objek sementara dan dihapus dalam pemrosesan waktu menganggur berikutnya.
Contoh
Lihat contoh untuk CHeaderCtrl::GetImageList.
CHeaderCtrl::SetItem
Mengatur atribut item yang ditentukan dalam kontrol header.
BOOL SetItem(
int nPos,
HDITEM* pHeaderItem);
Parameter
nPos
Indeks berbasis nol dari item yang akan dimanipulasi.
pHeaderItem
Penunjuk ke struktur HDITEM yang berisi informasi tentang item baru.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Contoh
Lihat contoh untuk CHeaderCtrl::GetItem.
CHeaderCtrl::SetOrderArray
Mengatur urutan item kiri-ke-kanan dalam kontrol header.
BOOL SetOrderArray(
int iCount,
LPINT piArray);
Parameter
iCount
Jumlah item kontrol header.
piArray
Penunjuk ke alamat buffer yang menerima nilai indeks item dalam kontrol header, dalam urutan muncul dari kiri ke kanan.
Tampilkan Nilai
Bukan nol jika berhasil; jika tidak, 0.
Keterangan
Fungsi anggota ini mengimplementasikan perilaku makro Win32 HDM_SETORDERARRAY, seperti yang dijelaskan dalam Windows SDK. Ini disediakan untuk mendukung pengurutan item header.
Contoh
Lihat contoh untuk CHeaderCtrl::GetOrderArray.
Lihat juga
Kelas CWnd
Bagan Hierarki
Kelas CTabCtrl
Kelas CListCtrl
Kelas CImageList