Bileşik Denetim Genel İşlevleri
Bu işlevler, iletişim kutusu oluşturma ve ActiveX denetimlerini oluşturma, barındırma ve lisanslama desteği sağlar.
Önemli
Aşağıdaki tabloda listelenen işlevler, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.
İşlev | Tanım |
---|---|
AtlAxDialogBox | Kullanıcı tarafından sağlanan bir iletişim kutusu şablonundan kalıcı bir iletişim kutusu oluşturur. Sonuçta elde edilen iletişim kutusu ActiveX denetimleri içerebilir. |
AtlAxCreateDialog | Kullanıcı tarafından sağlanan bir iletişim kutusu şablonundan modsuz bir iletişim kutusu oluşturur. Sonuçta elde edilen iletişim kutusu ActiveX denetimleri içerebilir. |
AtlAxCreateControl | Bir ActiveX denetimi oluşturur, onu başlatır ve belirtilen pencerede barındırır. |
AtlAxCreateControlEx | Bir ActiveX denetimi oluşturur, bunu başlatır, belirtilen pencerede barındırıyor ve denetimden bir arabirim işaretçisi (veya işaretçiler) alır. |
AtlAxCreateControlLic | Lisanslı bir ActiveX denetimi oluşturur, onu başlatır ve belirtilen pencerede barındırır. |
AtlAxCreateControlLicEx | Lisanslı bir ActiveX denetimi oluşturur, bunu başlatır, belirtilen pencerede barındırıyor ve denetimden bir arabirim işaretçisi (veya işaretçiler) alır. |
AtlAxAttachControl | Önceden oluşturulmuş bir denetimi belirtilen pencereye ekler. |
AtlAxGetHost | Tutamacı göz önüne alındığında, belirtilen bir pencere (varsa) için kapsayıcıya doğrudan arabirim işaretçisi almak için kullanılır. |
AtlAxGetControl | Tutamacı göz önünde bulundurulduğunda, belirli bir pencerenin (varsa) içinde yer alan denetime yönelik bir doğrudan arabirim işaretçisi elde etmek için kullanılır. |
AtlSetChildSite | IUnknown Alt sitenin öğesini başlatır. |
AtlAxWinInit | AxWin nesneleri için barındırma kodunu başlatır. |
AtlAxWinTerm | AxWin nesneleri için barındırma kodunun başlatılmamış halini alır. |
AtlGetObjectSourceInterface | Bir nesnenin varsayılan kaynak arabirimi hakkındaki bilgileri döndürür. |
Gereksinimler
Üst bilgi: atlhost.h
AtlAxDialogBox
Kullanıcı tarafından sağlanan bir iletişim kutusu şablonundan kalıcı bir iletişim kutusu oluşturur.
ATLAPI_(int) AtlAxDialogBox(
HINSTANCE hInstance,
LPCWSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogProc,
LPARAM dwInitParam);
Parametreler
Hınstance
[in] Yürütülebilir dosyası iletişim kutusu şablonunu içeren modülün bir örneğini tanımlar.
lpTemplateName
[in] İletişim kutusu şablonunu tanımlar. Bu parametre, iletişim kutusu şablonunun adını belirten null ile sonlandırılan karakter dizesinin işaretçisi veya iletişim kutusu şablonunun kaynak tanımlayıcısını belirten bir tamsayı değeridir. Parametresi bir kaynak tanımlayıcısı belirtiyorsa, yüksek sıralı sözcüğü sıfır olmalı ve düşük sıralı sözcüğü tanımlayıcıyı içermelidir. Bu değeri oluşturmak için MAKEINTRESOURCE makrosunu kullanabilirsiniz.
hWndParent
[in] İletişim kutusunun sahibi olan pencereyi tanımlar.
lpDialogProc
[in] İletişim kutusu yordamını gösterir. İletişim kutusu yordamı hakkında daha fazla bilgi için bkz . DialogProc.
dwInitParam
[in] WM_INITDIALOG iletisinin lParam parametresindeki iletişim kutusuna geçirecek değeri belirtir.
İade Değeri
Standart HRESULT değerlerinden biri.
Açıklamalar
ActiveX denetimi içeren bir iletişim kutusu şablonuyla kullanmak AtlAxDialogBox
için, iletişim kutusu kaynağının CONTROL bölümünün metin alanı olarak geçerli bir CLSID, APPID veya URL dizesi ve aynı bölüm altındaki sınıf adı alanı olarak "AtlAxWin80" belirtin. Geçerli bir CONTROL bölümünün nasıl görünebileceği aşağıda gösterilmiştir:
CONTROL "{04FE35E9-ADBC-4f1d-83FE-8FA4D1F71C7F}", IDC_TEST,
"AtlAxWin80", WS_GROUP | WS_TABSTOP, 0, 0, 100, 100
Kaynak betiklerini düzenleme hakkında daha fazla bilgi için bkz . Nasıl yapılır: Kaynak Oluşturma. Kaynak tanımı deyimlerini denetleme hakkında daha fazla bilgi için bkz . Windows SDK: SDK Araçları altındaki Ortak Denetim Parametreleri .
Genel olarak iletişim kutuları hakkında daha fazla bilgi için Windows SDK'sında DialogBox ve CreateDialogParam'a bakın.
AtlAxCreateDialog
Kullanıcı tarafından sağlanan bir iletişim kutusu şablonundan modsuz bir iletişim kutusu oluşturur.
ATLAPI_(HWND) AtlAxCreateDialog(
HINSTANCE hInstance,
LPCWSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogProc,
LPARAM dwInitParam);
Parametreler
Hınstance
[in] Yürütülebilir dosyası iletişim kutusu şablonunu içeren modülün bir örneğini tanımlar.
lpTemplateName
[in] İletişim kutusu şablonunu tanımlar. Bu parametre, iletişim kutusu şablonunun adını belirten null ile sonlandırılan karakter dizesinin işaretçisi veya iletişim kutusu şablonunun kaynak tanımlayıcısını belirten bir tamsayı değeridir. Parametresi bir kaynak tanımlayıcısı belirtiyorsa, yüksek sıralı sözcüğü sıfır olmalı ve düşük sıralı sözcüğü tanımlayıcıyı içermelidir. Bu değeri oluşturmak için MAKEINTRESOURCE makrosunu kullanabilirsiniz.
hWndParent
[in] İletişim kutusunun sahibi olan pencereyi tanımlar.
lpDialogProc
[in] İletişim kutusu yordamını gösterir. İletişim kutusu yordamı hakkında daha fazla bilgi için bkz . DialogProc.
dwInitParam
[in] WM_INITDIALOG iletisinin lParam parametresindeki iletişim kutusuna geçirecek değeri belirtir.
İade Değeri
Standart HRESULT değerlerinden biri.
Açıklamalar
Sonuçta elde edilen iletişim kutusu ActiveX denetimleri içerebilir.
Bkz . Windows SDK'sında CreateDialog ve CreateDialogParam .
AtlAxCreateControl
Bir ActiveX denetimi oluşturur, onu başlatır ve belirtilen pencerede barındırır.
ATLAPI AtlAxCreateControl(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer);
Parametreler
Lpszname
Denetime geçirilecek dize işaretçisi. Aşağıdaki yollardan biriyle biçimlendirilmelidir:
Gibi bir ProgID
"MSCAL.Calendar.7"
ClSID gibi bir
"{8E27C92B-1264-101C-8A2F-040224009C02}"
URL gibi
"<https://www.microsoft.com>"
Etkin bir belgeye başvuru, örneğin
"file://\\\Documents\MyDoc.doc"
HTML'nin bir parçası, örneğin
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Dekont
"MSHTML:"
BIR MSHTML akışı olarak atanması için HTML parçasından önce olmalıdır.
Hwnd
[in] Denetimin bağlanacağı pencere tutamacı.
pStream
[in] Denetimin özelliklerini başlatmak için kullanılan bir akış işaretçisi. NULL olabilir.
ppUnkContainer
[out] Kapsayıcının öğesini alacak IUnknown
bir işaretçinin adresi. NULL olabilir.
İade Değeri
Standart HRESULT değerlerinden biri.
Açıklamalar
Bu genel işlev size AtlAxCreateControlEx(lpszName, hWnd, pStream, NULL, NULL, NULL, NULL, NULL); çağrısıyla aynı sonucu verir.
Lisanslı bir ActiveX denetimi oluşturmak için bkz . AtlAxCreateControlLic.
AtlAxCreateControlEx
Bir ActiveX denetimi oluşturur, onu başlatır ve belirtilen pencerede barındırır. Yeni denetim için bir arabirim işaretçisi ve olay havuzu da oluşturulabilir.
ATLAPI AtlAxCreateControlEx(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
IUnknown** ppUnkControl,
REFIID iidSink = IID_NULL,
IUnknown* punkSink = NULL);
Parametreler
Lpszname
Denetime geçirilecek dize işaretçisi. Aşağıdaki yollardan biriyle biçimlendirilmelidir:
Gibi bir ProgID
"MSCAL.Calendar.7"
ClSID gibi bir
"{8E27C92B-1264-101C-8A2F-040224009C02}"
URL gibi
"<https://www.microsoft.com>"
Etkin bir belgeye başvuru, örneğin
"file://\\\Documents\MyDoc.doc"
HTML'nin bir parçası, örneğin
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Dekont
"MSHTML:"
BIR MSHTML akışı olarak atanması için HTML parçasından önce olmalıdır.
Hwnd
[in] Denetimin bağlanacağı pencere tutamacı.
pStream
[in] Denetimin özelliklerini başlatmak için kullanılan bir akış işaretçisi. NULL olabilir.
ppUnkContainer
[out] Kapsayıcının öğesini alacak IUnknown
bir işaretçinin adresi. NULL olabilir.
ppUnkControl
[out] Oluşturulan denetimin öğesini alacak IUnknown
bir işaretçinin adresi. NULL olabilir.
iidSink
İçerilen nesnedeki giden arabirimin arabirim tanımlayıcısı.
punkSink
İçerilen nesne başarıyla oluşturulduktan sonra iidSink tarafından belirtilen bağlantı noktasına bağlanacak havuz nesnesinin arabirimine yönelik bir işaretçiIUnknown
.
İade Değeri
Standart HRESULT değerlerinden biri.
Açıklamalar
AtlAxCreateControlEx
AtlAxCreateControl'e benzer, ancak yeni oluşturulan denetim için bir arabirim işaretçisi almanıza ve denetim tarafından tetiklenen olayları almak için bir olay havuzu ayarlamanıza da olanak tanır.
Lisanslı bir ActiveX denetimi oluşturmak için bkz . AtlAxCreateControlLicEx.
AtlAxCreateControlLic
Lisanslı bir ActiveX denetimi oluşturur, onu başlatır ve belirtilen pencerede barındırır.
ATLAPI AtlAxCreateControlLic(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
BSTR bstrLic = NULL);
Parametreler
Lpszname
Denetime geçirilecek dize işaretçisi. Aşağıdaki yollardan biriyle biçimlendirilmelidir:
Gibi bir ProgID
"MSCAL.Calendar.7"
ClSID gibi bir
"{8E27C92B-1264-101C-8A2F-040224009C02}"
URL gibi
"<https://www.microsoft.com>"
Etkin bir belgeye başvuru, örneğin
"file://\\\Documents\MyDoc.doc"
HTML'nin bir parçası, örneğin
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Dekont
"MSHTML:"
BIR MSHTML akışı olarak atanması için HTML parçasından önce olmalıdır.
Hwnd
Denetimin bağlanacağı pencere tutamacı.
pStream
Denetimin özelliklerini başlatmak için kullanılan bir akış işaretçisi. NULL olabilir.
ppUnkContainer
Kapsayıcının öğesini alacak IUnknown
bir işaretçinin adresi. NULL olabilir.
bstrLic
Denetimin lisansını içeren BSTR.
İade Değeri
Standart HRESULT değerlerinden biri.
Örnek
Nasıl kullanılacağına AtlAxCreateControlLic
ilişkin bir örnek için bkz. ATL AXHost Kullanarak ActiveX Denetimlerini Barındırma.
AtlAxCreateControlLicEx
Lisanslı bir ActiveX denetimi oluşturur, onu başlatır ve belirtilen pencerede barındırır. Yeni denetim için bir arabirim işaretçisi ve olay havuzu da oluşturulabilir.
ATLAPI AtlAxCreateControlLicEx(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
IUnknown** ppUnkControl,
REFIID iidSink = IID_NULL,
IUnknown* punkSink = NULL,
BSTR bstrLic = NULL);
Parametreler
Lpszname
Denetime geçirilecek dize işaretçisi. Aşağıdaki yollardan biriyle biçimlendirilmelidir:
Gibi bir ProgID
"MSCAL.Calendar.7"
ClSID gibi bir
"{8E27C92B-1264-101C-8A2F-040224009C02}"
URL gibi
"<https://www.microsoft.com>"
Etkin bir belgeye başvuru, örneğin
"file://\\\Documents\MyDoc.doc"
HTML'nin bir parçası, örneğin
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Dekont
"MSHTML:"
BIR MSHTML akışı olarak atanması için HTML parçasından önce olmalıdır.
Hwnd
Denetimin bağlanacağı pencere tutamacı.
pStream
Denetimin özelliklerini başlatmak için kullanılan bir akış işaretçisi. NULL olabilir.
ppUnkContainer
Kapsayıcının öğesini alacak IUnknown
bir işaretçinin adresi. NULL olabilir.
ppUnkControl
[out] Oluşturulan denetimin öğesini alacak IUnknown
bir işaretçinin adresi. NULL olabilir.
iidSink
İçerilen nesnedeki giden arabirimin arabirim tanımlayıcısı.
punkSink
İçerilen nesne başarıyla oluşturulduktan sonra iidSink tarafından belirtilen bağlantı noktasına bağlanacak havuz nesnesinin arabirimine yönelik bir işaretçiIUnknown
.
bstrLic
Denetimin lisansını içeren BSTR.
İade Değeri
Standart HRESULT değerlerinden biri.
Açıklamalar
AtlAxCreateControlLicEx
AtlAxCreateControlLic'e benzer, ancak yeni oluşturulan denetime bir arabirim işaretçisi almanıza ve denetim tarafından tetiklenen olayları almak için bir olay havuzu ayarlamanıza olanak tanır.
Örnek
Nasıl kullanılacağına AtlAxCreateControlLicEx
ilişkin bir örnek için bkz. ATL AXHost Kullanarak ActiveX Denetimlerini Barındırma.
AtlAxAttachControl
Önceden oluşturulmuş bir denetimi belirtilen pencereye ekler.
ATLAPI AtlAxAttachControl(
IUnknown* pControl,
HWND hWnd,
IUnknown** ppUnkContainer);
Parametreler
pControl
[in] Denetimin IUnknown
işaretçisi.
Hwnd
[in] Denetimi barındıracak pencerenin tutamacı.
ppUnkContainer
[out] Kapsayıcı nesnesinin IUnknown
işaretçisine işaret eden bir işaretçi.
İade Değeri
Standart HRESULT değerlerinden biri.
Açıklamalar
Aynı anda bir denetim oluşturmak ve eklemek için AtlAxCreateControlEx ve AtlAxCreateControl kullanın.
Dekont
Çağrılmadan önce AtlAxAttachControl
eklenen denetim nesnesinin doğru şekilde başlatılması gerekir.
AtlAxGetHost
Belirli bir pencere için (varsa), kapsayıcıya tanıtıcısını göz önünde bulundurarak doğrudan bir arabirim işaretçisi alır.
ATLAPI AtlAxGetHost(HWND h, IUnknown** pp);
Parametreler
h
[in] Denetimi barındıran pencerenin tutamacı.
S
[out] Denetimin IUnknown
kapsayıcısı.
İade Değeri
Standart HRESULT değerlerinden biri.
AtlAxGetControl
Belirli bir pencere içinde yer alan denetim için, tanıcısını göz önünde bulundurarak doğrudan arabirim işaretçisi alır.
ATLAPI AtlAxGetControl(HWND h, IUnknown** pp);
Parametreler
h
[in] Denetimi barındıran pencerenin tutamacı.
S
[out] IUnknown
Barındırılan denetimin.
İade Değeri
Standart HRESULT değerlerinden biri.
AtlSetChildSite
Alt nesnenin sitesini üst nesnenin sitesine ayarlamak için IUnknown
bu işlevi çağırın.
HRESULT AtlSetChildSite(IUnknown* punkChild, IUnknown* punkParent);
Parametreler
punkChild
[in] Alt öğe IUnknown
arabiriminin işaretçisi.
punkParent
[in] Üst öğesinin IUnknown
arabirimine ilişkin bir işaretçi.
İade Değeri
Standart bir HRESULT değeri.
AtlAxWinInit
Bu işlev, "AtlAxWin80" ve "AtlAxWinLic80" pencere sınıflarının yanı sıra birkaç özel pencere iletisi kaydederek ATL'nin denetim barındırma kodunu başlatır.
ATLAPI_(BOOL) AtlAxWinInit();
İade Değeri
Denetim barındırma kodunun başlatılması başarılı olursa sıfır olmayan; aksi takdirde YANLIŞ.
Açıklamalar
ATL denetimi barındırma API'sini kullanmadan önce bu işlev çağrılmalıdır. Bu işleve yapılan çağrının ardından" AtlAxWin" pencere sınıfı, Windows SDK'da açıklandığı gibi CreateWindow veya CreateWindowEx çağrılarında kullanılabilir.
AtlAxWinTerm
Bu işlev, "AtlAxWin80" ve "AtlAxWinLic80" pencere sınıflarının kaydını kaldırarak ATL'nin denetim barındırma kodunun kaydını açar.
inline BOOL AtlAxWinTerm();
İade Değeri
Her zaman DOĞRU döndürür.
Açıklamalar
Bu işlev, Windows SDK'sında açıklandığı gibi UnregisterClass'ı çağırır.
AtlAxWinInit'i çağırdıysanız ve artık konak pencereleri oluşturmanız gerekmiyorsa mevcut tüm konak pencereleri yok edildikten sonra temizlemek için bu işlevi çağırabilirsiniz. Bu işlevi çağırmazsanız, işlem sonlandırıldığında pencere sınıfının kaydı otomatik olarak silinir.
AtlGetObjectSourceInterface
Bir nesnenin varsayılan kaynak arabirimi hakkında bilgi almak için bu işlevi çağırın.
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor);
Parametreler
punkObj
[in] Bilgi döndürülecek nesneye yönelik bir işaretçi.
plibid
[out] Kaynak arabirimin tanımını içeren tür kitaplığının LIBID işaretçisi.
piid
[out] Nesnenin varsayılan kaynak arabiriminin arabirim kimliğinin işaretçisi.
pdwMajor
[out] Kaynak arabirimin tanımını içeren tür kitaplığının ana sürüm numarasının işaretçisi.
pdwMinor
[out] Kaynak arabirimin tanımını içeren tür kitaplığının ikincil sürüm numarasının işaretçisi.
İade Değeri
Standart bir HRESULT değeri.
Açıklamalar
AtlGetObjectSourceInterface
, varsayılan kaynak arabirimin arabirim kimliğini ve bu arabirimi açıklayan tür kitaplığının LIBID ve ana ve ikincil sürüm numaralarını sağlayabilir.
Dekont
Bu işlevin istenen bilgileri başarıyla alabilmesi için, punkObj tarafından temsil edilen nesnenin uygulamalı IDispatch
(ve aracılığıyla IDispatch::GetTypeInfo
tür bilgilerini döndürmelidir) ve ayrıca veya IPersist
'yi IProvideClassInfo2
de uygulaması gerekir. Kaynak arabiriminin tür bilgileri, için tür bilgileriyle IDispatch
aynı tür kitaplığında olmalıdır.
Örnek
Aşağıdaki örnekte, CEasySink
temel bileşenlere geçirebileceğiniz IDispEventImpl
şablon bağımsız değişkenlerinin sayısını azaltan bir olay havuzu sınıfını nasıl tanımlayabileceğiniz gösterilmektedir. EasyAdvise
ve EasyUnadvise
DispEventAdvise veya DispEventUnadvise çağrısından önce IDispEventImpl üyelerini başlatmak için kullanınAtlGetObjectSourceInterface
.
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);
}
};
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin