CAxWindow 类

此类提供用于操作托管 ActiveX 控件的窗口的方法。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

class CAxWindow : public CWindow

成员

方法

Function 说明
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] 指向宿主的 IUnknownAxWin 对象)的指针。

返回值

标准 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 控件就是一个执行这种操作的控件。

另请参阅

ATLCON 示例
CWindow 类
复合控件基础知识
类概述
Control Containment FAQ