Udostępnij za pośrednictwem


Funkcje globalne kontrolek złożonych

Te funkcje zapewniają obsługę tworzenia okien dialogowych oraz tworzenia, hostowania i licencjonowania kontrolek ActiveX.

Ważne

Funkcje wymienione w poniższej tabeli nie mogą być używane w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.

Function opis
AtlAxDialogBox Tworzy modalne okno dialogowe z szablonu okna dialogowego dostarczonego przez użytkownika. Wynikowe okno dialogowe może zawierać kontrolki ActiveX.
AtlAxCreateDialog Tworzy niemodalne okno dialogowe z szablonu okna dialogowego dostarczonego przez użytkownika. Wynikowe okno dialogowe może zawierać kontrolki ActiveX.
AtlAxCreateControl Tworzy formant ActiveX, inicjuje go i umieszcza w określonym oknie.
AtlAxCreateControlEx Tworzy kontrolkę ActiveX, inicjuje ją, hostuje w określonym oknie i pobiera wskaźnik interfejsu (lub wskaźniki) z kontrolki.
AtlAxCreateControlLic Tworzy licencjonowany formant ActiveX, inicjuje go i umieszcza w określonym oknie.
AtlAxCreateControlLicEx Tworzy licencjonowany formant ActiveX, inicjuje go, hostuje go w określonym oknie i pobiera wskaźnik interfejsu (lub wskaźniki) z kontrolki.
AtlAxAttachControl Dołącza wcześniej utworzony formant do określonego okna.
AtlAxGetHost Służy do uzyskiwania bezpośredniego wskaźnika interfejsu do kontenera dla określonego okna (jeśli istnieje), biorąc pod uwagę jego uchwyt.
AtlAxGetControl Służy do uzyskiwania bezpośredniego wskaźnika interfejsu do kontrolki zawartej wewnątrz określonego okna (jeśli istnieje), biorąc pod uwagę jego uchwyt.
AtlSetChildSite Inicjuje IUnknown lokację podrzędną.
AtlAxWinInit Inicjuje kod hostingu dla obiektów AxWin.
AtlAxWinTerm Uninitializuje kod hostingu dla obiektów AxWin.
AtlGetObjectSourceInterface Zwraca informacje o domyślnym interfejsie źródłowym obiektu.

Wymagania

Nagłówek: atlhost.h

AtlAxDialogBox

Tworzy modalne okno dialogowe z szablonu okna dialogowego dostarczonego przez użytkownika.

ATLAPI_(int) AtlAxDialogBox(
    HINSTANCE hInstance,
    LPCWSTR lpTemplateName,
    HWND hWndParent,
    DLGPROC lpDialogProc,
    LPARAM dwInitParam);

Parametry

hInstance
[in] Identyfikuje wystąpienie modułu, którego plik wykonywalny zawiera szablon okna dialogowego.

lpTemplateName
[in] Identyfikuje szablon okna dialogowego. Ten parametr jest wskaźnikiem do ciągu znaków zakończonego wartością null, który określa nazwę szablonu okna dialogowego lub wartość całkowitą określającą identyfikator zasobu szablonu okna dialogowego. Jeśli parametr określa identyfikator zasobu, jego wyraz o wysokiej kolejności musi być zerowy, a jego słowo o niskiej kolejności musi zawierać identyfikator. Aby utworzyć tę wartość, możesz użyć makra MAKEINTRESOURCE .

hWndParent
[in] Identyfikuje okno, które jest właścicielem okna dialogowego.

lpDialogProc
[in] Wskazuje procedurę okna dialogowego. Aby uzyskać więcej informacji na temat procedury okna dialogowego, zobacz DialogProc.

dwInitParam
[in] Określa wartość, która ma być przekazywana do okna dialogowego w parametrze lParam komunikatu WM_INITDIALOG.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

Uwagi

Aby użyć AtlAxDialogBox z szablonem okna dialogowego, który zawiera kontrolkę ActiveX, określ prawidłowy identyfikator CLSID, APPID lub ciąg adresu URL jako pole tekstowe sekcji CONTROL zasobu okna dialogowego wraz z polem "AtlAxWin80" jako pole nazwy klasy w tej samej sekcji. Poniżej pokazano, jak może wyglądać prawidłowa sekcja CONTROL :

CONTROL    "{04FE35E9-ADBC-4f1d-83FE-8FA4D1F71C7F}", IDC_TEST,
    "AtlAxWin80", WS_GROUP | WS_TABSTOP, 0, 0, 100, 100

Aby uzyskać więcej informacji na temat edytowania skryptów zasobów, zobacz Instrukcje: tworzenie zasobów. Aby uzyskać więcej informacji na temat kontroli instrukcji definicji zasobów, zobacz Common Control Parameters under Windows SDK: SDK Tools (Typowe parametry kontroli w obszarze Zestaw SDK systemu Windows: Narzędzia zestawu SDK).

Aby uzyskać więcej informacji na temat ogólnych okien dialogowych, zapoznaj się z tematem DialogBox i CreateDialogParam w zestawie WINDOWS SDK.

AtlAxCreateDialog

Tworzy niemodalne okno dialogowe z szablonu okna dialogowego dostarczonego przez użytkownika.

ATLAPI_(HWND) AtlAxCreateDialog(
    HINSTANCE hInstance,
    LPCWSTR lpTemplateName,
    HWND hWndParent,
    DLGPROC lpDialogProc,
    LPARAM dwInitParam);

Parametry

hInstance
[in] Identyfikuje wystąpienie modułu, którego plik wykonywalny zawiera szablon okna dialogowego.

lpTemplateName
[in] Identyfikuje szablon okna dialogowego. Ten parametr jest wskaźnikiem do ciągu znaków zakończonego wartością null, który określa nazwę szablonu okna dialogowego lub wartość całkowitą określającą identyfikator zasobu szablonu okna dialogowego. Jeśli parametr określa identyfikator zasobu, jego wyraz o wysokiej kolejności musi być zerowy, a jego słowo o niskiej kolejności musi zawierać identyfikator. Aby utworzyć tę wartość, możesz użyć makra MAKEINTRESOURCE .

hWndParent
[in] Identyfikuje okno, które jest właścicielem okna dialogowego.

lpDialogProc
[in] Wskazuje procedurę okna dialogowego. Aby uzyskać więcej informacji na temat procedury okna dialogowego, zobacz DialogProc.

dwInitParam
[in] Określa wartość, która ma być przekazywana do okna dialogowego w parametrze lParam komunikatu WM_INITDIALOG.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

Uwagi

Wynikowe okno dialogowe może zawierać kontrolki ActiveX.

Zobacz CreateDialog i CreateDialogParam w zestawie Windows SDK.

AtlAxCreateControl

Tworzy formant ActiveX, inicjuje go i umieszcza w określonym oknie.

ATLAPI AtlAxCreateControl(
    LPCOLESTR lpszName,
    HWND hWnd,
    IStream* pStream,
    IUnknown** ppUnkContainer);

Parametry

lpszName
Wskaźnik do ciągu, który ma zostać przekazany do kontrolki. Należy sformatować w jeden z następujących sposobów:

  • Identyfikator progowy, taki jak "MSCAL.Calendar.7"

  • Identyfikator CLSID, taki jak "{8E27C92B-1264-101C-8A2F-040224009C02}"

  • Adres URL, taki jak "<https://www.microsoft.com>"

  • Odwołanie do aktywnego dokumentu, takiego jak "file://\\\Documents\MyDoc.doc"

  • Fragment kodu HTML, taki jak "MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"

    Uwaga

    "MSHTML:" musi poprzedzać fragment HTML, tak aby został wyznaczony jako strumień MSHTML.

hWnd
[in] Dojmij do okna, do którego zostanie dołączona kontrolka.

pStream
[in] Wskaźnik do strumienia używanego do inicjowania właściwości kontrolki. Może mieć wartość NULL.

ppUnkContainer
[out] Adres wskaźnika, który otrzyma IUnknown kontener. Może mieć wartość NULL.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

Uwagi

Ta funkcja globalna daje taki sam wynik jak wywoływanie atlAxCreateControlEx(lpszName, hWnd, pStream, NULL, NULL, NULL, NULL, NULL);

Aby utworzyć licencjonowany formant ActiveX, zobacz AtlAxCreateControlLic.

AtlAxCreateControlEx

Tworzy formant ActiveX, inicjuje go i umieszcza w określonym oknie. Można również utworzyć wskaźnik interfejsu i zbiornik zdarzenia dla nowego formantu.

ATLAPI AtlAxCreateControlEx(
    LPCOLESTR lpszName,
    HWND hWnd,
    IStream* pStream,
    IUnknown** ppUnkContainer,
    IUnknown** ppUnkControl,
    REFIID iidSink = IID_NULL,
    IUnknown* punkSink = NULL);

Parametry

lpszName
Wskaźnik do ciągu, który ma zostać przekazany do kontrolki. Należy sformatować w jeden z następujących sposobów:

  • Identyfikator progowy, taki jak "MSCAL.Calendar.7"

  • Identyfikator CLSID, taki jak "{8E27C92B-1264-101C-8A2F-040224009C02}"

  • Adres URL, taki jak "<https://www.microsoft.com>"

  • Odwołanie do aktywnego dokumentu, takiego jak "file://\\\Documents\MyDoc.doc"

  • Fragment kodu HTML, taki jak "MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"

    Uwaga

    "MSHTML:" musi poprzedzać fragment HTML, tak aby został wyznaczony jako strumień MSHTML.

hWnd
[in] Dojmij do okna, do którego zostanie dołączona kontrolka.

pStream
[in] Wskaźnik do strumienia używanego do inicjowania właściwości kontrolki. Może mieć wartość NULL.

ppUnkContainer
[out] Adres wskaźnika, który otrzyma IUnknown kontener. Może mieć wartość NULL.

ppUnkControl
[out] Adres wskaźnika, który otrzyma IUnknown utworzoną kontrolkę. Może mieć wartość NULL.

iidSink
Identyfikator interfejsu interfejsu wychodzącego w zawartym obiekcie.

punkSink
Wskaźnik do IUnknown interfejsu obiektu ujścia, który ma być połączony z punktem połączenia określonym przez iidSink na zawartym obiekcie po pomyślnym utworzeniu zawartego obiektu.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

Uwagi

AtlAxCreateControlEx Jest podobny do AtlAxCreateControl , ale umożliwia również odbieranie wskaźnika interfejsu do nowo utworzonej kontrolki i skonfigurowanie ujścia zdarzeń w celu odbierania zdarzeń wyzwalanych przez kontrolkę.

Aby utworzyć licencjonowany formant ActiveX, zobacz AtlAxCreateControlLicEx.

AtlAxCreateControlLic

Tworzy licencjonowany formant ActiveX, inicjuje go i umieszcza w określonym oknie.

ATLAPI AtlAxCreateControlLic(
    LPCOLESTR lpszName,
    HWND hWnd,
    IStream* pStream,
    IUnknown** ppUnkContainer,
    BSTR bstrLic = NULL);

Parametry

lpszName
Wskaźnik do ciągu, który ma zostać przekazany do kontrolki. Należy sformatować w jeden z następujących sposobów:

  • Identyfikator progowy, taki jak "MSCAL.Calendar.7"

  • Identyfikator CLSID, taki jak "{8E27C92B-1264-101C-8A2F-040224009C02}"

  • Adres URL, taki jak "<https://www.microsoft.com>"

  • Odwołanie do aktywnego dokumentu, takiego jak "file://\\\Documents\MyDoc.doc"

  • Fragment kodu HTML, taki jak "MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"

    Uwaga

    "MSHTML:" musi poprzedzać fragment HTML, tak aby został wyznaczony jako strumień MSHTML.

hWnd
Dojmij do okna, do którego zostanie dołączona kontrolka.

pStream
Wskaźnik do strumienia używanego do inicjowania właściwości kontrolki. Może mieć wartość NULL.

ppUnkContainer
Adres wskaźnika, który otrzyma IUnknown kontener. Może mieć wartość NULL.

bstrLic
Ciąg BSTR zawierający licencję dla kontrolki.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

Przykład

Zobacz Hostowanie kontrolek ActiveX przy użyciu atL AXHost , aby zapoznać się z przykładem sposobu używania programu AtlAxCreateControlLic.

AtlAxCreateControlLicEx

Tworzy licencjonowany formant ActiveX, inicjuje go i umieszcza w określonym oknie. Można również utworzyć wskaźnik interfejsu i zbiornik zdarzenia dla nowego formantu.

ATLAPI AtlAxCreateControlLicEx(
    LPCOLESTR lpszName,
    HWND hWnd,
    IStream* pStream,
    IUnknown** ppUnkContainer,
    IUnknown** ppUnkControl,
    REFIID iidSink = IID_NULL,
    IUnknown* punkSink = NULL,
    BSTR bstrLic = NULL);

Parametry

lpszName
Wskaźnik do ciągu, który ma zostać przekazany do kontrolki. Należy sformatować w jeden z następujących sposobów:

  • Identyfikator progowy, taki jak "MSCAL.Calendar.7"

  • Identyfikator CLSID, taki jak "{8E27C92B-1264-101C-8A2F-040224009C02}"

  • Adres URL, taki jak "<https://www.microsoft.com>"

  • Odwołanie do aktywnego dokumentu, takiego jak "file://\\\Documents\MyDoc.doc"

  • Fragment kodu HTML, taki jak "MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"

    Uwaga

    "MSHTML:" musi poprzedzać fragment HTML, tak aby został wyznaczony jako strumień MSHTML.

hWnd
Dojmij do okna, do którego zostanie dołączona kontrolka.

pStream
Wskaźnik do strumienia używanego do inicjowania właściwości kontrolki. Może mieć wartość NULL.

ppUnkContainer
Adres wskaźnika, który otrzyma IUnknown kontener. Może mieć wartość NULL.

ppUnkControl
[out] Adres wskaźnika, który otrzyma IUnknown utworzoną kontrolkę. Może mieć wartość NULL.

iidSink
Identyfikator interfejsu interfejsu wychodzącego w zawartym obiekcie.

punkSink
Wskaźnik do IUnknown interfejsu obiektu ujścia, który ma być połączony z punktem połączenia określonym przez iidSink na zawartym obiekcie po pomyślnym utworzeniu zawartego obiektu.

bstrLic
Ciąg BSTR zawierający licencję dla kontrolki.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

Uwagi

AtlAxCreateControlLicEx Jest podobny do AtlAxCreateControlLic , ale umożliwia również odbieranie wskaźnika interfejsu do nowo utworzonej kontrolki i skonfigurowanie ujścia zdarzeń w celu odbierania zdarzeń wyzwalanych przez kontrolkę.

Przykład

Zobacz Hostowanie kontrolek ActiveX przy użyciu atL AXHost , aby zapoznać się z przykładem sposobu używania programu AtlAxCreateControlLicEx.

AtlAxAttachControl

Dołącza wcześniej utworzony formant do określonego okna.

ATLAPI AtlAxAttachControl(
    IUnknown* pControl,
    HWND hWnd,
    IUnknown** ppUnkContainer);

Parametry

pControl
[in] Wskaźnik do IUnknown kontrolki.

hWnd
[in] Dojście do okna, które będzie hostować kontrolkę.

ppUnkContainer
[out] Wskaźnik do wskaźnika do IUnknown obiektu kontenera.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

Uwagi

Użyj atlAxCreateControlEx i AtlAxCreateControl , aby jednocześnie utworzyć i dołączyć kontrolkę.

Uwaga

Obiekt sterujący, który jest dołączony, musi być poprawnie zainicjowany przed wywołaniem metody AtlAxAttachControl.

AtlAxGetHost

Uzyskuje bezpośredni wskaźnik interfejsu do kontenera dla określonego okna (o ile istnieje), biorąc pod uwagę jego uchwyt.

ATLAPI AtlAxGetHost(HWND h, IUnknown** pp);

Parametry

h
[in] Dojście do okna obsługującego kontrolkę.

Pp
[out] Kontener IUnknown kontrolki.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

AtlAxGetControl

Uzyskuje bezpośredni wskaźnik interfejsu do formantu zawartego wewnątrz określonego okna, biorąc pod uwagę jego uchwyt.

ATLAPI AtlAxGetControl(HWND h, IUnknown** pp);

Parametry

h
[in] Dojście do okna obsługującego kontrolkę.

Pp
[out] Kontrolka IUnknown hostowana.

Wartość zwracana

Jedna ze standardowych wartości HRESULT.

AtlSetChildSite

Wywołaj tę funkcję, aby ustawić lokację obiektu podrzędnego na IUnknown obiekt nadrzędny.

HRESULT AtlSetChildSite(IUnknown* punkChild, IUnknown* punkParent);

Parametry

punkChild
[in] Wskaźnik do IUnknown interfejsu elementu podrzędnego.

punkParent
[in] Wskaźnik do IUnknown interfejsu elementu nadrzędnego.

Wartość zwracana

Standardowa wartość HRESULT.

AtlAxWinInit

Ta funkcja inicjuje kod hostingu kontrolki ATL, rejestrując klasy okien "AtlAxWin80" i "AtlAxWinLic80" oraz kilka niestandardowych komunikatów okien.

ATLAPI_(BOOL) AtlAxWinInit();

Wartość zwracana

Nonzero, jeśli inicjowanie kodu hostingu kontroli zakończyło się pomyślnie; w przeciwnym razie FAŁSZ.

Uwagi

Ta funkcja musi być wywoływana przed użyciem interfejsu API hostingu kontrolki ATL. Po wywołaniu tej funkcji klasę okna "AtlAxWin" można używać w wywołaniach metody CreateWindow lub CreateWindowEx zgodnie z opisem w zestawie WINDOWS SDK.

AtlAxWinTerm

Ta funkcja uninitializuje kod hostingu kontrolki ATL przez wyrejestrowanie klas okien "AtlAxWin80" i "AtlAxWinLic80".

inline BOOL AtlAxWinTerm();

Wartość zwracana

Zawsze zwraca wartość TRUE.

Uwagi

Ta funkcja po prostu wywołuje metodę UnregisterClass zgodnie z opisem w zestawie Windows SDK.

Wywołaj tę funkcję, aby wyczyścić wszystkie istniejące okna hosta zostały zniszczone, jeśli wywołano funkcję AtlAxWinInit i nie trzeba już tworzyć okien hostów. Jeśli ta funkcja nie zostanie wywołana, klasa okna zostanie automatycznie wyrejestrowana po zakończeniu procesu.

AtlGetObjectSourceInterface

Wywołaj tę funkcję, aby pobrać informacje o domyślnym interfejsie źródła obiektu.

ATLAPI AtlGetObjectSourceInterface(
    IUnknown* punkObj,
    GUID* plibid,
    IID* piid,
    unsigned short* pdwMajor,
    unsigned short* pdwMinor);

Parametry

punkObj
[in] Wskaźnik do obiektu, dla którego mają zostać zwrócone informacje.

plibid
[out] Wskaźnik do LIBID biblioteki typów zawierającej definicję interfejsu źródłowego.

piid
[out] Wskaźnik do identyfikatora interfejsu domyślnego interfejsu źródłowego obiektu.

pdwMajor
[out] Wskaźnik do numeru wersji głównej biblioteki typów zawierającej definicję interfejsu źródłowego.

pdwMinor
[out] Wskaźnik do pomocniczego numeru wersji biblioteki typów zawierającej definicję interfejsu źródłowego.

Wartość zwracana

Standardowa wartość HRESULT.

Uwagi

AtlGetObjectSourceInterface Może podać identyfikator interfejsu domyślnego interfejsu źródłowego wraz z identyfikatorem LIBID oraz numerami wersji głównej i pomocniczej biblioteki typów opisującej ten interfejs.

Uwaga

Aby ta funkcja mogła pomyślnie pobrać żądane informacje, obiekt reprezentowany przez obiekt punkObj musi implementować IDispatch (i zwracać informacje o typie za pomocą IDispatch::GetTypeInfometody ), a także musi zaimplementować IProvideClassInfo2 element lub IPersist. Informacje o typie interfejsu źródłowego muszą znajdować się w tej samej bibliotece typów co informacje o typie dla elementu IDispatch.

Przykład

W poniższym przykładzie pokazano, jak można zdefiniować klasę ujścia zdarzeń , CEasySinkktóra zmniejsza liczbę argumentów szablonu, które można przekazać do IDispEventImpl podstawowych elementów podstawowych. EasyAdvise i EasyUnadvise użyj polecenia AtlGetObjectSourceInterface , aby zainicjować elementy członkowskie IDispEventImpl przed wywołaniem metody DispEventAdvise lub 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);
   }
};

Zobacz też

Funkcje
Makra kontrolek złożonych