복합 컨트롤 전역 함수
이러한 함수는 대화 상자를 만들고 ActiveX 컨트롤을 만들고 호스팅하고 라이선스를 부여할 수 있도록 지원합니다.
Important
다음 표에 나열된 함수는 Windows 런타임 실행되는 애플리케이션에서 사용할 수 없습니다.
함수 | 설명 |
---|---|
AtlAxDialogBox | 사용자가 제공한 대화 상자 템플릿에서 모달 대화 상자를 만듭니다. 결과 대화 상자에는 ActiveX 컨트롤이 포함될 수 있습니다. |
AtlAxCreateDialog | 사용자가 제공한 대화 상자 템플릿에서 모덜리스 대화 상자를 만듭니다. 결과 대화 상자에는 ActiveX 컨트롤이 포함될 수 있습니다. |
AtlAxCreateControl | ActiveX 컨트롤을 만들고 초기화하며 지정한 창에 호스팅합니다. |
AtlAxCreateControlEx | ActiveX 컨트롤을 만들고, 초기화하고, 지정된 창에서 호스트하고, 컨트롤에서 인터페이스 포인터(또는 포인터)를 검색합니다. |
AtlAxCreateControlLic | 사용 허가를 받은 ActiveX 컨트롤을 만들고 초기화하며 지정한 창에 호스팅합니다. |
AtlAxCreateControlLicEx | 사용이 허가된 ActiveX 컨트롤을 만들고, 초기화하고, 지정된 창에서 호스트하고, 컨트롤에서 인터페이스 포인터(또는 포인터)를 검색합니다. |
AtlAxAttachControl | 지정한 창에 이전에 만든 컨트롤을 연결합니다. |
AtlAxGetHost | 지정된 창에 대한 컨테이너에 대한 직접 인터페이스 포인터(있는 경우)를 가져오는 데 사용됩니다. |
AtlAxGetControl | 핸들이 지정된 경우 지정된 창 내에 포함된 컨트롤에 대한 직접 인터페이스 포인터를 가져오는 데 사용됩니다. |
AtlSetChildSite | 자식 사이트의 초기화 IUnknown 합니다. |
AtlAxWinInit | AxWin 개체에 대한 호스팅 코드를 초기화합니다. |
AtlAxWinTerm | AxWin 개체에 대한 호스팅 코드를 초기화하지 않습니다. |
AtlGetObjectSourceInterface | 개체의 기본 원본 인터페이스에 대한 정보를 반환합니다. |
요구 사항
헤더: atlhost.h
AtlAxDialogBox
사용자가 제공한 대화 상자 템플릿에서 모달 대화 상자를 만듭니다.
ATLAPI_(int) AtlAxDialogBox(
HINSTANCE hInstance,
LPCWSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogProc,
LPARAM dwInitParam);
매개 변수
hInstance
[in] 실행 파일에 대화 상자 템플릿이 포함된 모듈의 인스턴스를 식별합니다.
lpTemplateName
[in] 대화 상자 템플릿을 식별합니다. 이 매개 변수는 대화 상자 템플릿의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터이거나 대화 상자 템플릿의 리소스 식별자를 지정하는 정수 값입니다. 매개 변수가 리소스 식별자를 지정하는 경우 상위 단어는 0이어야 하며 하위 단어에는 식별자가 포함되어야 합니다. MAKEINTRESOURCE 매크로를 사용하여 이 값을 만들 수 있습니다.
hWndParent
[in] 대화 상자를 소유하는 창을 식별합니다.
lpDialogProc
[in] 대화 상자 프로시저를 가리킵니다. 대화 상자 프로시저에 대한 자세한 내용은 DialogProc을 참조하세요.
dwInitParam
[in] WM_INITDIALOG 메시지의 lParam 매개 변수에 있는 대화 상자에 전달할 값을 지정합니다.
Return Value
표준 HRESULT 값 중 하나입니다.
설명
ActiveX 컨트롤이 포함된 대화 상자 템플릿과 함께 사용 AtlAxDialogBox
하려면 유효한 CLSID, APPID 또는 URL 문자열을 대화 리소스의 CONTROL 섹션 텍스트 필드로 지정하고 동일한 섹션의 클래스 이름 필드로 "AtlAxWin80"을 지정합니다. 다음은 유효한 CONTROL 섹션의 모양을 보여 줍니다.
CONTROL "{04FE35E9-ADBC-4f1d-83FE-8FA4D1F71C7F}", IDC_TEST,
"AtlAxWin80", WS_GROUP | WS_TABSTOP, 0, 0, 100, 100
리소스 스크립트 편집에 대한 자세한 내용은 방법: 리소스 만들기를 참조 하세요. 컨트롤 리소스 정의 문 에 대한 자세한 내용은 Windows SDK: SDK 도구 아래의 공용 제어 매개 변수 를 참조하세요.
일반적으로 대화 상자에 대한 자세한 내용은 Windows SDK의 DialogBox 및 CreateDialogParam 을 참조하세요.
AtlAxCreateDialog
사용자가 제공한 대화 상자 템플릿에서 모덜리스 대화 상자를 만듭니다.
ATLAPI_(HWND) AtlAxCreateDialog(
HINSTANCE hInstance,
LPCWSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogProc,
LPARAM dwInitParam);
매개 변수
hInstance
[in] 실행 파일에 대화 상자 템플릿이 포함된 모듈의 인스턴스를 식별합니다.
lpTemplateName
[in] 대화 상자 템플릿을 식별합니다. 이 매개 변수는 대화 상자 템플릿의 이름을 지정하는 null로 끝나는 문자열에 대한 포인터이거나 대화 상자 템플릿의 리소스 식별자를 지정하는 정수 값입니다. 매개 변수가 리소스 식별자를 지정하는 경우 상위 단어는 0이어야 하며 하위 단어에는 식별자가 포함되어야 합니다. MAKEINTRESOURCE 매크로를 사용하여 이 값을 만들 수 있습니다.
hWndParent
[in] 대화 상자를 소유하는 창을 식별합니다.
lpDialogProc
[in] 대화 상자 프로시저를 가리킵니다. 대화 상자 프로시저에 대한 자세한 내용은 DialogProc을 참조하세요.
dwInitParam
[in] WM_INITDIALOG 메시지의 lParam 매개 변수에 있는 대화 상자에 전달할 값을 지정합니다.
Return Value
표준 HRESULT 값 중 하나입니다.
설명
결과 대화 상자에는 ActiveX 컨트롤이 포함될 수 있습니다.
Windows SDK에서 CreateDialog 및 CreateDialogParam을 참조하세요.
AtlAxCreateControl
ActiveX 컨트롤을 만들고 초기화하며 지정한 창에 호스팅합니다.
ATLAPI AtlAxCreateControl(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer);
매개 변수
lpszName
컨트롤에 전달할 문자열에 대한 포인터입니다. 다음 방법 중 하나로 서식을 지정해야 합니다.
ProgID
"MSCAL.Calendar.7"
다음과 같은 CLSID
"{8E27C92B-1264-101C-8A2F-040224009C02}"
URL(예: )<
"<https://www.microsoft.com>"
활성 문서에 대한 참조(예: )
"file://\\\Documents\MyDoc.doc"
와 같은 HTML의 조각
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
참고 항목
"MSHTML:"
는 MSHTML 스트림으로 지정되도록 HTML 조각 앞에 와야 합니다.
hWnd
[in] 컨트롤이 연결될 창에 대한 핸들입니다.
pStream
[in] 컨트롤의 속성을 초기화하는 데 사용되는 스트림에 대한 포인터입니다. NULL일 수 있습니다.
ppUnkContainer
[out] 컨테이너를 받을 IUnknown
포인터의 주소입니다. NULL일 수 있습니다.
Return Value
표준 HRESULT 값 중 하나입니다.
설명
이 전역 함수는 AtlAxCreateControlEx(lpszName, hWnd, pStream, NULL, NULL, NULL, NULL);를 호출하는 것과 동일한 결과를 제공합니다.
라이선스가 부여된 ActiveX 컨트롤을 만들려면 AtlAxCreateControlLic을 참조하세요.
AtlAxCreateControlEx
ActiveX 컨트롤을 만들고 초기화하며 지정한 창에 호스팅합니다. 새 컨트롤에 대한 인터페이스 포인터와 이벤트 싱크를 만들 수도 있습니다.
ATLAPI AtlAxCreateControlEx(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
IUnknown** ppUnkControl,
REFIID iidSink = IID_NULL,
IUnknown* punkSink = NULL);
매개 변수
lpszName
컨트롤에 전달할 문자열에 대한 포인터입니다. 다음 방법 중 하나로 서식을 지정해야 합니다.
ProgID
"MSCAL.Calendar.7"
다음과 같은 CLSID
"{8E27C92B-1264-101C-8A2F-040224009C02}"
URL(예: )<
"<https://www.microsoft.com>"
활성 문서에 대한 참조(예: )
"file://\\\Documents\MyDoc.doc"
와 같은 HTML의 조각
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
참고 항목
"MSHTML:"
는 MSHTML 스트림으로 지정되도록 HTML 조각 앞에 와야 합니다.
hWnd
[in] 컨트롤이 연결될 창에 대한 핸들입니다.
pStream
[in] 컨트롤의 속성을 초기화하는 데 사용되는 스트림에 대한 포인터입니다. NULL일 수 있습니다.
ppUnkContainer
[out] 컨테이너를 받을 IUnknown
포인터의 주소입니다. NULL일 수 있습니다.
ppUnkControl
[out] 만든 컨트롤을 받을 IUnknown
포인터의 주소입니다. NULL일 수 있습니다.
iidSink
포함된 개체에서 나가는 인터페이스의 인터페이스 식별자입니다.
punkSink
포함된 개체를 IUnknown
성공적으로 만든 후 포함된 개체의 iidSink에서 지정한 연결점에 연결할 싱크 개체의 인터페이스에 대한 포인터입니다.
Return Value
표준 HRESULT 값 중 하나입니다.
설명
AtlAxCreateControlEx
는 AtlAxCreateControl과 유사하지만 새로 만든 컨트롤에 대한 인터페이스 포인터를 수신하고 컨트롤에서 발생한 이벤트를 수신하도록 이벤트 싱크를 설정할 수도 있습니다.
라이선스가 부여된 ActiveX 컨트롤을 만들려면 AtlAxCreateControlLicEx를 참조하세요.
AtlAxCreateControlLic
사용 허가를 받은 ActiveX 컨트롤을 만들고 초기화하며 지정한 창에 호스팅합니다.
ATLAPI AtlAxCreateControlLic(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
BSTR bstrLic = NULL);
매개 변수
lpszName
컨트롤에 전달할 문자열에 대한 포인터입니다. 다음 방법 중 하나로 서식을 지정해야 합니다.
ProgID
"MSCAL.Calendar.7"
다음과 같은 CLSID
"{8E27C92B-1264-101C-8A2F-040224009C02}"
URL(예: )<
"<https://www.microsoft.com>"
활성 문서에 대한 참조(예: )
"file://\\\Documents\MyDoc.doc"
와 같은 HTML의 조각
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
참고 항목
"MSHTML:"
는 MSHTML 스트림으로 지정되도록 HTML 조각 앞에 와야 합니다.
hWnd
컨트롤이 연결될 창에 대한 핸들입니다.
pStream
컨트롤의 속성을 초기화하는 데 사용되는 스트림에 대한 포인터입니다. NULL일 수 있습니다.
ppUnkContainer
컨테이너를 받을 IUnknown
포인터의 주소입니다. NULL일 수 있습니다.
bstrLic
컨트롤에 대한 라이선스가 포함된 BSTR입니다.
Return Value
표준 HRESULT 값 중 하나입니다.
예시
사용 AtlAxCreateControlLic
방법에 대한 샘플은 ATL AXHost를 사용하여 ActiveX 컨트롤 호스팅을 참조하세요.
AtlAxCreateControlLicEx
사용 허가를 받은 ActiveX 컨트롤을 만들고 초기화하며 지정한 창에 호스팅합니다. 새 컨트롤에 대한 인터페이스 포인터와 이벤트 싱크를 만들 수도 있습니다.
ATLAPI AtlAxCreateControlLicEx(
LPCOLESTR lpszName,
HWND hWnd,
IStream* pStream,
IUnknown** ppUnkContainer,
IUnknown** ppUnkControl,
REFIID iidSink = IID_NULL,
IUnknown* punkSink = NULL,
BSTR bstrLic = NULL);
매개 변수
lpszName
컨트롤에 전달할 문자열에 대한 포인터입니다. 다음 방법 중 하나로 서식을 지정해야 합니다.
ProgID
"MSCAL.Calendar.7"
다음과 같은 CLSID
"{8E27C92B-1264-101C-8A2F-040224009C02}"
URL(예: )<
"<https://www.microsoft.com>"
활성 문서에 대한 참조(예: )
"file://\\\Documents\MyDoc.doc"
와 같은 HTML의 조각
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
참고 항목
"MSHTML:"
는 MSHTML 스트림으로 지정되도록 HTML 조각 앞에 와야 합니다.
hWnd
컨트롤이 연결될 창에 대한 핸들입니다.
pStream
컨트롤의 속성을 초기화하는 데 사용되는 스트림에 대한 포인터입니다. NULL일 수 있습니다.
ppUnkContainer
컨테이너를 받을 IUnknown
포인터의 주소입니다. NULL일 수 있습니다.
ppUnkControl
[out] 만든 컨트롤을 받을 IUnknown
포인터의 주소입니다. NULL일 수 있습니다.
iidSink
포함된 개체에서 나가는 인터페이스의 인터페이스 식별자입니다.
punkSink
포함된 개체를 IUnknown
성공적으로 만든 후 포함된 개체의 iidSink에서 지정한 연결점에 연결할 싱크 개체의 인터페이스에 대한 포인터입니다.
bstrLic
컨트롤에 대한 라이선스가 포함된 BSTR입니다.
Return Value
표준 HRESULT 값 중 하나입니다.
설명
AtlAxCreateControlLicEx
는 AtlAxCreateControlLic과 유사하지만 새로 만든 컨트롤에 대한 인터페이스 포인터를 수신하고 컨트롤에서 발생한 이벤트를 수신하도록 이벤트 싱크를 설정할 수도 있습니다.
예시
사용 AtlAxCreateControlLicEx
방법에 대한 샘플은 ATL AXHost를 사용하여 ActiveX 컨트롤 호스팅을 참조하세요.
AtlAxAttachControl
지정한 창에 이전에 만든 컨트롤을 연결합니다.
ATLAPI AtlAxAttachControl(
IUnknown* pControl,
HWND hWnd,
IUnknown** ppUnkContainer);
매개 변수
pControl
[in] 컨트롤의 IUnknown
포인터입니다.
hWnd
[in] 컨트롤을 호스트할 창에 대한 핸들입니다.
ppUnkContainer
[out] 컨테이너 개체에 대한 포인터에 IUnknown
대한 포인터입니다.
Return Value
표준 HRESULT 값 중 하나입니다.
설명
AtlAxCreateControlEx 및 AtlAxCreateControl을 사용하여 동시에 컨트롤을 만들고 연결합니다.
참고 항목
연결 중인 컨트롤 개체를 호출 AtlAxAttachControl
하기 전에 올바르게 초기화해야 합니다.
AtlAxGetHost
핸들이 제공되는 지정된 창(있는 경우)의 컨테이너에 직접 인터페이스 포인터를 가져옵니다.
ATLAPI AtlAxGetHost(HWND h, IUnknown** pp);
매개 변수
시간
[in] 컨트롤을 호스팅하는 창에 대한 핸들입니다.
pp
[out] IUnknown
컨트롤의 컨테이너입니다.
Return Value
표준 HRESULT 값 중 하나입니다.
AtlAxGetControl
핸들이 제공되는 지정된 창 내에 포함된 컨트롤에 직접 인터페이스 포인터를 가져옵니다.
ATLAPI AtlAxGetControl(HWND h, IUnknown** pp);
매개 변수
시간
[in] 컨트롤을 호스팅하는 창에 대한 핸들입니다.
pp
[out] IUnknown
호스트되는 컨트롤의입니다.
Return Value
표준 HRESULT 값 중 하나입니다.
AtlSetChildSite
자식 개체의 사이트를 부모 개체의 사이트로 설정하려면 이 함수를 IUnknown
호출합니다.
HRESULT AtlSetChildSite(IUnknown* punkChild, IUnknown* punkParent);
매개 변수
punkChild
[in] 자식의 인터페이스에 IUnknown
대한 포인터입니다.
punkParent
[in] 부모의 인터페이스에 IUnknown
대한 포인터입니다.
Return Value
표준 HRESULT 값입니다.
AtlAxWinInit
이 함수는 "AtlAxWin80" 및 "AtlAxWinLic80" 창 클래스와 몇 가지 사용자 지정 창 메시지를 등록하여 ATL의 컨트롤 호스팅 코드를 초기화합니다.
ATLAPI_(BOOL) AtlAxWinInit();
Return Value
컨트롤 호스팅 코드의 초기화가 성공한 경우 0이 아닌 경우 그렇지 않으면 FALSE입니다.
설명
이 함수는 ATL 컨트롤 호스팅 API를 사용하기 전에 호출해야 합니다. 이 함수를 호출한 후 Windows SDK에 설명된 대로 CreateWindow 또는 CreateWindowEx에 대한 호출에서 "AtlAxWin" 창 클래스를 사용할 수 있습니다.
AtlAxWinTerm
이 함수는 "AtlAxWin80" 및 "AtlAxWinLic80" 창 클래스의 등록을 취소하여 ATL의 컨트롤 호스팅 코드를 초기화하지 않습니다.
inline BOOL AtlAxWinTerm();
Return Value
항상 TRUE를 반환합니다.
설명
이 함수는 Windows SDK에 설명된 대로 UnregisterClass를 호출합니다.
AtlAxWinInit을 호출하고 더 이상 호스트 창을 만들 필요가 없는 경우 기존 호스트 창이 모두 제거된 후 이 함수를 호출하여 정리합니다. 이 함수를 호출하지 않으면 프로세스가 종료될 때 창 클래스가 자동으로 등록 취소됩니다.
AtlGetObjectSourceInterface
개체의 기본 소스 인터페이스에 대한 정보를 검색하려면 이 함수를 호출합니다.
ATLAPI AtlGetObjectSourceInterface(
IUnknown* punkObj,
GUID* plibid,
IID* piid,
unsigned short* pdwMajor,
unsigned short* pdwMinor);
매개 변수
punkObj
[in] 정보를 반환할 개체에 대한 포인터입니다.
plibid
[out] 소스 인터페이스의 정의를 포함하는 형식 라이브러리의 LIBID에 대한 포인터입니다.
piid
[out] 개체의 기본 소스 인터페이스의 인터페이스 ID에 대한 포인터입니다.
pdwMajor
[out] 소스 인터페이스의 정의를 포함하는 형식 라이브러리의 주 버전 번호에 대한 포인터입니다.
pdwMinor
[out] 소스 인터페이스의 정의를 포함하는 형식 라이브러리의 부 버전 번호에 대한 포인터입니다.
Return Value
표준 HRESULT 값입니다.
설명
AtlGetObjectSourceInterface
는 해당 인터페이스를 설명하는 형식 라이브러리의 LIBID 및 주 및 부 버전 번호와 함께 기본 소스 인터페이스의 인터페이스 ID를 제공할 수 있습니다.
참고 항목
이 함수가 요청된 정보를 성공적으로 검색하려면 punkObj로 표현되는 개체를 구현 IDispatch
하고 형식 정보를 IDispatch::GetTypeInfo
반환해야 하며 또한 구현 IProvideClassInfo2
해야 IPersist
합니다. 원본 인터페이스의 형식 정보는 에 대한 형식 정보와 IDispatch
동일한 형식 라이브러리에 있어야 합니다.
예시
아래 예제에서는 bare essentials에 전달할 수 있는 템플릿 인수의 수를 줄이는 이벤트 싱크 클래스 CEasySink
를 IDispEventImpl
정의하는 방법을 보여 줍니다. EasyAdvise
DispEventAdvise EasyUnadvise
또는 DispEventUnadvise를 호출하기 전에 IDispEventImpl 멤버를 초기화하는 데 사용합니다AtlGetObjectSourceInterface
.
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);
}
};