Bagikan melalui


Fungsi Global Kontrol Komposit

Fungsi-fungsi ini menyediakan dukungan untuk membuat kotak dialog, dan untuk membuat, menghosting, dan melisensikan kontrol ActiveX.

Penting

Fungsi yang tercantum dalam tabel berikut tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.

Function Deskripsi
AtlAxDialogBox Membuat kotak dialog modal dari templat dialog yang disediakan oleh pengguna. Kotak dialog yang dihasilkan dapat berisi kontrol ActiveX.
AtlAxCreateDialog Membuat kotak dialog tanpa mode dari templat dialog yang disediakan oleh pengguna. Kotak dialog yang dihasilkan dapat berisi kontrol ActiveX.
AtlAxCreateControl Membuat kontrol ActiveX, menginisialisasinya, dan menghostingnya di jendela yang ditentukan.
AtlAxCreateControlEx Membuat kontrol ActiveX, menginisialisasinya, menghostingnya di jendela yang ditentukan, dan mengambil penunjuk antarmuka (atau penunjuk) dari kontrol.
AtlAxCreateControlLic Membuat kontrol ActiveX berlisensi, menginisialisasinya, dan menghostingnya di jendela yang ditentukan.
AtlAxCreateControlLicEx Membuat kontrol ActiveX berlisensi, menginisialisasinya, menghostingnya di jendela yang ditentukan, dan mengambil penunjuk antarmuka (atau penunjuk) dari kontrol.
AtlAxAttachControl Melampirkan kontrol yang dibuat sebelumnya ke jendela yang ditentukan.
AtlAxGetHost Digunakan untuk mendapatkan penunjuk antarmuka langsung ke kontainer untuk jendela tertentu (jika ada), mengingat handelnya.
AtlAxGetControl Digunakan untuk mendapatkan penunjuk antarmuka langsung ke kontrol yang terkandung di dalam jendela tertentu (jika ada), mengingat handelnya.
AtlSetChildSite Menginisialisasi IUnknown situs anak.
AtlAxWinInit Menginisialisasi kode hosting untuk objek AxWin.
AtlAxWinTerm Batal menginisialisasi kode hosting untuk objek AxWin.
AtlGetObjectSourceInterface Mengembalikan informasi tentang antarmuka sumber default objek.

Persyaratan

Header: atlhost.h

AtlAxDialogBox

Membuat kotak dialog modal dari templat dialog yang disediakan oleh pengguna.

ATLAPI_(int) AtlAxDialogBox(
    HINSTANCE hInstance,
    LPCWSTR lpTemplateName,
    HWND hWndParent,
    DLGPROC lpDialogProc,
    LPARAM dwInitParam);

Parameter

hInstance
[di] Mengidentifikasi instans modul yang file yang dapat dieksekusi berisi templat kotak dialog.

lpTemplateName
[di] Mengidentifikasi templat kotak dialog. Parameter ini adalah penunjuk ke string karakter null-terminated yang menentukan nama templat kotak dialog atau nilai bilangan bulat yang menentukan pengidentifikasi sumber daya templat kotak dialog. Jika parameter menentukan pengidentifikasi sumber daya, kata urutan tingginya harus nol dan kata berurutan rendah harus berisi pengidentifikasi. Anda dapat menggunakan makro MAKEINTRESOURCE untuk membuat nilai ini.

hWndParent
[di] Mengidentifikasi jendela yang memiliki kotak dialog.

lpDialogProc
[di] Menunjuk ke prosedur kotak dialog. Untuk informasi selengkapnya tentang prosedur kotak dialog, lihat DialogProc.

dwInitParam
[di] Menentukan nilai yang akan diteruskan ke kotak dialog dalam parameter lParam dari pesan WM_INITDIALOG.

Tampilkan Nilai

Salah satu nilai HRESULT standar.

Keterangan

Untuk menggunakan AtlAxDialogBox dengan templat dialog yang berisi kontrol ActiveX, tentukan string CLSID, APPID, atau URL yang valid sebagai bidang teks bagian CONTROL dari sumber daya dialog, bersama dengan "AtlAxWin80" sebagai bidang nama kelas di bawah bagian yang sama. Berikut ini menunjukkan seperti apa bagian CONTROL yang valid:

CONTROL    "{04FE35E9-ADBC-4f1d-83FE-8FA4D1F71C7F}", IDC_TEST,
    "AtlAxWin80", WS_GROUP | WS_TABSTOP, 0, 0, 100, 100

Untuk informasi selengkapnya tentang mengedit skrip sumber daya, lihat Cara: Membuat Sumber Daya. Untuk informasi selengkapnya tentang pernyataan definisi sumber daya kontrol, lihat Parameter Kontrol Umum di bawah Windows SDK: Alat SDK.

Untuk informasi selengkapnya tentang kotak dialog secara umum, lihat DialogBox dan CreateDialogParam di Windows SDK.

AtlAxCreateDialog

Membuat kotak dialog tanpa mode dari templat dialog yang disediakan oleh pengguna.

ATLAPI_(HWND) AtlAxCreateDialog(
    HINSTANCE hInstance,
    LPCWSTR lpTemplateName,
    HWND hWndParent,
    DLGPROC lpDialogProc,
    LPARAM dwInitParam);

Parameter

hInstance
[di] Mengidentifikasi instans modul yang file yang dapat dieksekusi berisi templat kotak dialog.

lpTemplateName
[di] Mengidentifikasi templat kotak dialog. Parameter ini adalah penunjuk ke string karakter null-terminated yang menentukan nama templat kotak dialog atau nilai bilangan bulat yang menentukan pengidentifikasi sumber daya templat kotak dialog. Jika parameter menentukan pengidentifikasi sumber daya, kata urutan tingginya harus nol dan kata berurutan rendah harus berisi pengidentifikasi. Anda dapat menggunakan makro MAKEINTRESOURCE untuk membuat nilai ini.

hWndParent
[di] Mengidentifikasi jendela yang memiliki kotak dialog.

lpDialogProc
[di] Menunjuk ke prosedur kotak dialog. Untuk informasi selengkapnya tentang prosedur kotak dialog, lihat DialogProc.

dwInitParam
[di] Menentukan nilai yang akan diteruskan ke kotak dialog dalam parameter lParam dari pesan WM_INITDIALOG.

Tampilkan Nilai

Salah satu nilai HRESULT standar.

Keterangan

Kotak dialog yang dihasilkan dapat berisi kontrol ActiveX.

Lihat CreateDialog dan CreateDialogParam di Windows SDK.

AtlAxCreateControl

Membuat kontrol ActiveX, menginisialisasinya, dan menghostingnya di jendela yang ditentukan.

ATLAPI AtlAxCreateControl(
    LPCOLESTR lpszName,
    HWND hWnd,
    IStream* pStream,
    IUnknown** ppUnkContainer);

Parameter

lpszName
Penunjuk ke string yang akan diteruskan ke kontrol. Harus diformat dengan salah satu cara berikut:

  • ProgID seperti "MSCAL.Calendar.7"

  • CLSID seperti "{8E27C92B-1264-101C-8A2F-040224009C02}"

  • URL seperti "<https://www.microsoft.com>"

  • Referensi ke dokumen Aktif seperti "file://\\\Documents\MyDoc.doc"

  • Fragmen HTML seperti "MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"

    Catatan

    "MSHTML:" harus mendahului fragmen HTML sehingga ditetapkan sebagai aliran MSHTML.

hWnd
[di] Tangani ke jendela tempat kontrol akan dilampirkan.

pStream
[di] Penunjuk ke aliran yang digunakan untuk menginisialisasi properti kontrol. Bisa NULL.

ppUnkContainer
[out] Alamat pointer yang akan menerima IUnknown kontainer. Bisa NULL.

Tampilkan Nilai

Salah satu nilai HRESULT standar.

Keterangan

Fungsi global ini memberi Anda hasil yang sama dengan memanggil AtlAxCreateControlEx(lpszName, hWnd, pStream, NULL, NULL, NULL);.

Untuk membuat kontrol ActiveX berlisensi, lihat AtlAxCreateControlLic.

AtlAxCreateControlEx

Membuat kontrol ActiveX, menginisialisasinya, dan menghostingnya di jendela yang ditentukan. Penunjuk antarmuka dan sink peristiwa untuk kontrol baru juga dapat dibuat.

ATLAPI AtlAxCreateControlEx(
    LPCOLESTR lpszName,
    HWND hWnd,
    IStream* pStream,
    IUnknown** ppUnkContainer,
    IUnknown** ppUnkControl,
    REFIID iidSink = IID_NULL,
    IUnknown* punkSink = NULL);

Parameter

lpszName
Penunjuk ke string yang akan diteruskan ke kontrol. Harus diformat dengan salah satu cara berikut:

  • ProgID seperti "MSCAL.Calendar.7"

  • CLSID seperti "{8E27C92B-1264-101C-8A2F-040224009C02}"

  • URL seperti "<https://www.microsoft.com>"

  • Referensi ke dokumen Aktif seperti "file://\\\Documents\MyDoc.doc"

  • Fragmen HTML seperti "MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"

    Catatan

    "MSHTML:" harus mendahului fragmen HTML sehingga ditetapkan sebagai aliran MSHTML.

hWnd
[di] Tangani ke jendela tempat kontrol akan dilampirkan.

pStream
[di] Penunjuk ke aliran yang digunakan untuk menginisialisasi properti kontrol. Bisa NULL.

ppUnkContainer
[out] Alamat pointer yang akan menerima IUnknown kontainer. Bisa NULL.

ppUnkControl
[out] Alamat pointer yang akan menerima IUnknown kontrol yang dibuat. Bisa NULL.

iidSink
Pengidentifikasi antarmuka antarmuka keluar pada objek yang terkandung.

punkSink
Penunjuk ke IUnknown antarmuka objek sink yang akan disambungkan ke titik koneksi yang ditentukan oleh iidSink pada objek yang terkandung setelah objek yang terkandung berhasil dibuat.

Tampilkan Nilai

Salah satu nilai HRESULT standar.

Keterangan

AtlAxCreateControlEx mirip dengan AtlAxCreateControl tetapi juga memungkinkan Anda untuk menerima penunjuk antarmuka ke kontrol yang baru dibuat dan menyiapkan sink peristiwa untuk menerima peristiwa yang diaktifkan oleh kontrol.

Untuk membuat kontrol ActiveX berlisensi, lihat AtlAxCreateControlLicEx.

AtlAxCreateControlLic

Membuat kontrol ActiveX berlisensi, menginisialisasinya, dan menghostingnya di jendela yang ditentukan.

ATLAPI AtlAxCreateControlLic(
    LPCOLESTR lpszName,
    HWND hWnd,
    IStream* pStream,
    IUnknown** ppUnkContainer,
    BSTR bstrLic = NULL);

Parameter

lpszName
Penunjuk ke string yang akan diteruskan ke kontrol. Harus diformat dengan salah satu cara berikut:

  • ProgID seperti "MSCAL.Calendar.7"

  • CLSID seperti "{8E27C92B-1264-101C-8A2F-040224009C02}"

  • URL seperti "<https://www.microsoft.com>"

  • Referensi ke dokumen Aktif seperti "file://\\\Documents\MyDoc.doc"

  • Fragmen HTML seperti "MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"

    Catatan

    "MSHTML:" harus mendahului fragmen HTML sehingga ditetapkan sebagai aliran MSHTML.

hWnd
Tangani ke jendela tempat kontrol akan dilampirkan.

pStream
Penunjuk ke aliran yang digunakan untuk menginisialisasi properti kontrol. Bisa NULL.

ppUnkContainer
Alamat pointer yang akan menerima IUnknown kontainer. Bisa NULL.

bstrLic
BSTR yang berisi lisensi untuk kontrol.

Tampilkan Nilai

Salah satu nilai HRESULT standar.

Contoh

Lihat Hosting Kontrol ActiveX Menggunakan ATL AXHost untuk sampel cara menggunakan AtlAxCreateControlLic.

AtlAxCreateControlLicEx

Membuat kontrol ActiveX berlisensi, menginisialisasinya, dan menghostingnya di jendela yang ditentukan. Penunjuk antarmuka dan sink peristiwa untuk kontrol baru juga dapat dibuat.

ATLAPI AtlAxCreateControlLicEx(
    LPCOLESTR lpszName,
    HWND hWnd,
    IStream* pStream,
    IUnknown** ppUnkContainer,
    IUnknown** ppUnkControl,
    REFIID iidSink = IID_NULL,
    IUnknown* punkSink = NULL,
    BSTR bstrLic = NULL);

Parameter

lpszName
Penunjuk ke string yang akan diteruskan ke kontrol. Harus diformat dengan salah satu cara berikut:

  • ProgID seperti "MSCAL.Calendar.7"

  • CLSID seperti "{8E27C92B-1264-101C-8A2F-040224009C02}"

  • URL seperti "<https://www.microsoft.com>"

  • Referensi ke dokumen Aktif seperti "file://\\\Documents\MyDoc.doc"

  • Fragmen HTML seperti "MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"

    Catatan

    "MSHTML:" harus mendahului fragmen HTML sehingga ditetapkan sebagai aliran MSHTML.

hWnd
Tangani ke jendela tempat kontrol akan dilampirkan.

pStream
Penunjuk ke aliran yang digunakan untuk menginisialisasi properti kontrol. Bisa NULL.

ppUnkContainer
Alamat pointer yang akan menerima IUnknown kontainer. Bisa NULL.

ppUnkControl
[out] Alamat pointer yang akan menerima IUnknown kontrol yang dibuat. Bisa NULL.

iidSink
Pengidentifikasi antarmuka antarmuka keluar pada objek yang terkandung.

punkSink
Penunjuk ke IUnknown antarmuka objek sink yang akan disambungkan ke titik koneksi yang ditentukan oleh iidSink pada objek yang terkandung setelah objek yang terkandung berhasil dibuat.

bstrLic
BSTR yang berisi lisensi untuk kontrol.

Tampilkan Nilai

Salah satu nilai HRESULT standar.

Keterangan

AtlAxCreateControlLicEx mirip dengan AtlAxCreateControlLic tetapi juga memungkinkan Anda menerima penunjuk antarmuka ke kontrol yang baru dibuat dan menyiapkan sink peristiwa untuk menerima peristiwa yang diaktifkan oleh kontrol.

Contoh

Lihat Hosting Kontrol ActiveX Menggunakan ATL AXHost untuk sampel cara menggunakan AtlAxCreateControlLicEx.

AtlAxAttachControl

Melampirkan kontrol yang dibuat sebelumnya ke jendela yang ditentukan.

ATLAPI AtlAxAttachControl(
    IUnknown* pControl,
    HWND hWnd,
    IUnknown** ppUnkContainer);

Parameter

pControl
[di] Penunjuk ke IUnknown kontrol.

hWnd
[di] Tangani ke jendela yang akan menghosting kontrol.

ppUnkContainer
[out] Penunjuk ke penunjuk ke IUnknown objek kontainer.

Tampilkan Nilai

Salah satu nilai HRESULT standar.

Keterangan

Gunakan AtlAxCreateControlEx dan AtlAxCreateControl untuk membuat dan melampirkan kontrol secara bersamaan.

Catatan

Objek kontrol yang sedang dilampirkan harus diinisialisasi dengan benar sebelum memanggil AtlAxAttachControl.

AtlAxGetHost

Mendapatkan penunjuk antarmuka langsung ke kontainer untuk jendela tertentu (jika ada), mengingat handelnya.

ATLAPI AtlAxGetHost(HWND h, IUnknown** pp);

Parameter

h
[di] Handel ke jendela yang menghosting kontrol.

Pp
[out] Kontainer IUnknown kontrol.

Tampilkan Nilai

Salah satu nilai HRESULT standar.

AtlAxGetControl

Mendapatkan penunjuk antarmuka langsung ke kontrol yang terkandung di dalam jendela tertentu mengingat handelnya.

ATLAPI AtlAxGetControl(HWND h, IUnknown** pp);

Parameter

h
[di] Handel ke jendela yang menghosting kontrol.

Pp
[out] Kontrol IUnknown yang dihosting.

Tampilkan Nilai

Salah satu nilai HRESULT standar.

AtlSetChildSite

Panggil fungsi ini untuk mengatur situs objek anak ke IUnknown objek induk.

HRESULT AtlSetChildSite(IUnknown* punkChild, IUnknown* punkParent);

Parameter

punkChild
[di] Penunjuk ke IUnknown antarmuka anak.

punkParent
[di] Penunjuk ke IUnknown antarmuka induk.

Tampilkan Nilai

Nilai HRESULT standar.

AtlAxWinInit

Fungsi ini menginisialisasi kode hosting kontrol ATL dengan mendaftarkan kelas jendela "AtlAxWin80" dan "AtlAxWinLic80" ditambah beberapa pesan jendela kustom.

ATLAPI_(BOOL) AtlAxWinInit();

Tampilkan Nilai

Bukan nol jika inisialisasi kode hosting kontrol berhasil; jika tidak FALSE.

Keterangan

Fungsi ini harus dipanggil sebelum menggunakan API hosting kontrol ATL. Setelah panggilan ke fungsi ini, kelas jendela "AtlAxWin" dapat digunakan dalam panggilan ke CreateWindow atau CreateWindowEx, seperti yang dijelaskan di Windows SDK.

AtlAxWinTerm

Fungsi ini tidak menginisialisasi kode hosting kontrol ATL dengan membatalkan pendaftaran kelas jendela "AtlAxWin80" dan "AtlAxWinLic80 ".

inline BOOL AtlAxWinTerm();

Tampilkan Nilai

Selalu mengembalikan TRUE.

Keterangan

Fungsi ini hanya memanggil UnregisterClass seperti yang dijelaskan di Windows SDK.

Panggil fungsi ini untuk membersihkan setelah semua jendela host yang ada telah dihancurkan jika Anda memanggil AtlAxWinInit dan Anda tidak perlu lagi membuat jendela host. Jika Anda tidak memanggil fungsi ini, kelas jendela akan dibatalkan pendaftarannya secara otomatis saat proses berakhir.

AtlGetObjectSourceInterface

Panggil fungsi ini untuk mengambil informasi tentang antarmuka sumber default objek.

ATLAPI AtlGetObjectSourceInterface(
    IUnknown* punkObj,
    GUID* plibid,
    IID* piid,
    unsigned short* pdwMajor,
    unsigned short* pdwMinor);

Parameter

punkObj
[di] Penunjuk ke objek tempat informasi akan dikembalikan.

plibid
[out] Penunjuk ke LIBID dari pustaka jenis yang berisi definisi antarmuka sumber.

piid
[out] Penunjuk ke ID antarmuka antarmuka sumber default objek.

pdwMajor
[out] Penunjuk ke nomor versi utama pustaka jenis yang berisi definisi antarmuka sumber.

pdwMinor
[out] Penunjuk ke nomor versi minor dari pustaka jenis yang berisi definisi antarmuka sumber.

Tampilkan Nilai

Nilai HRESULT standar.

Keterangan

AtlGetObjectSourceInterface dapat memberi Anda ID antarmuka antarmuka sumber default, bersama dengan LIBID dan nomor versi utama dan minor dari pustaka jenis yang menjelaskan antarmuka tersebut.

Catatan

Agar fungsi ini berhasil mengambil informasi yang diminta, objek yang diwakili oleh punkObj harus menerapkan IDispatch (dan mengembalikan informasi jenis melalui IDispatch::GetTypeInfo) ditambah juga harus menerapkan baik IProvideClassInfo2 atau IPersist. Informasi jenis untuk antarmuka sumber harus berada di pustaka jenis yang sama dengan informasi jenis untuk IDispatch.

Contoh

Contoh di bawah ini menunjukkan bagaimana Anda dapat menentukan kelas sink peristiwa, CEasySink, yang mengurangi jumlah argumen templat yang dapat Anda teruskan ke IDispEventImpl hal-hal penting. EasyAdvise dan EasyUnadvise gunakan AtlGetObjectSourceInterface untuk menginisialisasi anggota IDispEventImpl sebelum memanggil DispEventAdvise atau DispEventUnadvise.

template <UINT nID, class T>
class CEasySink : public IDispEventImpl<nID, T>
{
public:
   HRESULT EasyAdvise(IUnknown* pUnk) 
   { 
      AtlGetObjectSourceInterface(pUnk,
         &m_libid, &m_iid, &m_wMajorVerNum, &m_wMinorVerNum);
      return DispEventAdvise(pUnk, &m_iid);
   }
   HRESULT EasyUnadvise(IUnknown* pUnk) 
   {
      AtlGetObjectSourceInterface(pUnk,
         &m_libid, &m_iid, &m_wMajorVerNum, &m_wMinorVerNum);
      return DispEventUnadvise(pUnk, &m_iid);
   }
};

Baca juga

Fungsi
Makro Kontrol Komposit