Sdílet prostřednictvím


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í technologie ActiveX ovládacích prvků.

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 technologie 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 technologie ActiveX.
AtlAxCreateControl Vytvoří, inicializuje a hostuje ovládací prvek ActiveX v zadaném okně.
AtlAxCreateControlEx Vytvoří ovládací prvek technologie 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 technologie 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.

Vrácená hodnota

Jedna ze standardních hodnot HRESULT.

Poznámky

Chcete-li použít AtlAxDialogBox s dialogovou šablonou, která obsahuje ovládací prvek technologie 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.

Vrácená hodnota

Jedna ze standardních hodnot HRESULT.

Poznámky

Výsledné dialogové okno může obsahovat ovládací prvky technologie 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.

Vrácená 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 technologie 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.

Vrácená hodnota

Jedna ze standardních hodnot HRESULT.

Poznámky

AtlAxCreateControlExje 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 technologie 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.

Vrácená hodnota

Jedna ze standardních hodnot HRESULT.

Příklad

Ukázku použití AtlAxCreateControlLicnajdete v tématu Hostování ovládacích prvků technologie ActiveX pomocí 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.

Vrácená hodnota

Jedna ze standardních hodnot HRESULT.

Poznámky

AtlAxCreateControlLicExje 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

Ukázku použití AtlAxCreateControlLicExnajdete v tématu Hostování ovládacích prvků technologie ActiveX pomocí 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.

Vrácená 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 AtlAxAttachControlmusí 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.

Stran
[ven] Kontejner IUnknown ovládacího prvku.

Vrácená 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.

Stran
[ven] Hostovaný IUnknown ovládací prvek.

Vrácená 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.

Vrácená 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();

Vrácená 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();

Vrácená 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í.

Vrácená 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í, CEasySinkkterá 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);
   }
};

Viz také

Functions
Makra složených ovládacích prvků