Bagikan melalui


Kontrol ActiveX MFC: Menambahkan Metode Kustom

Metode kustom berbeda dari metode stok karena belum diimplementasikan oleh COleControl. Anda harus menyediakan implementasi untuk setiap metode kustom yang Anda tambahkan ke kontrol Anda.

Penting

ActiveX adalah teknologi warisan yang tidak boleh digunakan untuk pengembangan baru. Untuk informasi selengkapnya tentang teknologi modern yang menggantikan ActiveX, lihat Kontrol ActiveX.

Pengguna kontrol ActiveX dapat memanggil metode kustom kapan saja untuk melakukan tindakan khusus kontrol. Entri peta pengiriman untuk metode kustom adalah formulir DISP_FUNCTION.

Menambahkan Metode Kustom Dengan Wizard Penambahan Metode

Prosedur berikut menunjukkan penambahan metode kustom PtInCircle ke kode kerangka kontrol ActiveX. PtInCircle menentukan apakah koordinat yang diteruskan ke kontrol berada di dalam atau di luar lingkaran. Prosedur yang sama ini juga dapat digunakan untuk menambahkan metode kustom lainnya. Ganti nama metode kustom Anda dan parameternya untuk nama dan parameter metode PtInCircle.

Nota

Contoh ini menggunakan InCircle fungsi dari artikel Peristiwa. Untuk informasi selengkapnya tentang fungsi ini, lihat artikel Kontrol ActiveX MFC: Menambahkan Peristiwa Kustom ke Kontrol ActiveX.

Untuk menambahkan metode kustom PtInCircle menggunakan Wizard Tambahkan Metode

  1. Muat proyek kontrol tersebut.

  2. Di Tampilan Kelas, perluas simpul pustaka kontrol Anda.

  3. Klik kanan simpul antarmuka kontrol Anda (simpul kedua dari simpul pustaka) untuk membuka menu pintasan.

  4. Dari menu pintasan, klik Tambahkan lalu klik Tambahkan Metode.

    Ini membuka Panduan Tambahkan Metode.

  5. Dalam kotak Nama Metode , ketik PtInCircle.

  6. Dalam kotak Nama Internal , ketik nama fungsi internal metode atau gunakan nilai default (dalam hal ini, PtInCircle).

  7. Dalam kotak Jenis Pengembalian , klik VARIANT_BOOL untuk jenis pengembalian metode.

  8. Menggunakan kontrol Jenis Parameter dan Nama Parameter , tambahkan parameter yang disebut xCoord (ketik OLE_XPOS_PIXELS).

  9. Menggunakan kontrol Jenis Parameter dan Nama Parameter , tambahkan parameter yang disebut yCoord (ketik OLE_YPOS_PIXELS).

  10. Klik Selesai.

Menambahkan Perubahan Wizard Metode untuk Metode Kustom

Saat Anda menambahkan metode kustom, Wizard Penambahan Metode membuat beberapa perubahan pada header kelas kontrol (.H) dan file implementasi (.CPP). Baris berikut ditambahkan ke deklarasi peta pengiriman di header kelas kontrol (. H) file:

VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Kode ini menyatakan handler metode pengiriman yang disebut PtInCircle. Fungsi ini dapat dipanggil oleh pengguna kontrol menggunakan nama PtInCircleeksternal .

Baris berikut ditambahkan ke file .IDL kontrol:

[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Baris ini menetapkan metode PtInCircle nomor ID tertentu, posisi metode dalam daftar metode dan properti di Wizard Tambah Metode. Karena Wizard Tambahkan Metode digunakan untuk menambahkan metode kustom, entri untuk itu ditambahkan secara otomatis ke proyek . File IDL.

Selain itu, baris berikut, terletak dalam implementasi (. CPP) dari kelas kontrol, ditambahkan ke peta pengiriman kontrol:

DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

Makro DISP_FUNCTION memetakan metode PtInCircle ke fungsi handler kontrol, PtInCircle, menyatakan jenis pengembalian menjadi VARIANT_BOOL, dan mendeklarasikan dua parameter jenis VTS_XPOS_PIXELS dan VTS_YPOSPIXELS untuk diteruskan ke PtInCircle.

Terakhir, Wizard Tambah Metode menambahkan fungsi stub CSampleCtrl::PtInCircle ke bagian bawah berkas implementasi kontrol (.CPP). Untuk PtInCircle berfungsi seperti yang dinyatakan sebelumnya, harus dimodifikasi sebagai berikut:

VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   CPoint point(xCoord, yCoord);
   return InCircle(point);
}

Lihat juga

Kontrol ActiveX MFC
Ikon Tampilan Kelas dan Browser Objek