Globale Funktionen zusammengesetzter Steuerelemente
Diese Funktionen unterstützen das Erstellen von Dialogfeldern und das Erstellen, Hosten und Lizenzierung von ActiveX-Steuerelementen.
Wichtig
Die in der folgenden Tabelle aufgeführten Funktionen können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.
Funktion | Beschreibung |
---|---|
AtlAxDialogBox | Erstellt ein modales Dialogfeld aus einer vom Benutzer angegebenen Dialogfeldvorlage. Das resultierende Dialogfeld kann ActiveX-Steuerelemente enthalten. |
AtlAxCreateDialog | Erstellt ein nicht modales Dialogfeld aus einer vom Benutzer angegebenen Dialogfeldvorlage. Das resultierende Dialogfeld kann ActiveX-Steuerelemente enthalten. |
AtlAxCreateControl | Erstellt ein ActiveX-Steuerelement, initialisiert es und hostet es im angegebenen Fenster. |
AtlAxCreateControlEx | Erstellt ein ActiveX-Steuerelement, initialisiert es, hostet es im angegebenen Fenster und ruft einen Schnittstellenzeiger (oder Zeiger) vom Steuerelement ab. |
AtlAxCreateControlLic | Erstellt ein lizenziertes ActiveX-Steuerelement, initialisiert es und hostet es im angegebenen Fenster. |
AtlAxCreateControlLicEx | Erstellt ein lizenziertes ActiveX-Steuerelement, initialisiert es, hostet es im angegebenen Fenster und ruft einen Schnittstellenzeiger (oder Zeiger) vom Steuerelement ab. |
AtlAxAttachControl | Fügt ein bereits erstelltes Steuerelement an das angegebene Fenster an. |
AtlAxGetHost | Wird verwendet, um einen direkten Schnittstellenzeiger auf den Container für ein angegebenes Fenster (falls vorhanden) zu erhalten, je nach Handle. |
AtlAxGetControl | Wird verwendet, um einen direkten Schnittstellenzeiger auf das Steuerelement abzurufen, das in einem angegebenen Fenster enthalten ist (sofern vorhanden), je nach Ziehpunkt. |
AtlSetChildSite | Initialisiert die IUnknown untergeordnete Website. |
AtlAxWinInit | Initialisiert den Hostingcode für AxWin-Objekte. |
AtlAxWinTerm | Hebt die Initialisierung des Hostingcodes für AxWin-Objekte auf. |
AtlGetObjectSourceInterface | Gibt Informationen zur Standardquellschnittstelle eines Objekts zurück. |
Anforderungen
Kopfzeile: atlhost.h
AtlAxDialogBox
Erstellt ein modales Dialogfeld aus einer vom Benutzer angegebenen Dialogfeldvorlage.
ATLAPI_(int) AtlAxDialogBox(
HINSTANCE hInstance,
LPCWSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogProc,
LPARAM dwInitParam);
Parameter
hInstance
[in] Identifiziert eine Instanz des Moduls, dessen ausführbare Datei die Dialogfeldvorlage enthält.
lpTemplateName
[in] Identifiziert die Dialogfeldvorlage. Dieser Parameter ist entweder der Zeiger auf eine mit Null beendete Zeichenfolge, die den Namen der Dialogfeldvorlage oder einen ganzzahligen Wert angibt, der den Ressourcenbezeichner der Dialogfeldvorlage angibt. Wenn der Parameter einen Ressourcenbezeichner angibt, muss das Wort mit hoher Reihenfolge null sein, und das Wort mit niedriger Reihenfolge muss den Bezeichner enthalten. Sie können das MAKEINTRESOURCE-Makro verwenden, um diesen Wert zu erstellen.
hWndParent
[in] Identifiziert das Fenster, das das Dialogfeld besitzt.
lpDialogProc
[in] Verweist auf die Dialogfeldprozedur. Weitere Informationen zur Dialogfeldprozedur finden Sie unter DialogProc.
dwInitParam
[in] Gibt den Wert an, der an das Dialogfeld im lParam-Parameter der WM_INITDIALOG Nachricht übergeben werden soll.
Rückgabewert
Einer der HRESULT-Standardwerte.
Hinweise
AtlAxDialogBox
Wenn Sie eine Dialogfeldvorlage verwenden möchten, die ein ActiveX-Steuerelement enthält, geben Sie eine gültige CLSID-, APPID- oder URL-Zeichenfolge als Textfeld des STEUERELEMENT-Abschnitts der Dialogressource zusammen mit "AtlAxWin80" als Klassennamenfeld unter demselben Abschnitt an. Im Folgenden wird veranschaulicht, wie ein gültiger CONTROL-Abschnitt aussehen kann:
CONTROL "{04FE35E9-ADBC-4f1d-83FE-8FA4D1F71C7F}", IDC_TEST,
"AtlAxWin80", WS_GROUP | WS_TABSTOP, 0, 0, 100, 100
Weitere Informationen zum Bearbeiten von Ressourcenskripts finden Sie unter How to: Create Resources. Weitere Informationen zu Steuerelementressourcendefinitionsanweisungen finden Sie unter Windows SDK: SDK-Tools unter "Common Control Parameters ".
Weitere Informationen zu Dialogfeldern im Allgemeinen finden Sie unter "DialogBox " und "CreateDialogParam " im Windows SDK.
AtlAxCreateDialog
Erstellt ein nicht modales Dialogfeld aus einer vom Benutzer angegebenen Dialogfeldvorlage.
ATLAPI_(HWND) AtlAxCreateDialog(
HINSTANCE hInstance,
LPCWSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogProc,
LPARAM dwInitParam);
Parameter
hInstance
[in] Identifiziert eine Instanz des Moduls, dessen ausführbare Datei die Dialogfeldvorlage enthält.
lpTemplateName
[in] Identifiziert die Dialogfeldvorlage. Dieser Parameter ist entweder der Zeiger auf eine mit Null beendete Zeichenfolge, die den Namen der Dialogfeldvorlage oder einen ganzzahligen Wert angibt, der den Ressourcenbezeichner der Dialogfeldvorlage angibt. Wenn der Parameter einen Ressourcenbezeichner angibt, muss das Wort mit hoher Reihenfolge null sein, und das Wort mit niedriger Reihenfolge muss den Bezeichner enthalten. Sie können das MAKEINTRESOURCE-Makro verwenden, um diesen Wert zu erstellen.
hWndParent
[in] Identifiziert das Fenster, das das Dialogfeld besitzt.
lpDialogProc
[in] Verweist auf die Dialogfeldprozedur. Weitere Informationen zur Dialogfeldprozedur finden Sie unter DialogProc.
dwInitParam
[in] Gibt den Wert an, der an das Dialogfeld im lParam-Parameter der WM_INITDIALOG Nachricht übergeben werden soll.
Rückgabewert
Einer der HRESULT-Standardwerte.
Hinweise
Das resultierende Dialogfeld kann ActiveX-Steuerelemente enthalten.
Siehe CreateDialog und CreateDialogParam im Windows SDK.
AtlAxCreateControl
Erstellt ein ActiveX-Steuerelement, initialisiert es und hostet es im angegebenen Fenster.
ATLAPI AtlAxCreateControl(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer);
Parameter
lpszName
Ein Zeiger auf eine Zeichenfolge, die an das Steuerelement übergeben werden soll. Muss auf eine der folgenden Arten formatiert werden:
Eine ProgID, z. B.
"MSCAL.Calendar.7"
Eine CLSID wie z. B.
"{8E27C92B-1264-101C-8A2F-040224009C02}"
Eine URL, z. B.
"<https://www.microsoft.com>"
Ein Verweis auf ein aktives Dokument, z. B.
"file://\\\Documents\MyDoc.doc"
Ein HTML-Fragment, z. B.
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Hinweis
"MSHTML:"
muss dem HTML-Fragment vorangestellt werden, damit es als MSHTML-Stream festgelegt wird.
hWnd
[in] Behandeln Sie das Fenster, an das das Steuerelement angefügt wird.
pStream
[in] Ein Zeiger auf einen Datenstrom, der zum Initialisieren der Eigenschaften des Steuerelements verwendet wird. Kann den Wert NULL haben.
ppUnkContainer
[out] Die Adresse eines Zeigers, der den IUnknown
Container empfängt. Kann den Wert NULL haben.
Rückgabewert
Einer der HRESULT-Standardwerte.
Hinweise
Diese globale Funktion gibt Ihnen das gleiche Ergebnis wie das Aufrufen von AtlAxCreateControlEx(lpszName, hWnd, pStream, NULL, NULL, NULL, NULL);.
Informationen zum Erstellen eines lizenzierten ActiveX-Steuerelements finden Sie unter AtlAxCreateControlLic.
AtlAxCreateControlEx
Erstellt ein ActiveX-Steuerelement, initialisiert es und hostet es im angegebenen Fenster. Weiterhin können ein Schnittstellenzeiger und eine Ereignissenke für das neue Steuerelement erstellt werden.
ATLAPI AtlAxCreateControlEx(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
IUnknown** ppUnkControl,
REFIID iidSink = IID_NULL,
IUnknown* punkSink = NULL);
Parameter
lpszName
Ein Zeiger auf eine Zeichenfolge, die an das Steuerelement übergeben werden soll. Muss auf eine der folgenden Arten formatiert werden:
Eine ProgID, z. B.
"MSCAL.Calendar.7"
Eine CLSID wie z. B.
"{8E27C92B-1264-101C-8A2F-040224009C02}"
Eine URL, z. B.
"<https://www.microsoft.com>"
Ein Verweis auf ein aktives Dokument, z. B.
"file://\\\Documents\MyDoc.doc"
Ein HTML-Fragment, z. B.
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Hinweis
"MSHTML:"
muss dem HTML-Fragment vorangestellt werden, damit es als MSHTML-Stream festgelegt wird.
hWnd
[in] Behandeln Sie das Fenster, an das das Steuerelement angefügt wird.
pStream
[in] Ein Zeiger auf einen Datenstrom, der zum Initialisieren der Eigenschaften des Steuerelements verwendet wird. Kann den Wert NULL haben.
ppUnkContainer
[out] Die Adresse eines Zeigers, der den IUnknown
Container empfängt. Kann den Wert NULL haben.
ppUnkControl
[out] Die Adresse eines Zeigers, der das IUnknown
erstellte Steuerelement empfängt. Kann den Wert NULL haben.
iidSink
Der Schnittstellenbezeichner einer ausgehenden Schnittstelle für das enthaltene Objekt.
PunkSink
Ein Zeiger auf die IUnknown
Schnittstelle des Sinkobjekts, das mit dem durch iidSink für das enthaltene Objekt angegebenen Verbindungspunkt verbunden werden soll, nachdem das enthaltene Objekt erfolgreich erstellt wurde.
Rückgabewert
Einer der HRESULT-Standardwerte.
Hinweise
AtlAxCreateControlEx
ähnelt AtlAxCreateControl, ermöglicht ihnen aber auch das Empfangen eines Schnittstellenzeigers auf das neu erstellte Steuerelement und das Einrichten einer Ereignissenke zum Empfangen von Ereignissen, die vom Steuerelement ausgelöst werden.
Informationen zum Erstellen eines lizenzierten ActiveX-Steuerelements finden Sie unter AtlAxCreateControlLicEx.
AtlAxCreateControlLic
Erstellt ein lizenziertes ActiveX-Steuerelement, initialisiert es und hostet es im angegebenen Fenster.
ATLAPI AtlAxCreateControlLic(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
BSTR bstrLic = NULL);
Parameter
lpszName
Ein Zeiger auf eine Zeichenfolge, die an das Steuerelement übergeben werden soll. Muss auf eine der folgenden Arten formatiert werden:
Eine ProgID, z. B.
"MSCAL.Calendar.7"
Eine CLSID wie z. B.
"{8E27C92B-1264-101C-8A2F-040224009C02}"
Eine URL, z. B.
"<https://www.microsoft.com>"
Ein Verweis auf ein aktives Dokument, z. B.
"file://\\\Documents\MyDoc.doc"
Ein HTML-Fragment, z. B.
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Hinweis
"MSHTML:"
muss dem HTML-Fragment vorangestellt werden, damit es als MSHTML-Stream festgelegt wird.
hWnd
Behandeln Sie das Fenster, an das das Steuerelement angefügt wird.
pStream
Ein Zeiger auf einen Datenstrom, der zum Initialisieren der Eigenschaften des Steuerelements verwendet wird. Kann den Wert NULL haben.
ppUnkContainer
Die Adresse eines Zeigers, der den IUnknown
Container empfängt. Kann den Wert NULL haben.
bstrLic
Der BSTR, der die Lizenz für das Steuerelement enthält.
Rückgabewert
Einer der HRESULT-Standardwerte.
Beispiel
Ein Beispiel für die Verwendung AtlAxCreateControlLic
finden Sie unter Hosten von ActiveX-Steuerelementen mit ATL AXHost.
AtlAxCreateControlLicEx
Erstellt ein lizenziertes ActiveX-Steuerelement, initialisiert es und hostet es im angegebenen Fenster. Weiterhin können ein Schnittstellenzeiger und eine Ereignissenke für das neue Steuerelement erstellt werden.
ATLAPI AtlAxCreateControlLicEx(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
IUnknown** ppUnkControl,
REFIID iidSink = IID_NULL,
IUnknown* punkSink = NULL,
BSTR bstrLic = NULL);
Parameter
lpszName
Ein Zeiger auf eine Zeichenfolge, die an das Steuerelement übergeben werden soll. Muss auf eine der folgenden Arten formatiert werden:
Eine ProgID, z. B.
"MSCAL.Calendar.7"
Eine CLSID wie z. B.
"{8E27C92B-1264-101C-8A2F-040224009C02}"
Eine URL, z. B.
"<https://www.microsoft.com>"
Ein Verweis auf ein aktives Dokument, z. B.
"file://\\\Documents\MyDoc.doc"
Ein HTML-Fragment, z. B.
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Hinweis
"MSHTML:"
muss dem HTML-Fragment vorangestellt werden, damit es als MSHTML-Stream festgelegt wird.
hWnd
Behandeln Sie das Fenster, an das das Steuerelement angefügt wird.
pStream
Ein Zeiger auf einen Datenstrom, der zum Initialisieren der Eigenschaften des Steuerelements verwendet wird. Kann den Wert NULL haben.
ppUnkContainer
Die Adresse eines Zeigers, der den IUnknown
Container empfängt. Kann den Wert NULL haben.
ppUnkControl
[out] Die Adresse eines Zeigers, der das IUnknown
erstellte Steuerelement empfängt. Kann den Wert NULL haben.
iidSink
Der Schnittstellenbezeichner einer ausgehenden Schnittstelle für das enthaltene Objekt.
PunkSink
Ein Zeiger auf die IUnknown
Schnittstelle des Sinkobjekts, das mit dem durch iidSink für das enthaltene Objekt angegebenen Verbindungspunkt verbunden werden soll, nachdem das enthaltene Objekt erfolgreich erstellt wurde.
bstrLic
Der BSTR, der die Lizenz für das Steuerelement enthält.
Rückgabewert
Einer der HRESULT-Standardwerte.
Hinweise
AtlAxCreateControlLicEx
ähnelt AtlAxCreateControlLic, ermöglicht ihnen aber auch das Empfangen eines Schnittstellenzeigers auf das neu erstellte Steuerelement und das Einrichten einer Ereignissenke zum Empfangen von Ereignissen, die vom Steuerelement ausgelöst werden.
Beispiel
Ein Beispiel für die Verwendung AtlAxCreateControlLicEx
finden Sie unter Hosten von ActiveX-Steuerelementen mit ATL AXHost.
AtlAxAttachControl
Fügt ein bereits erstelltes Steuerelement an das angegebene Fenster an.
ATLAPI AtlAxAttachControl(
IUnknown* pControl,
HWND hWnd,
IUnknown** ppUnkContainer);
Parameter
pControl
[in] Ein Zeiger auf das IUnknown
Steuerelement.
hWnd
[in] Behandeln Sie das Fenster, in dem das Steuerelement gehostet wird.
ppUnkContainer
[out] Ein Zeiger auf einen Zeiger auf das IUnknown
Containerobjekt.
Rückgabewert
Einer der HRESULT-Standardwerte.
Hinweise
Verwenden Sie AtlAxCreateControlEx und AtlAxCreateControl , um ein Steuerelement gleichzeitig zu erstellen und anzufügen.
Hinweis
Das angefügte Steuerelementobjekt muss vor dem Aufrufen AtlAxAttachControl
korrekt initialisiert werden.
AtlAxGetHost
Ruft anhand eines bestimmten Fensters einen direkten Schnittstellenzeiger zu dem Container für das Fenster (sofern vorhanden) ab.
ATLAPI AtlAxGetHost(HWND h, IUnknown** pp);
Parameter
h
[in] Ein Handle für das Fenster, in dem das Steuerelement gehostet wird.
PP
[out] Der IUnknown
Container des Steuerelements.
Rückgabewert
Einer der HRESULT-Standardwerte.
AtlAxGetControl
Ruft anhand des Handles eines angegebenen Fensters einen direkten Schnittstellenzeiger zu dem Steuerelement ab, das in dem Fenster enthalten ist.
ATLAPI AtlAxGetControl(HWND h, IUnknown** pp);
Parameter
h
[in] Ein Handle für das Fenster, in dem das Steuerelement gehostet wird.
PP
[out] Das IUnknown
Steuerelement, das gehostet wird.
Rückgabewert
Einer der HRESULT-Standardwerte.
AtlSetChildSite
Rufen Sie diese Funktion auf, um die Website des untergeordneten Objekts auf das IUnknown
übergeordnete Objekt festzulegen.
HRESULT AtlSetChildSite(IUnknown* punkChild, IUnknown* punkParent);
Parameter
punkChild
[in] Ein Zeiger auf die IUnknown
Schnittstelle des untergeordneten Elements.
PunkParent
[in] Ein Zeiger auf die IUnknown
Schnittstelle des übergeordneten Elements.
Rückgabewert
Ein HRESULT-Standardwert.
AtlAxWinInit
Diese Funktion initialisiert den ATL-Steuerelementhostingcode, indem die Fensterklassen "AtlAxWin80" und "AtlAxWinLic80" sowie einige benutzerdefinierte Fenstermeldungen registriert werden.
ATLAPI_(BOOL) AtlAxWinInit();
Rückgabewert
Nonzero, wenn die Initialisierung des Steuerelementhostingcodes erfolgreich war; andernfalls FALSE.
Hinweise
Diese Funktion muss aufgerufen werden, bevor die ATL-Steuerelementhosting-API verwendet wird. Nach einem Aufruf dieser Funktion kann die Fensterklasse "AtlAxWin" in Aufrufen von CreateWindow oder CreateWindowEx verwendet werden, wie im Windows SDK beschrieben.
AtlAxWinTerm
Diese Funktion hebt den ATL-Steuerelementhostingcode auf, indem die Registrierung der Fensterklassen "AtlAxWin80" und "AtlAxWinLic80" aufgehoben wird.
inline BOOL AtlAxWinTerm();
Rückgabewert
Gibt immer TRUE zurück.
Hinweise
Diese Funktion ruft einfach UnregisterClass auf, wie im Windows SDK beschrieben.
Rufen Sie diese Funktion auf, um zu bereinigen, nachdem alle vorhandenen Hostfenster zerstört wurden, wenn Sie AtlAxWinInit aufgerufen haben und Sie keine Hostfenster mehr erstellen müssen. Wenn Sie diese Funktion nicht aufrufen, wird die Registrierung der Fensterklasse automatisch aufgehoben, wenn der Prozess beendet wird.
AtlGetObjectSourceInterface
Mit dieser Funktion werden Informationen über die Standardquellschnittstelle eines Objekts abgerufen.
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor);
Parameter
punkObj
[in] Ein Zeiger auf das Objekt, für das Informationen zurückgegeben werden sollen.
plibid
[out] Ein Zeiger auf die LIBID der Typbibliothek, die die Definition der Quellschnittstelle enthält.
piid
[out] Ein Zeiger auf die Schnittstellen-ID der Standardquellschnittstelle des Objekts.
pdwMajor
[out] Ein Zeiger auf die Hauptversionsnummer der Typbibliothek, die die Definition der Quellschnittstelle enthält.
pdwMinor
[out] Ein Zeiger auf die Nebenversionsnummer der Typbibliothek, die die Definition der Quellschnittstelle enthält.
Rückgabewert
Ein HRESULT-Standardwert.
Hinweise
AtlGetObjectSourceInterface
kann Ihnen die Schnittstellen-ID der Standardquellschnittstelle zusammen mit den LIBID- und Haupt- und Nebenversionsnummern der Typbibliothek bereitstellen, die diese Schnittstelle beschreibt.
Hinweis
Damit diese Funktion die angeforderten Informationen erfolgreich abrufen kann, muss das durch PunkObj dargestellte Objekt (IDispatch
und Rückgabetypinformationen über IDispatch::GetTypeInfo
) implementieren und außerdem entweder oder IPersist
implementierenIProvideClassInfo2
. Die Typinformationen für die Quellschnittstelle müssen sich in derselben Typbibliothek befinden wie die Typinformationen für IDispatch
.
Beispiel
Das folgende Beispiel zeigt, wie Sie eine Ereignissenkenklasse definieren können, CEasySink
die die Anzahl der Vorlagenargumente reduziert, an IDispEventImpl
die Sie an die wesentlichen Elemente übergeben können. EasyAdvise
und EasyUnadvise
zum AtlGetObjectSourceInterface
Initialisieren der IDispEventImpl-Elemente vor dem Aufrufen von DispEventAdvise oder 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);
}
};