Aracılığıyla paylaş


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

AtlAxCreateControlExAtlAxCreateControl'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 AtlAxCreateControlLiciliş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

AtlAxCreateControlLicExAtlAxCreateControlLic'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 AtlAxCreateControlLicExiliş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 AtlAxAttachControleklenen 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::GetTypeInfotü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 IDispatchaynı tür kitaplığında olmalıdır.

Örnek

Aşağıdaki örnekte, CEasySinktemel 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. EasyAdviseve 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.

İşlevler
Bileşik Denetim Makroları