Bagikan melalui


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:

Mengubah ukuran nomor handel.

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

  • CRectTracker::hitTopLeft 0

  • CRectTracker::hitTopRight 1

  • CRectTracker::hitBottomRight 2

  • CRectTracker::hitBottomLeft 3

  • CRectTracker::hitTop 4

  • CRectTracker::hitRight 5

  • CRectTracker::hitBottom 6

  • CRectTracker::hitLeft 7

  • CRectTracker::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