Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Memungkinkan item ditampilkan, dipindahkan, dan diubah ukurannya dengan cara yang berbeda.
Sintaks
class CRectTracker
Anggota
Konstruktor Publik
| Nama | Deskripsi |
|---|---|
| CRectTracker::CRectTracker | Membuat CRectTracker objek. |
Metode Publik
| Nama | Deskripsi |
|---|---|
| CRectTracker::AdjustRect | Dipanggil ketika persegi panjang diubah ukurannya. |
| CRectTracker::D raw | Merender persegi panjang. |
| CRectTracker::D rawTrackerRect | Dipanggil saat menggambar batas CRectTracker objek. |
| CRectTracker::GetHandleMask | Dipanggil untuk mendapatkan masker CRectTracker handel pengukur ukuran item. |
| CRectTracker::GetTrueRect | Mengembalikan lebar dan tinggi persegi panjang, termasuk gagang pengukur ukuran. |
| CRectTracker::HitTest | Mengembalikan posisi kursor saat ini yang terkait dengan CRectTracker objek. |
| CRectTracker::NormalizeHit | Menormalkan kode uji hit. |
| CRectTracker::OnChangedRect | Dipanggil ketika persegi panjang telah diubah ukurannya atau dipindahkan. |
| CRectTracker::SetCursor | Mengatur kursor, tergantung pada posisinya di atas persegi panjang. |
| CRectTracker::Track | Memungkinkan pengguna memanipulasi persegi panjang. |
| CRectTracker::TrackRubberBand | Memungkinkan pengguna untuk "rubber-band" pilihan. |
Anggota Data Publik
| Nama | Deskripsi |
|---|---|
| CRectTracker::m_nHandleSize | Menentukan ukuran handel pengukur ukuran. |
| CRectTracker::m_nStyle | Gaya pelacak saat ini. |
| CRectTracker::m_rect | Posisi saat ini (dalam piksel) persegi panjang. |
| CRectTracker::m_sizeMin | Menentukan lebar dan tinggi persegi minimum. |
Keterangan
CRectTracker tidak memiliki kelas dasar.
CRectTracker Meskipun kelas ini dirancang untuk memungkinkan pengguna berinteraksi dengan item OLE dengan menggunakan antarmuka grafis, penggunaannya tidak dibatasi untuk aplikasi berkemampuan OLE. Ini dapat digunakan di mana saja antarmuka pengguna seperti itu diperlukan.
CRectTracker batas dapat berupa garis padat atau putus-putus. Item dapat diberi batas yang ditetaskan atau dilapisi dengan pola yang ditetaskan untuk menunjukkan status item yang berbeda. Anda dapat menempatkan delapan handel pengulangan ukuran di batas luar atau dalam item. (Untuk penjelasan tentang handel pengulangan ukuran, lihat GetHandleMask.) Terakhir, memungkinkan CRectTracker Anda mengubah orientasi item selama pengubahan ukuran.
Untuk menggunakan CRectTracker, buat CRectTracker objek dan tentukan status tampilan mana yang diinisialisasi. Anda kemudian dapat menggunakan antarmuka ini untuk memberikan umpan balik visual pengguna tentang status item OLE saat ini yang terkait dengan CRectTracker objek.
Untuk informasi selengkapnya tentang menggunakan CRectTracker, lihat artikel Pelacak.
Hierarki Warisan
CRectTracker
Persyaratan
Header: afxext.h
CRectTracker::AdjustRect
Dipanggil oleh kerangka kerja saat persegi panjang pelacakan diubah ukurannya dengan menggunakan handel mengubah ukuran.
virtual void AdjustRect(
int nHandle,
LPRECT lpRect);
Parameter
nHandle
Indeks handel yang digunakan.
lpRect
Penunjuk ke ukuran persegi panjang saat ini. (Ukuran persegi diberikan oleh tinggi dan lebarnya.)
Keterangan
Perilaku default fungsi ini memungkinkan orientasi persegi panjang hanya berubah ketika Track dan TrackRubberBand dipanggil dengan inversi yang diizinkan.
Ambil alih fungsi ini untuk mengontrol penyesuaian persegi panjang pelacakan selama operasi penyeretan. Salah satu metodenya adalah menyesuaikan koordinat yang ditentukan oleh lpRect sebelum mengembalikan.
Fitur khusus yang tidak didukung secara langsung oleh CRectTracker, seperti snap-to-grid atau keep-aspect-ratio, dapat diimplementasikan dengan mengambil alih fungsi ini.
CRectTracker::CRectTracker
Membuat dan menginisialisasi CRectTracker objek.
CRectTracker();
CRectTracker(
LPCRECT lpSrcRect,
UINT nStyle);
Parameter
lpSrcRect
Koordinat objek persegi panjang.
nStyle
Menentukan gaya CRectTracker objek. Gaya berikut didukung:
CRectTracker::solidLineGunakan garis tebal untuk batas persegi panjang.CRectTracker::dottedLineGunakan garis putus-putus untuk batas persegi panjang.CRectTracker::hatchedBorderGunakan pola yang menetas untuk batas persegi panjang.CRectTracker::resizeInsideMengubah ukuran handel yang terletak di dalam persegi.CRectTracker::resizeOutsideMengubah ukuran handel yang terletak di luar persegi panjang.CRectTracker::hatchInsidePola yang menetas mencakup seluruh persegi panjang.
Keterangan
Konstruktor default menginisialisasi CRectTracker objek dengan nilai dari lpSrcRect dan menginisialisasi ukuran lain ke default sistem. Jika objek dibuat tanpa parameter, m_rect anggota data dan m_nStyle tidak diinisialisasi.
CRectTracker::D raw
Panggil fungsi ini untuk menggambar garis luar persegi panjang dan wilayah dalam.
void Draw(CDC* pDC) const;
Parameter
pDC
Arahkan ke konteks perangkat untuk menggambar.
Keterangan
Gaya pelacak menentukan bagaimana gambar dilakukan. Lihat konstruktor untuk CRectTracker informasi selengkapnya tentang gaya yang tersedia.
CRectTracker::D rawTrackerRect
Dipanggil oleh kerangka kerja setiap kali posisi pelacak telah berubah saat berada di Track dalam fungsi atau TrackRubberBand anggota.
virtual void DrawTrackerRect(
LPCRECT lpRect,
CWnd* pWndClipTo,
CDC* pDC,
CWnd* pWnd);
Parameter
lpRect
Penunjuk ke RECT yang berisi persegi untuk menggambar.
pWndClipTo
Penunjuk ke jendela untuk digunakan dalam mengklip persegi panjang.
pDC
Arahkan ke konteks perangkat untuk menggambar.
pWnd
Penunjuk ke jendela tempat gambar akan terjadi.
Keterangan
Implementasi default melakukan panggilan ke CDC::DrawFocusRect, yang menggambar persegi panjang putus-putus.
Ambil alih fungsi ini untuk memberikan umpan balik yang berbeda selama operasi pelacakan.
CRectTracker::GetHandleMask
Kerangka kerja memanggil fungsi anggota ini untuk mengambil masker untuk handel pengulangan ukuran persegi panjang.
virtual UINT GetHandleMask() const;
Tampilkan Nilai
Masker CRectTracker handel pengukur ukuran item.
Keterangan
Handel pengukur ukuran muncul di sisi dan sudut persegi panjang dan memungkinkan pengguna mengontrol bentuk dan ukuran persegi panjang.
Persegi memiliki 8 handel pengulangan ukuran bernomor 0-7. Setiap gagang pengulangan ukuran diwakili oleh sedikit di masker; nilai bit itu adalah 2^ n, di mana n adalah nomor handel ubah ukuran. Bit 0-3 sesuai dengan gagang pengukur ukuran sudut, dimulai dari kiri atas bergerak searah jajar. Bit 4-7 sesuai dengan handel pengukur ukuran samping yang dimulai dari bagian atas bergerak searah jarang. Ilustrasi berikut ini memperlihatkan gagang pengulangan ukuran persegi dan angka dan nilai handel pengulangan ukuran yang sesuai:

Implementasi GetHandleMask default mengembalikan masker bit sehingga handel mengubah ukuran muncul. Jika bit tunggal menyala, handel pengubahan ukuran yang sesuai akan digambar.
Ambil alih fungsi anggota ini untuk menyembunyikan atau memperlihatkan handel pengulangan ukuran yang ditunjukkan.
CRectTracker::GetTrueRect
Panggil fungsi ini untuk mengambil koordinat persegi panjang.
void GetTrueRect(LPRECT lpTrueRect) const;
Parameter
lpTrueRect
Penunjuk ke RECT struktur yang akan berisi koordinat CRectTracker perangkat objek.
Keterangan
Dimensi persegi panjang mencakup tinggi dan lebar gagang pengubah ukuran apa pun yang terletak di batas luar. Setelah kembali, lpTrueRect selalu merupakan persegi panjang yang dinormalisasi dalam koordinat perangkat.
CRectTracker::HitTest
Panggil fungsi ini untuk mengetahui apakah pengguna telah mengambil handel pengubah ukuran.
int HitTest(CPoint point) const;
Parameter
ujung
Intinya, dalam koordinat perangkat, untuk diuji.
Tampilkan Nilai
Nilai yang dikembalikan didasarkan pada jenis CRectTracker::TrackerHit enumerasi dan dapat memiliki salah satu nilai berikut:
CRectTracker::hitNothing-1CRectTracker::hitTopLeft0CRectTracker::hitTopRight1CRectTracker::hitBottomRight2CRectTracker::hitBottomLeft3CRectTracker::hitTop4CRectTracker::hitRight5CRectTracker::hitBottom6CRectTracker::hitLeft7CRectTracker::hitMiddle8
CRectTracker::m_nHandleSize
Ukurannya, dalam piksel, dari CRectTracker handel ubah ukuran.
int m_nHandleSize;
Keterangan
Diinisialisasi dengan nilai sistem default.
CRectTracker::m_rect
Posisi persegi panjang saat ini dalam koordinat klien (piksel).
CRect m_rect;
CRectTracker::m_sizeMin
Ukuran minimum persegi panjang.
CSize m_sizeMin;
Keterangan
Nilai default, cx dan cy, dihitung dari nilai sistem default untuk lebar batas. Anggota data ini hanya digunakan oleh AdjustRect fungsi anggota.
CRectTracker::m_nStyle
Gaya persegi panjang saat ini.
UINT m_nStyle;
Keterangan
Lihat CRectTracker::CRectTracker untuk daftar kemungkinan gaya.
CRectTracker::NormalizeHit
Panggil fungsi ini untuk mengonversi handel yang berpotensi terbalik.
int NormalizeHit(int nHandle) const;
Parameter
nHandle
Menangani yang dipilih oleh pengguna.
Tampilkan Nilai
Indeks handel yang dinormalisasi.
Keterangan
Ketika CRectTracker::Track atau CRectTracker::TrackRubberBand dipanggil dengan inverting yang diizinkan, dimungkinkan bagi persegi panjang untuk dibalik pada sumbu x, sumbu y, atau keduanya. Ketika ini terjadi, HitTest akan mengembalikan handel yang juga terbalik sehubungan dengan persegi panjang. Ini tidak pantas untuk menggambar umpan balik kursor karena umpan balik tergantung pada posisi layar persegi panjang, bukan bagian dari struktur data persegi panjang yang akan dimodifikasi.
CRectTracker::OnChangedRect
Dipanggil oleh kerangka kerja setiap kali persegi panjang pelacak telah berubah selama panggilan ke Track.
virtual void OnChangedRect(const CRect& rectOld);
Parameter
rectOld
Berisi koordinat CRectTracker perangkat lama objek.
Keterangan
Pada saat fungsi ini dipanggil, semua umpan balik yang digambar dengan DrawTrackerRect telah dihapus. Implementasi default fungsi ini tidak melakukan apa pun.
Ambil alih fungsi ini saat Anda ingin melakukan tindakan apa pun setelah persegi panjang diubah ukurannya.
CRectTracker::SetCursor
Panggil fungsi ini untuk mengubah bentuk kursor saat berada di CRectTracker atas wilayah objek.
BOOL SetCursor(
CWnd* pWnd,
UINT nHitTest) const;
Parameter
pWnd
Menunjuk ke jendela yang saat ini berisi kursor.
nHitTest
Hasil pengujian hit sebelumnya, dari pesan WM_SETCURSOR.
Tampilkan Nilai
Bukan nol jika hit sebelumnya melebihi persegi panjang pelacak; jika tidak, 0.
Keterangan
Panggil fungsi ini dari dalam fungsi jendela Anda yang menangani pesan WM_SETCURSOR (biasanya OnSetCursor).
CRectTracker::Track
Panggil fungsi ini untuk menampilkan antarmuka pengguna untuk mengubah ukuran persegi panjang.
BOOL Track(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = FALSE,
CWnd* pWndClipTo = NULL);
Parameter
pWnd
Objek jendela yang berisi persegi panjang.
ujung
Koordinat perangkat dari posisi mouse saat ini relatif terhadap area klien.
bAllowInvert
Jika TRUE, persegi panjang dapat dibalik di sepanjang sumbu x atau sumbu y; jika tidak FALSE.
pWndClipTo
Jendela tempat operasi menggambar akan dipotong. Jika NULL, pWnd digunakan sebagai persegi panjang kliping.
Tampilkan Nilai
Jika tombol ESC ditekan, proses pelacakan dihentikan, persegi panjang yang disimpan di pelacak tidak diubah, dan 0 dikembalikan. Jika perubahan dilakukan, dengan menggerakkan mouse dan melepaskan tombol mouse kiri, posisi dan/atau ukuran baru direkam dalam persegi panjang pelacak dan nonzero dikembalikan.
Keterangan
Ini biasanya dipanggil dari dalam fungsi aplikasi Anda yang menangani WM_LBUTTONDOWN pesan (biasanya OnLButtonDown).
Fungsi ini akan menangkap mouse hingga pengguna melepaskan tombol mouse kiri, menekan tombol ESC, atau menekan tombol kanan mouse. Saat pengguna memindahkan kursor mouse, umpan balik diperbarui dengan memanggil DrawTrackerRect dan OnChangedRect.
Jika bAllowInvert TRUE, persegi panjang pelacakan dapat dibalik pada sumbu x atau sumbu y.
CRectTracker::TrackRubberBand
Panggil fungsi ini untuk melakukan pemilihan karet-pita.
BOOL TrackRubberBand(
CWnd* pWnd,
CPoint point,
BOOL bAllowInvert = TRUE);
Parameter
pWnd
Objek jendela yang berisi persegi panjang.
ujung
Koordinat perangkat dari posisi mouse saat ini relatif terhadap area klien.
bAllowInvert
Jika TRUE, persegi panjang dapat dibalik di sepanjang sumbu x atau sumbu y; jika tidak FALSE.
Tampilkan Nilai
Bukan nol jika mouse telah bergerak dan persegi panjang tidak kosong; jika tidak, 0.
Keterangan
Biasanya dipanggil dari dalam fungsi aplikasi Anda yang menangani pesan WM_LBUTTONDOWN (biasanya OnLButtonDown).
Fungsi ini akan menangkap mouse hingga pengguna melepaskan tombol mouse kiri, menekan tombol ESC, atau menekan tombol kanan mouse. Saat pengguna memindahkan kursor mouse, umpan balik diperbarui dengan memanggil DrawTrackerRect dan OnChangedRect.
Pelacakan dilakukan dengan pilihan jenis karet-pita dari handel kanan bawah. Jika inversi diizinkan, persegi panjang dapat berukuran dengan menyeret ke atas dan ke kiri atau ke bawah dan ke kanan.
Lihat juga
PelACAK Sampel MFC
SAMPEL MFC DRAWCLI
Bagan Hierarki
Kelas COleResizeBar
Kelas CRect