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::GetTypeInfo
metody ), 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ń , CEasySink
któ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);
}
};