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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk