Globální funkce složených ovládacích prvků
Tyto funkce poskytují podporu pro vytváření dialogových oken a pro vytváření, hostování a licencování ovládacích prvků ActiveX.
Důležité
Funkce uvedené v následující tabulce nelze použít v aplikacích, které se spouští v prostředí Windows Runtime.
Function | Popis |
---|---|
AtlAxDialogBox | Vytvoří modální dialogové okno z uživatelem zadané šablony dialogového okna. Výsledné dialogové okno může obsahovat ovládací prvky ActiveX. |
AtlAxCreateDialog | Vytvoří nemodální dialogové okno z uživatelem zadané šablony dialogového okna. Výsledné dialogové okno může obsahovat ovládací prvky ActiveX. |
AtlAxCreateControl | Vytvoří, inicializuje a hostuje ovládací prvek ActiveX v zadaném okně. |
AtlAxCreateControlEx | Vytvoří ovládací prvek ActiveX, inicializuje ho, hostuje ho v zadaném okně a načte ukazatel rozhraní (nebo ukazatele) z ovládacího prvku. |
AtlAxCreateControlLic | Vytvoří, licencuje a hostuje ovládací prvek ActiveX v zadaném okně. |
AtlAxCreateControlLicEx | Vytvoří licencovaný ovládací prvek ActiveX, inicializuje ho, hostuje ho v zadaném okně a načte ukazatel rozhraní (nebo ukazatele) z ovládacího prvku. |
AtlAxAttachControl | Připojí předchozí vytvořený ovládací prvek k zadanému oknu. |
AtlAxGetHost | Používá se k získání ukazatele přímého rozhraní na kontejner pro zadané okno (pokud existuje) vzhledem k jeho popisovači. |
AtlAxGetControl | Používá se k získání ukazatele přímého rozhraní na ovládací prvek obsažený v zadaném okně (pokud existuje) vzhledem k jeho popisovači. |
AtlSetChildSite | Inicializuje IUnknown podřízenou lokalitu. |
AtlAxWinInit | Inicializuje kód hostování pro objekty AxWin. |
AtlAxWinTerm | Neinicializuje kód hostování pro objekty AxWin. |
AtlGetObjectSourceInterface | Vrátí informace o výchozím zdrojovém rozhraní objektu. |
Požadavky
Hlavička: atlhost.h
AtlAxDialogBox
Vytvoří modální dialogové okno z uživatelem zadané šablony dialogového okna.
ATLAPI_(int) AtlAxDialogBox(
HINSTANCE hInstance,
LPCWSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogProc,
LPARAM dwInitParam);
Parametry
hInstance
[v] Identifikuje instanci modulu, jejíž spustitelný soubor obsahuje šablonu dialogového okna.
lpTemplateName
[v] Identifikuje šablonu dialogového okna. Tento parametr je buď ukazatel na řetězec znaků ukončený hodnotou null, který určuje název šablony dialogového okna, nebo celočíselnou hodnotu, která určuje identifikátor prostředku šablony dialogového okna. Pokud parametr určuje identifikátor prostředku, musí být jeho slovo s vysokým pořadím nula a jeho slovo s nízkým pořadím musí obsahovat identifikátor. K vytvoření této hodnoty můžete použít makro MAKEINTRESOURCE .
hWndParent
[v] Identifikuje okno, které je vlastníkem dialogového okna.
lpDialogProc
[v] Odkazuje na proceduru dialogového okna. Další informace o postupu dialogového okna naleznete v tématu DialogProc.
dwInitParam
[v] Určuje hodnotu, která se má předat do dialogového okna v parametru lParam zprávy WM_INITDIALOG.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
Poznámky
Chcete-li použít AtlAxDialogBox
s dialogovou šablonou, která obsahuje ovládací prvek ActiveX, zadejte platný řetězec CLSID, APPID nebo URL jako textové pole oddílu CONTROL prostředku dialogového okna spolu s "AtlAxWin80" jako pole názvu třídy ve stejné části. Následující příklad ukazuje, jak může vypadat platný oddíl CONTROL :
CONTROL "{04FE35E9-ADBC-4f1d-83FE-8FA4D1F71C7F}", IDC_TEST,
"AtlAxWin80", WS_GROUP | WS_TABSTOP, 0, 0, 100, 100
Další informace o úpravách skriptů prostředků najdete v tématu Postupy: Vytváření prostředků. Další informace o příkazech definice prostředku ovládacího prvku najdete v tématu Běžné parametry řízení v části Sada Windows SDK: Nástroje sady SDK.
Další informace o dialogových oknech obecně najdete v dialogovém okně DialogBox a CreateDialogParam v sadě Windows SDK.
AtlAxCreateDialog
Vytvoří nemodální dialogové okno z uživatelem zadané šablony dialogového okna.
ATLAPI_(HWND) AtlAxCreateDialog(
HINSTANCE hInstance,
LPCWSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogProc,
LPARAM dwInitParam);
Parametry
hInstance
[v] Identifikuje instanci modulu, jejíž spustitelný soubor obsahuje šablonu dialogového okna.
lpTemplateName
[v] Identifikuje šablonu dialogového okna. Tento parametr je buď ukazatel na řetězec znaků ukončený hodnotou null, který určuje název šablony dialogového okna, nebo celočíselnou hodnotu, která určuje identifikátor prostředku šablony dialogového okna. Pokud parametr určuje identifikátor prostředku, musí být jeho slovo s vysokým pořadím nula a jeho slovo s nízkým pořadím musí obsahovat identifikátor. K vytvoření této hodnoty můžete použít makro MAKEINTRESOURCE .
hWndParent
[v] Identifikuje okno, které je vlastníkem dialogového okna.
lpDialogProc
[v] Odkazuje na proceduru dialogového okna. Další informace o postupu dialogového okna naleznete v tématu DialogProc.
dwInitParam
[v] Určuje hodnotu, která se má předat do dialogového okna v parametru lParam zprávy WM_INITDIALOG.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
Poznámky
Výsledné dialogové okno může obsahovat ovládací prvky ActiveX.
Viz CreateDialog a CreateDialogParam v sadě Windows SDK.
AtlAxCreateControl
Vytvoří, inicializuje a hostuje ovládací prvek ActiveX v zadaném okně.
ATLAPI AtlAxCreateControl(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer);
Parametry
lpszName
Ukazatel na řetězec, který se má předat ovládacímu prvku. Musí být formátován jedním z následujících způsobů:
Identifikátor ProgID, například
"MSCAL.Calendar.7"
CLSID, například
"{8E27C92B-1264-101C-8A2F-040224009C02}"
Adresa URL, například
"<https://www.microsoft.com>"
Odkaz na aktivní dokument, například
"file://\\\Documents\MyDoc.doc"
Fragment kódu HTML, jako je například
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Poznámka:
"MSHTML:"
musí předcházet fragment HTML tak, aby byl určen jako datový proud MSHTML.
hWnd
[v] Úchyt pro okno, ke kterému bude ovládací prvek připojen.
pStream
[v] Ukazatel na datový proud, který se používá k inicializaci vlastností ovládacího prvku. Může mít hodnotu NULL.
ppUnkContainer
[ven] Adresa ukazatele, který obdrží IUnknown
kontejner. Může mít hodnotu NULL.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
Poznámky
Tato globální funkce poskytuje stejný výsledek jako volání AtlAxCreateControlEx(lpszName, hWnd, pStream, NULL, NULL, NULL, NULL);.
Pokud chcete vytvořit licencovaný ovládací prvek ActiveX, přečtěte si téma AtlAxCreateControlLic.
AtlAxCreateControlEx
Vytvoří, inicializuje a hostuje ovládací prvek ActiveX v zadaném okně. Pro tento nový ovládací prvek lze také vytvořit ukazatel rozhraní a jímku událostí.
ATLAPI AtlAxCreateControlEx(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
IUnknown** ppUnkControl,
REFIID iidSink = IID_NULL,
IUnknown* punkSink = NULL);
Parametry
lpszName
Ukazatel na řetězec, který se má předat ovládacímu prvku. Musí být formátován jedním z následujících způsobů:
Identifikátor ProgID, například
"MSCAL.Calendar.7"
CLSID, například
"{8E27C92B-1264-101C-8A2F-040224009C02}"
Adresa URL, například
"<https://www.microsoft.com>"
Odkaz na aktivní dokument, například
"file://\\\Documents\MyDoc.doc"
Fragment kódu HTML, jako je například
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Poznámka:
"MSHTML:"
musí předcházet fragment HTML tak, aby byl určen jako datový proud MSHTML.
hWnd
[v] Úchyt pro okno, ke kterému bude ovládací prvek připojen.
pStream
[v] Ukazatel na datový proud, který se používá k inicializaci vlastností ovládacího prvku. Může mít hodnotu NULL.
ppUnkContainer
[ven] Adresa ukazatele, který obdrží IUnknown
kontejner. Může mít hodnotu NULL.
ppUnkControl
[ven] Adresa ukazatele, který obdrží IUnknown
vytvořený ovládací prvek. Může mít hodnotu NULL.
iidSink
Identifikátor rozhraní odchozího rozhraní v obsaženém objektu.
punkSink
Ukazatel na IUnknown
rozhraní objektu jímky, který má být připojen k spojovacímu bodu určenému nástrojem iidSink na obsaženém objektu po úspěšném vytvoření obsaženého objektu.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
Poznámky
AtlAxCreateControlEx
je podobný AtlAxCreateControl, ale také umožňuje přijímat ukazatel rozhraní na nově vytvořený ovládací prvek a nastavit jímku událostí pro příjem událostí aktivovaných ovládacím prvku.
Pokud chcete vytvořit licencovaný ovládací prvek ActiveX, přečtěte si téma AtlAxCreateControlLicEx.
AtlAxCreateControlLic
Vytvoří, licencuje a hostuje ovládací prvek ActiveX v zadaném okně.
ATLAPI AtlAxCreateControlLic(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
BSTR bstrLic = NULL);
Parametry
lpszName
Ukazatel na řetězec, který se má předat ovládacímu prvku. Musí být formátován jedním z následujících způsobů:
Identifikátor ProgID, například
"MSCAL.Calendar.7"
CLSID, například
"{8E27C92B-1264-101C-8A2F-040224009C02}"
Adresa URL, například
"<https://www.microsoft.com>"
Odkaz na aktivní dokument, například
"file://\\\Documents\MyDoc.doc"
Fragment kódu HTML, jako je například
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Poznámka:
"MSHTML:"
musí předcházet fragment HTML tak, aby byl určen jako datový proud MSHTML.
hWnd
Úchyt pro okno, ke kterému bude ovládací prvek připojen.
pStream
Ukazatel na datový proud, který se používá k inicializaci vlastností ovládacího prvku. Může mít hodnotu NULL.
ppUnkContainer
Adresa ukazatele, který obdrží IUnknown
kontejner. Může mít hodnotu NULL.
bstrLic
BSTR obsahující licenci pro ovládací prvek.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
Příklad
Informace o tom, jak používatAtlAxCreateControlLic
, najdete v tématu Hostování ovládacích prvků ActiveX pomocí třídy ATL AXHost.
AtlAxCreateControlLicEx
Vytvoří, licencuje a hostuje ovládací prvek ActiveX v zadaném okně. Pro tento nový ovládací prvek lze také vytvořit ukazatel rozhraní a jímku událostí.
ATLAPI AtlAxCreateControlLicEx(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
IUnknown** ppUnkControl,
REFIID iidSink = IID_NULL,
IUnknown* punkSink = NULL,
BSTR bstrLic = NULL);
Parametry
lpszName
Ukazatel na řetězec, který se má předat ovládacímu prvku. Musí být formátován jedním z následujících způsobů:
Identifikátor ProgID, například
"MSCAL.Calendar.7"
CLSID, například
"{8E27C92B-1264-101C-8A2F-040224009C02}"
Adresa URL, například
"<https://www.microsoft.com>"
Odkaz na aktivní dokument, například
"file://\\\Documents\MyDoc.doc"
Fragment kódu HTML, jako je například
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
Poznámka:
"MSHTML:"
musí předcházet fragment HTML tak, aby byl určen jako datový proud MSHTML.
hWnd
Úchyt pro okno, ke kterému bude ovládací prvek připojen.
pStream
Ukazatel na datový proud, který se používá k inicializaci vlastností ovládacího prvku. Může mít hodnotu NULL.
ppUnkContainer
Adresa ukazatele, který obdrží IUnknown
kontejner. Může mít hodnotu NULL.
ppUnkControl
[ven] Adresa ukazatele, který obdrží IUnknown
vytvořený ovládací prvek. Může mít hodnotu NULL.
iidSink
Identifikátor rozhraní odchozího rozhraní v obsaženém objektu.
punkSink
Ukazatel na IUnknown
rozhraní objektu jímky, který má být připojen k spojovacímu bodu určenému nástrojem iidSink na obsaženém objektu po úspěšném vytvoření obsaženého objektu.
bstrLic
BSTR obsahující licenci pro ovládací prvek.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
Poznámky
AtlAxCreateControlLicEx
je podobný AtlAxCreateControlLic, ale také umožňuje přijímat ukazatel rozhraní na nově vytvořený ovládací prvek a nastavit jímku událostí pro příjem událostí aktivovaných ovládacím prvku.
Příklad
Informace o tom, jak používatAtlAxCreateControlLicEx
, najdete v tématu Hostování ovládacích prvků ActiveX pomocí třídy ATL AXHost.
AtlAxAttachControl
Připojí předchozí vytvořený ovládací prvek k zadanému oknu.
ATLAPI AtlAxAttachControl(
IUnknown* pControl,
HWND hWnd,
IUnknown** ppUnkContainer);
Parametry
pControl
[v] Ukazatel na IUnknown
ovládací prvek.
hWnd
[v] Popisovač v okně, které bude hostitelem ovládacího prvku.
ppUnkContainer
[ven] Ukazatel na ukazatel na IUnknown
objekt kontejneru.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
Poznámky
Pomocí AtlAxCreateControlEx a AtlAxCreateControl můžete současně vytvořit a připojit ovládací prvek.
Poznámka:
Před voláním AtlAxAttachControl
musí být objekt ovládacího prvku, který je připojen, správně inicializován .
AtlAxGetHost
Získá přímý ukazatel rozhraní na kontejner zadaného okna (pokud existuje) s uvedením jeho popisovače.
ATLAPI AtlAxGetHost(HWND h, IUnknown** pp);
Parametry
h
[v] Popisovač okna, které je hostitelem ovládacího prvku.
Pp
[ven] Kontejner IUnknown
ovládacího prvku.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
AtlAxGetControl
Získá přímý ukazatel rozhraní na ovládací prvek obsažený uvnitř zadaného okna s uvedením jeho popisovače.
ATLAPI AtlAxGetControl(HWND h, IUnknown** pp);
Parametry
h
[v] Popisovač okna, které je hostitelem ovládacího prvku.
Pp
[ven] Hostovaný IUnknown
ovládací prvek.
Návratová hodnota
Jedna ze standardních hodnot HRESULT.
AtlSetChildSite
Voláním této funkce nastavíte lokalitu podřízeného objektu na IUnknown
nadřazený objekt.
HRESULT AtlSetChildSite(IUnknown* punkChild, IUnknown* punkParent);
Parametry
punkChild
[v] Ukazatel na IUnknown
rozhraní podřízeného objektu.
punkParent
[v] Ukazatel na IUnknown
rozhraní nadřazeného objektu.
Návratová hodnota
Standardní hodnota HRESULT.
AtlAxWinInit
Tato funkce inicializuje kód hostování ovládacího prvku KNIHOVNY ATL registrací tříd oken AtlAxWin80 a AtlAxWinLic80 a několika vlastních zpráv oken.
ATLAPI_(BOOL) AtlAxWinInit();
Návratová hodnota
Nenulové, pokud byla inicializace hostitelského kódu ovládacího prvku úspěšná; jinak NEPRAVDA.
Poznámky
Tato funkce musí být volána před použitím rozhraní API pro hostování ovládacího prvku ATL. Po volání této funkce lze třídu okna AtlAxWin použít ve voláních CreateWindow nebo CreateWindowEx, jak je popsáno v sadě Windows SDK.
AtlAxWinTerm
Tato funkce neinicializuje kód hostování ovládacího prvku ATL zrušením registrace tříd oken AtlAxWin80 a AtlAxWinLic80 .
inline BOOL AtlAxWinTerm();
Návratová hodnota
Vždy vrátí hodnotu PRAVDA.
Poznámky
Tato funkce jednoduše volá UnregisterClass , jak je popsáno v sadě Windows SDK.
Voláním této funkce vyčistíte po zničení všech existujících hostitelských oken, pokud jste volali AtlAxWinInit a už nepotřebujete vytvářet okna hostitele. Pokud tuto funkci nezavoláte, třída okna se po ukončení procesu automaticky zruší registrace.
AtlGetObjectSourceInterface
Voláním této funkce načtete informace o výchozím zdrojovém rozhraní objektu.
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor);
Parametry
punkObj
[v] Ukazatel na objekt, pro který mají být vráceny informace.
plibid
[ven] Ukazatel na LIBID knihovny typů obsahující definici zdrojového rozhraní.
piid
[ven] Ukazatel na ID rozhraní výchozího zdrojového rozhraní objektu.
pdwMajor
[ven] Ukazatel na číslo hlavní verze knihovny typů obsahující definici zdrojového rozhraní.
pdwMinor
[ven] Ukazatel na číslo podverze knihovny typů obsahující definici zdrojového rozhraní.
Návratová hodnota
Standardní hodnota HRESULT.
Poznámky
AtlGetObjectSourceInterface
můžete poskytnout ID rozhraní výchozího zdrojového rozhraní spolu s čísly LIBID a hlavní a podverze knihovny typů popisující toto rozhraní.
Poznámka:
Aby tato funkce úspěšně načetla požadované informace, musí objekt reprezentovaný punkObj implementovat IDispatch
(a vrátit informace o typu prostřednictvím IDispatch::GetTypeInfo
) plus musí také implementovat buď IProvideClassInfo2
nebo IPersist
. Informace o typu pro zdrojové rozhraní musí být ve stejné knihovně typů jako informace o typu pro IDispatch
.
Příklad
Následující příklad ukazuje, jak můžete definovat třídu jímky událostí, CEasySink
která snižuje počet argumentů šablony, které můžete předat do IDispEventImpl
holých základních informací. EasyAdvise
a EasyUnadvise
použijte AtlGetObjectSourceInterface
k inicializaci IDispEventImpl členy před voláním DispEventAdvise nebo 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);
}
};