Bagikan melalui


Kelas CSnapInItemImpl

Kelas ini menyediakan metode untuk menerapkan objek simpul snap-in.

Penting

Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.

Sintaks

template <class T, BOOL bIsExtension = FALSE>
class ATL_NO_VTABLE CSnapInItemImpl : public CSnapInItem

Parameter

T
Kelas Anda, berasal dari CSnapInItemImpl.

bIsExtension
TRUE jika objek adalah ekstensi snap-in; jika tidak FALSE.

Anggota

Konstruktor Publik

Nama Deskripsi
CSnapInItemImpl::CSnapInItemImpl Konstruktor.

Metode Publik

Nama Deskripsi
CSnapInItemImpl::AddMenuItems Menambahkan item menu ke menu konteks.
CSnapInItemImpl::Command Dipanggil oleh konsol saat item menu kustom dipilih.
CSnapInItemImpl::CreatePropertyPages Menambahkan halaman ke lembar properti snap-in.
CSnapInItemImpl::FillData Menyalin informasi pada objek snap-in ke dalam aliran tertentu.
CSnapInItemImpl::GetResultPaneInfo Mengambil RESULTDATAITEM struktur snap-in.
CSnapInItemImpl::GetResultViewType Menentukan tipe tampilan yang digunakan oleh panel hasil.
CSnapInItemImpl::GetScopePaneInfo Mengambil SCOPEDATAITEM struktur snap-in.
CSnapInItemImpl::Beri tahu Dipanggil oleh konsol untuk memberi tahu snap-in tindakan yang diambil oleh pengguna.
CSnapInItemImpl::QueryPagesFor Dipanggil untuk melihat apakah simpul snap-in mendukung halaman properti.
CSnapInItemImpl::SetMenuInsertionFlags Memodifikasi bendera penyisipan menu untuk objek snap-in.
CSnapInItemImpl::SetToolbarButtonInfo Mengatur informasi tombol bilah alat yang ditentukan.
CSnapInItemImpl::UpdateMenuState Memperbarui status item menu konteks.
CSnapInItemImpl::UpdateToolbarButton Memperbarui status tombol bilah alat yang ditentukan.

Anggota Data Publik

Nama Deskripsi
CSnapInItemImpl::m_bstrDisplayName Nama objek snap-in.
CSnapInItemImpl::m_resultDataItem Struktur Windows RESULTDATAITEM yang CSnapInItemImpl digunakan oleh objek.
CSnapInItemImpl::m_scopeDataItem Struktur Windows SCOPEDATAITEM yang CSnapInItemImpl digunakan oleh objek.

Keterangan

CSnapInItemImpl menyediakan implementasi dasar untuk objek simpul snap-in, seperti menambahkan item menu dan toolbar, dan perintah penerusan untuk simpul snap-in ke fungsi handler yang sesuai. Fitur-fitur ini diimplementasikan menggunakan beberapa antarmuka dan jenis peta yang berbeda. Implementasi default menangani pemberitahuan yang dikirim ke objek node dengan menentukan instans kelas turunan yang benar lalu meneruskan pesan ke instans yang benar.

Hierarki Warisan

CSnapInItem

CSnapInItemImpl

Persyaratan

Header: atlsnap.h

CSnapInItemImpl::AddMenuItems

Metode ini mengimplementasikan fungsi Win32 IExtendContextMenu::AddMenuItems.

AddMenuItems(
    LPCONTEXTMENUCALLBACK piCallback,
    long* pInsertionAllowed,
    DATA_OBJECT_TYPES type);

Parameter

piCallback
[di] Penunjuk ke IContextMenuCallback yang dapat menambahkan item ke menu konteks.

pInsertionAllowed
[masuk, keluar] Mengidentifikasi titik penyisipan item menu yang ditentukan Konsol Manajemen Microsoft (MMC) yang dapat digunakan. Ini bisa menjadi kombinasi dari bendera berikut:

  • CCM_INSERTIONALLOWED_TOP Item dapat disisipkan di bagian atas menu konteks.

  • CCM_INSERTIONALLOWED_NEW Item dapat disisipkan dalam submenu Buat Baru.

  • CCM_INSERTIONALLOWED_TASK Item dapat disisipkan dalam submenu Tugas.

  • CCM_INSERTIONALLOWED_VIEW Item dapat disisipkan di menu tampilan toolbar atau di submenu Tampilan menu konteks panel hasil.

jenis
[di] Menentukan jenis objek. Ini dapat memiliki salah satu nilai berikut:

  • CCT_SCOPE Objek data untuk konteks panel cakupan.

  • CCT_RESULT Objek data untuk konteks panel hasil.

  • CCT_SNAPIN_MANAGER Objek data untuk konteks manajer snap-in.

  • objek CCT_UNINITIALIZED Data memiliki jenis yang tidak valid.

CSnapInItemImpl::Command

Metode ini mengimplementasikan fungsi Win32 IExtendContextMenu::Command.

Command(long lCommandID, DATA_OBJECT_TYPES type);

Parameter

lCommandID
[di] Menentukan pengidentifikasi perintah item menu.

jenis
[di] Menentukan jenis objek. Ini dapat memiliki salah satu nilai berikut:

  • CCT_SCOPE Objek data untuk konteks panel cakupan.

  • CCT_RESULT Objek data untuk konteks panel hasil.

  • CCT_SNAPIN_MANAGER Objek data untuk konteks manajer snap-in.

  • objek CCT_UNINITIALIZED Data memiliki jenis yang tidak valid.

CSnapInItemImpl::CreatePropertyPages

Metode ini mengimplementasikan fungsi Win32 IExtendPropertySheet::CreatePropertyPages.

CreatePropertyPages(
    LPPROPERTYSHEETCALLBACK lpProvider,
    long handle,
    IUnknown* pUnk,
    DATA_OBJECT_TYPES type);

Parameter

lpProvider
[di] Arahkan ke IPropertySheetCallback antarmuka.

menangani
[di] Menentukan handel yang digunakan untuk merutekan pesan pemberitahuan MMCN_PROPERTY_CHANGE ke kelas data yang sesuai.

Punk
[di] Arahkan ke IExtendPropertySheet antarmuka pada objek yang berisi informasi konteks tentang simpul.

jenis
[di] Menentukan jenis objek. Ini dapat memiliki salah satu nilai berikut:

  • CCT_SCOPE Objek data untuk konteks panel cakupan.

  • CCT_RESULT Objek data untuk konteks panel hasil.

  • CCT_SNAPIN_MANAGER Objek data untuk konteks manajer snap-in.

  • objek CCT_UNINITIALIZED Data memiliki jenis yang tidak valid.

CSnapInItemImpl::CSnapInItemImpl

Membuat CSnapInItemImpl objek.

CSnapInItemImpl();

CSnapInItemImpl::FillData

Fungsi ini dipanggil untuk mengambil informasi tentang item.

FillData(CLIPFORMAT cf, LPSTREAM pStream);

Parameter

Cf
[di] Format (teks, teks kaya, atau teks kaya dengan item OLE) dari Clipboard.

pStream
[di] Penunjuk ke aliran yang berisi data objek.

Keterangan

Untuk menerapkan fungsi ini dengan benar, salin informasi yang benar ke aliran (pStream), tergantung pada format Clipboard yang ditunjukkan oleh cf.

CSnapInItemImpl::GetResultViewType

Panggil fungsi ini untuk mengambil jenis tampilan untuk panel hasil objek snap-in.

GetResultViewType(
    LPOLESTR* ppViewType,
    long* pViewOptions);

Parameter

ppViewType
[out] Penunjuk ke alamat jenis tampilan yang dikembalikan.

pViewOptions
[out] Arahkan ke enumerasi MMC_VIEW_OPTIONS, yang menyediakan konsol dengan opsi yang ditentukan oleh snap-in pemilik. Nilai ini bisa menjadi salah satu dari berikut ini:

  • MMC_VIEW_OPTIONS_NOLISTVIEWS = 0x00000001 Memberi tahu konsol untuk menahan diri dari menyajikan pilihan tampilan daftar standar di menu Tampilan . Memungkinkan snap-in untuk menampilkan tampilan kustomnya sendiri hanya di panel tampilan hasil. Ini adalah satu-satunya bendera opsi yang ditentukan saat ini.

  • MMC_VIEW_OPTIONS_NONE = 0 Memungkinkan opsi tampilan default.

CSnapInItemImpl::GetScopePaneInfo

Panggil fungsi ini untuk mengambil SCOPEDATAITEM struktur snap-in.

GetScopePaneInfo (SCOPEDATAITEM* pScopeDataItem);

Parameter

pScopeDataItem
[out] Penunjuk ke SCOPEDATAITEM struktur CSnapInItemImpl objek.

CSnapInItemImpl::GetResultPaneInfo

Panggil fungsi ini untuk mengambil RESULTDATAITEM struktur snap-in.

GetResultPaneInfo (RESULTDATAITEM* pResultDataItem);

Parameter

pResultDataItem
[out] Penunjuk ke RESULTDATAITEM struktur CSnapInItemImpl objek.

CSnapInItemImpl::m_bstrDisplayName

Berisi string yang ditampilkan untuk item simpul.

CComBSTR m_bstrDisplayName;

CSnapInItemImpl::m_scopeDataItem

Struktur SCOPEDATAITEM objek data snap-in.

SCOPEDATAITEM m_scopeDataItem;

CSnapInItemImpl::m_resultDataItem

Struktur RESULTDATAITEM dari objek data snap-in.

RESULTDATAITEM m_resultDataItem;

CSnapInItemImpl::Beri tahu

Dipanggil ketika objek snap-in ditindaklanjuti oleh pengguna.

STDMETHOD(Notify)(
    MMC_NOTIFY_TYPE event,
    long arg,
    long param,
    IComponentData* pComponentData,
    IComponent* pComponent,
    DATA_OBJECT_TYPES type) = 0;

Parameter

event
[di] Mengidentifikasi tindakan yang diambil oleh pengguna. Pemberitahuan berikut dimungkinkan:

  • MMCN_ACTIVATE Dikirim saat jendela diaktifkan dan dinonaktifkan.

  • MMCN_ADD_IMAGES Dikirim untuk menambahkan gambar ke panel hasil.

  • MMCN_BTN_CLICK Terkirim saat pengguna mengklik salah satu tombol toolbar.

  • MMCN_CLICK Terkirim saat pengguna mengklik tombol mouse pada item tampilan daftar.

  • MMCN_DBLCLICK Terkirim saat pengguna mengklik dua kali tombol mouse pada item tampilan daftar.

  • MMCN_DELETE Dikirim untuk menginformasikan snap-in bahwa objek harus dihapus.

  • MMCN_EXPAND Dikirim saat folder perlu diperluas atau dikontrak.

  • MMCN_MINIMIZED Dikirim saat jendela sedang diminimalkan atau dimaksimalkan.

  • MMCN_PROPERTY_CHANGE Dikirim untuk memberi tahu objek snap-in bahwa tampilan objek snap-in akan berubah.

  • MMCN_REMOVE_CHILDREN Dikirim saat snap-in harus menghapus seluruh subtree yang telah ditambahkan di bawah simpul yang ditentukan.

  • MMCN_RENAME Dikirim pertama kali untuk mengkueri penggantian nama dan kedua kalinya untuk melakukan penggantian nama.

  • MMCN_SELECT Terkirim saat item di panel lingkup atau tampilan hasil dipilih.

  • MMCN_SHOW Dikirim saat item cakupan dipilih atau dibatalkan pilihannya untuk pertama kalinya.

  • MMCN_VIEW_CHANGE Dikirim saat snap-in dapat memperbarui semua tampilan saat perubahan terjadi.

Arg
[di] Tergantung pada jenis pemberitahuan.

param
[di] Tergantung pada jenis pemberitahuan.

pComponentData
[out] Penunjuk ke objek yang mengimplementasikan IComponentData. Parameter ini adalah NULL jika pemberitahuan tidak diteruskan dari IComponentData::Notify.

pComponent
[out] Penunjuk ke objek yang mengimplementasikan IComponent. Parameter ini adalah NULL jika pemberitahuan tidak diteruskan dari IComponent::Notify.

jenis
[di] Menentukan jenis objek. Ini dapat memiliki salah satu nilai berikut:

  • CCT_SCOPE Objek data untuk konteks panel cakupan.

  • CCT_RESULT Objek data untuk konteks panel hasil.

  • CCT_SNAPIN_MANAGER Objek data untuk konteks manajer snap-in.

  • objek CCT_UNINITIALIZED Data memiliki jenis yang tidak valid.

CSnapInItemImpl::QueryPagesFor

Dipanggil untuk melihat apakah simpul snap-in mendukung halaman properti.

QueryPagesFor(DATA_OBJECT_TYPES type);

CSnapInItemImpl::SetMenuInsertionFlags

Panggil fungsi ini untuk mengubah bendera penyisipan menu, yang ditentukan oleh pInsertionAllowed, untuk objek snap-in.

void SetMenuInsertionFlags(
    bool bBeforeInsertion,
    long* pInsertionAllowed);

Parameter

bBeforeInsertion
[di] Bukan nol jika fungsi harus dipanggil sebelum item ditambahkan ke menu konteks; jika tidak, 0.

pInsertionAllowed
[masuk, keluar] Mengidentifikasi titik penyisipan item menu yang ditentukan Konsol Manajemen Microsoft (MMC) yang dapat digunakan. Ini bisa menjadi kombinasi dari bendera berikut:

  • CCM_INSERTIONALLOWED_TOP Item dapat disisipkan di bagian atas menu konteks.

  • CCM_INSERTIONALLOWED_NEW Item dapat disisipkan dalam submenu Buat Baru.

  • CCM_INSERTIONALLOWED_TASK Item dapat disisipkan dalam submenu Tugas.

  • CCM_INSERTIONALLOWED_VIEW Item dapat disisipkan di menu tampilan toolbar atau di submenu Tampilan menu konteks panel hasil.

Keterangan

Jika Anda mengembangkan snap-in utama, Anda dapat mengatur ulang salah satu bendera penyisipan sebagai cara membatasi jenis item menu yang dapat ditambahkan ekstensi pihak ketiga. Misalnya, snap-in utama dapat menghapus bendera CCM_INSERTIONALLOWED_NEW untuk mencegah ekstensi menambahkan item menu Buat Baru mereka sendiri.

Anda tidak boleh mencoba mengatur bit dalam pInsertionAllowed yang awalnya dihapus. Versi MMC di masa mendatang dapat menggunakan bit yang saat ini tidak ditentukan sehingga Anda tidak boleh mengubah bit yang saat ini tidak ditentukan.

CSnapInItemImpl::SetToolbarButtonInfo

Panggil fungsi ini untuk mengubah gaya tombol toolbar apa pun, dari objek snap-in, sebelum toolbar dibuat.

void SetToolbarButtonInfo(
    UINT id,
    BYTE* fsState,
    BYTE* fsType);

Parameter

id
[di] ID tombol toolbar yang akan diatur.

fsState
[di] Bendera status tombol. Dapat berupa satu atau beberapa hal berikut:

  • TBSTATE_CHECKED Tombol memiliki gaya TBSTYLE_CHECKED dan sedang ditekan.

  • TBSTATE_ENABLED Tombol menerima input pengguna. Tombol yang tidak memiliki status ini tidak menerima input pengguna dan berwarna abu-abu.

  • TBSTATE_HIDDEN Tombol tidak terlihat dan tidak dapat menerima input pengguna.

  • TBSTATE_INDETERMINATE Tombol berwarna abu-abu.

  • TBSTATE_PRESSED Tombol sedang ditekan.

  • TBSTATE_WRAP Pemisah baris mengikuti tombol . Tombol juga harus memiliki TBSTATE_ENABLED.

fsType
[di] Bendera status tombol. Dapat berupa satu atau beberapa hal berikut:

  • TBSTYLE_BUTTON Membuat tombol tekan standar.

  • TBSTYLE_CHECK Membuat tombol yang beralih antara status yang ditekan dan tidak ditekan setiap kali pengguna mengkliknya. Tombol memiliki warna latar belakang yang berbeda ketika berada dalam status ditekan.

  • TBSTYLE_CHECKGROUP Membuat tombol centang yang tetap ditekan hingga tombol lain dalam grup ditekan.

  • TBSTYLE_GROUP Membuat tombol yang tetap ditekan hingga tombol lain dalam grup ditekan.

  • TBSTYLE_SEP Membuat pemisah, memberikan celah kecil di antara grup tombol. Tombol yang memiliki gaya ini tidak menerima input pengguna.

CSnapInItemImpl::UpdateMenuState

Panggil fungsi ini untuk mengubah item menu sebelum dimasukkan ke dalam menu konteks objek snap-in.

void UpdateMenuState(
    UINT id,
    LPTSTR pBuf,
    UINT* flags);

Parameter

id
[di] ID item menu yang akan diatur.

pBuf
[di] Penunjuk ke string untuk item menu yang akan diperbarui.

flags
[di] Menentukan bendera status baru. Ini bisa menjadi kombinasi dari bendera berikut:

  • MF_POPUP Menentukan bahwa ini adalah submenu dalam menu konteks. Item menu, titik penyisipan, dan submenu lebih lanjut dapat ditambahkan ke submenu ini menggunakannya lCommandID sebagai IInsertionPointID.

  • MF_BITMAP dan MF_OWNERDRAW Bendera ini tidak diizinkan dan akan menghasilkan nilai pengembalian E_INVALIDARG.

  • MF_SEPARATOR Menggambar garis pembagian horizontal. Hanya IContextMenuProvider diizinkan untuk menambahkan item menu dengan set MF_SEPARATOR.

  • MF_CHECKED Menempatkan tanda centang di samping item menu.

  • MF_DISABLED Menonaktifkan item menu sehingga tidak dapat dipilih, tetapi bendera tidak berwarna abu-abu.

  • MF_ENABLED Mengaktifkan item menu sehingga dapat dipilih, memulihkannya dari status abu-abu.

  • MF_GRAYED Menonaktifkan item menu, membuatnya berwarna abu-abu sehingga tidak dapat dipilih.

  • MF_MENUBARBREAK Functions sama dengan bendera MF_MENUBREAK untuk bilah menu. Untuk menu drop-down, submenu, atau menu pintasan, kolom baru dipisahkan dari kolom lama dengan garis vertikal.

  • MF_MENUBREAK Menempatkan item pada baris baru (untuk bilah menu) atau di kolom baru (untuk menu drop-down, submenu, atau menu pintasan) tanpa memisahkan kolom.

  • MF_UNCHECKED Tidak menempatkan tanda centang di samping item (default).

Grup bendera berikut tidak dapat digunakan bersama-sama:

  • MF_DISABLED, MF_ENABLED, dan MF_GRAYED.

  • MF_MENUBARBREAK dan MF_MENUBREAK.

  • MF_CHECKED dan MF_UNCHECKED.

CSnapInItemImpl::UpdateToolbarButton

Panggil fungsi ini untuk mengubah tombol toolbar, dari objek snap-in, sebelum ditampilkan.

BOOL UpdateToolbarButton(UINT id, BYTE fsState);

Parameter

id
Menentukan ID tombol tombol bilah alat yang akan diperbarui.

fsState
Menentukan status tombol bilah alat. Jika status ini akan diatur, kembalikan TRUE. Ini bisa menjadi kombinasi dari bendera berikut:

  • DIAKTIFKAN Tombol menerima input pengguna. Tombol yang tidak memiliki status ini tidak menerima input pengguna dan berwarna abu-abu.

  • DICENTANG Tombol memiliki gaya DIPERIKSA dan sedang ditekan.

  • TERSEMBUNYI Tombol tidak terlihat dan tidak dapat menerima input pengguna.

  • INDETERMINATE Tombol berwarna abu-abu.

  • TOMBOL DITEKAN Tombol sedang ditekan.

Lihat juga

Gambaran Umum Kelas