CAxWindow 类
此类提供用于操作托管 ActiveX 控件的窗口的方法。
重要
无法在 Windows 运行时中执行的应用程序中使用此类及其成员。
语法
class CAxWindow : public CWindow
成员
方法
函数 | 说明 |
---|---|
AttachControl | 将现有 ActiveX 控件附加到 CAxWindow 对象。 |
CAxWindow | 构造 CAxWindow 对象。 |
CreateControl | 创建 ActiveX 控件,对其进行初始化,并将其托管在 CAxWindow 窗口中。 |
CreateControlEx | 创建 ActiveX 控件,并从该控件检索一个接口指针(或多个指针)。 |
GetWndClassName | (静态)检索 CAxWindow 对象的预定义类名。 |
QueryControl | 检索托管 ActiveX 控件的 IUnknown 。 |
QueryHost | 检索 CAxWindow 对象的 IUnknown 指针。 |
SetExternalDispatch | 设置 CAxWindow 对象使用的外部调度接口。 |
SetExternalUIHandler | 设置 CAxWindow 对象使用的外部 IDocHostUIHandler 接口。 |
运算符
运算符 | 说明 |
---|---|
operator = | 将 HWND 分配到现有的 CAxWindow 对象。 |
备注
此类提供用于操作托管 ActiveX 控件的窗口的方法。 托管由“AtlAxWin80”提供,后者由 CAxWindow
包装。
CAxWindow
类实现为 CAxWindowT
类的专用化。 该专用化声明为:
typedef CAxWindowT<CWindow> CAxWindow;
如果需要更改基类,可以使用 CAxWindowT
并将新的基类指定为模板参数。
要求
标头:atlwin.h
CAxWindow::AttachControl
创建新的宿主对象(如果不存在),并将指定的控件附加到宿主。
HRESULT AttachControl(
IUnknown* pControl,
IUnknown** ppUnkContainer);
参数
pControl
[in] 指向控件的 IUnknown
的指针。
ppUnkContainer
[out] 指向宿主的 IUnknown
(AxWin
对象)的指针。
返回值
标准 HRESULT 值。
备注
在调用 AttachControl
之前必须正确初始化所要附加的控件对象。
CAxWindow::CAxWindow
使用现有窗口对象句柄构造 CAxWindow
对象。
CAxWindow(HWND hWnd = NULL);
参数
hWnd
现有窗口对象的句柄。
CAxWindow::CreateControl
创建 ActiveX 控件,初始化它并在指定窗口中承载它。
HRESULT CreateControl(
LPCOLESTR lpszName,
IStream* pStream = NULL,
IUnknown** ppUnkContainer = NULL);
HRESULT CreateControl(
DWORD dwResID,
IStream* pStream = NULL,
IUnknown** ppUnkContainer = NULL);
参数
lpszName
指向用于创建控件的字符串的指针。 必须采用以下方法之一进行格式化:
ProgID,例如
"MSCAL.Calendar.7"
CLSID,例如
"{8E27C92B-1264-101C-8A2F-040224009C02}"
URL,例如
"<https://www.microsoft.com>"
对 Active 文档的引用,例如
"file://\\\Documents\MyDoc.doc"
HTML 的片段,例如
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
注意
"MSHTML:"
必须在 HTML 片段之前,以便将其指定为 MSHTML 流。 Windows Mobile 平台仅支持 ProgID 和 CLSID。 除了支持 CE IE 的 Windows Mobile 之外的 Windows CE 嵌入式平台支持所有类型,包括 ProgID、CLSID、URL、对 Active 文档的引用和 HTML 片段。
pStream
[in] 指向用于初始化控件属性的流的指针。 可以为 NULL。
ppUnkContainer
[out] 将接收容器的 IUnknown
的指针的地址。 可以为 NULL。
dwResID
HTML 资源的资源 ID。 将使用指定的资源创建和加载 WebBrowser 控件。
返回值
标准 HRESULT 值。
注解
如果使用此方法的第二个版本,则会创建一个 HTML 控件并将其绑定到由 dwResID 标识的资源。
此方法的结果与调用以下方法相同:
AtlAxCreateControlEx(lpszName, hWnd, pStream, NULL, NULL, GUID_NULL, NULL);
请参阅用于创建、初始化和托管已许可 ActiveX 控件的 CAxWindow2T::CreateControlLic。
示例
有关使用 CreateControl
的示例,请参阅使用 ATL AXHost 托管 ActiveX 控件。
CAxWindow::CreateControlEx
创建 ActiveX 控件,初始化它并在指定窗口中承载它。
HRESULT CreateControlEx(
LPCOLESTR lpszName,
IStream* pStream = NULL,
IUnknown** ppUnkContainer = NULL,
IUnknown** ppUnkControl = NULL,
REFIID iidSink = IID_NULL,
IUnknown* punkSink = NULL);
HRESULT CreateControlEx(
DWORD dwResID,
IStream* pStream = NULL,
IUnknown** ppUnkContainer = NULL,
IUnknown** ppUnkControl = NULL,
REFIID iidSink = IID_NULL,
IUnknown* punkSink = NULL);
参数
lpszName
指向用于创建控件的字符串的指针。 必须采用以下方法之一进行格式化:
ProgID,例如
"MSCAL.Calendar.7"
CLSID,例如
"{8E27C92B-1264-101C-8A2F-040224009C02}"
URL,例如
"<https://www.microsoft.com>"
对 Active 文档的引用,例如
"file://\\\Documents\MyDoc.doc"
HTML 的片段,例如
"MSHTML:\<HTML>\<BODY>This is a line of text\</BODY>\</HTML>"
注意
"MSHTML:"
必须在 HTML 片段之前,以便将其指定为 MSHTML 流。 Windows Mobile 平台仅支持 ProgID 和 CLSID。 除了支持 CE IE 的 Windows Mobile 之外的 Windows CE 嵌入式平台支持所有类型,包括 ProgID、CLSID、URL、对 Active 文档的引用和 HTML 片段。
pStream
[in] 指向用于初始化控件属性的流的指针。 可以为 NULL。
ppUnkContainer
[out] 将接收容器的 IUnknown
的指针的地址。 可以为 NULL。
ppUnkControl
[out] 将接收控件的 IUnknown
的指针的地址。 可以为 NULL。
iidSink
[in] 所包含对象的传出接口的接口标识符。 可为 IID_NULL。
punkSink
[in] 指向要连接到由 iidSink 指定的所含对象上的连接点的接收器对象的 IUnknown
接口的指针。
dwResID
[in] HTML 资源的资源 ID。 将使用指定的资源创建和加载 WebBrowser 控件。
返回值
标准 HRESULT 值。
备注
此方法类似于 CAxWindow::CreateControl,与该方法不同的是,CreateControlEx
还允许接收指向新建控件的接口指针,以及设置事件接收器以接收控件触发的事件。
请参阅用于创建、初始化和托管已许可 ActiveX 控件的 CAxWindow2T::CreateControlLicEx。
示例
有关使用 CreateControlEx
的示例,请参阅使用 ATL AXHost 托管 ActiveX 控件。
CAxWindow::GetWndClassName
检索窗口类的名称。
static LPCTSTR GetWndClassName();
返回值
一个指向字符串的指针,该字符串包含可以托管非许可 ActiveX 控件的窗口类的名称。
CAxWindow::operator =
将 HWND 分配到现有的 CAxWindow
对象。
CAxWindow<TBase>& operator=(HWND hWnd);
参数
hWnd
现有窗口的句柄。
返回值
返回对当前 CAxWindow
对象的引用。
CAxWindow::QueryControl
检索托管控件的指定接口。
HRESULT QueryControl(REFIID iid, void** ppUnk);
template <class Q>
HRESULT QueryControl(Q** ppUnk);
参数
iid
[in] 指定控件接口的 IID。
ppUnk
[out] 指向控件接口的指针。 在此方法的模板版本中,只要传递具有关联 UUID 的类型化接口,就不需要引用 ID。
Q
[in] 要查询的接口。
返回值
标准 HRESULT 值。
CAxWindow::QueryHost
返回宿主的指定接口。
HRESULT QueryHost(REFIID iid, void** ppUnk);
template <class Q>
HRESULT QueryHost(Q** ppUnk);
参数
iid
[in] 指定控件接口的 IID。
ppUnk
[out] 指向宿主上的接口的指针。 在此方法的模板版本中,只要传递具有关联 UUID 的类型化接口,就不需要引用 ID。
Q
[in] 要查询的接口。
返回值
标准 HRESULT 值。
注解
使用宿主的接口可以访问由 AxWin
实现的窗口托管代码的基础功能。
CAxWindow::SetExternalDispatch
设置 CAxWindow
对象的外部调度接口。
HRESULT SetExternalDispatch(IDispatch* pDisp);
参数
pDisp
[in] 指向 IDispatch
接口的指针。
返回值
标准 HRESULT 值。
CAxWindow::SetExternalUIHandler
设置 CAxWindow
对象的外部 IDocHostUIHandlerDispatch 接口。
HRESULT SetExternalUIHandler(IDocHostUIHandlerDispatch* pUIHandler);
参数
pUIHandler
[in] 指向 IDocHostUIHandlerDispatch
接口的指针。
返回值
标准 HRESULT 值。
备注
外部 IDocHostUIHandlerDispatch
接口由在宿主站点中查询 IDocHostUIHandlerDispatch
接口的控件使用。 WebBrowser 控件就是一个执行这种操作的控件。