Kelas CRectTracker
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::solidLine
Gunakan garis tebal untuk batas persegi panjang.CRectTracker::dottedLine
Gunakan garis putus-putus untuk batas persegi panjang.CRectTracker::hatchedBorder
Gunakan pola yang menetas untuk batas persegi panjang.CRectTracker::resizeInside
Mengubah ukuran handel yang terletak di dalam persegi.CRectTracker::resizeOutside
Mengubah ukuran handel yang terletak di luar persegi panjang.CRectTracker::hatchInside
Pola 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::hitTopLeft
0CRectTracker::hitTopRight
1CRectTracker::hitBottomRight
2CRectTracker::hitBottomLeft
3CRectTracker::hitTop
4CRectTracker::hitRight
5CRectTracker::hitBottom
6CRectTracker::hitLeft
7CRectTracker::hitMiddle
8
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