CAxWindow Class

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at CAxWindow Class.

This class provides methods for manipulating a window hosting an ActiveX control.

Important

This class and its members cannot be used in applications that execute in the Windows Runtime.

Syntax

class CAxWindow : public CWindow

Members

Methods

AttachControl Attaches an existing ActiveX control to the CAxWindow object.
CAxWindow Constructs a CAxWindow object.
CreateControl Creates an ActiveX control, initializes it, and hosts it in the CAxWindow window.
CreateControlEx Creates an ActiveX control and retrieves an interface pointer (or pointers) from the control.
GetWndClassName (Static) Retrieves the predefined class name of the CAxWindow object.
QueryControl Retrieves the IUnknown of the hosted ActiveX control.
QueryHost Retrieves the IUnknown pointer of the CAxWindow object.
SetExternalDispatch Sets the external dispatch interface used by the CAxWindow object.
SetExternalUIHandler Sets the external IDocHostUIHandler interface used by the CAxWindow object.

Operators

operator = Assigns an HWND to an existing CAxWindow object.

Remarks

This class provides methods for manipulating a window that hosts an ActiveX control. The hosting is provided by " AtlAxWin80", which is wrapped by CAxWindow.

Class CAxWindow is implemented as a specialization of the CAxWindowT class. This specialization is declared as:

typedef CAxWindowT<CWindow> CAxWindow;

If you need to change the base class, you can use CAxWindowT and specify the new base class as a template argument.

Requirements

Header: atlwin.h

CAxWindow::AttachControl

Creates a new host object if one isn't already present and attaches the specified control to the host.

HRESULT AttachControl(
    IUnknown* pControl,
    IUnknown** ppUnkContainer);

Parameters

pControl
[in] A pointer to the IUnknown of the control.

ppUnkContainer
[out] A pointer to the IUnknown of the host (the AxWin object).

Return Value

A standard HRESULT value.

Remarks

The control object being attached must be correctly initialized before calling AttachControl.

CAxWindow::CAxWindow

Constructs a CAxWindow object using an existing window object handle.

CAxWindow(HWND hWnd = NULL);

Parameters

hWnd
A handle to an existing window object.

CAxWindow::CreateControl

Creates an ActiveX control, initializes it, and hosts it in the specified window.

HRESULT CreateControl(
    LPCOLESTR lpszName,
    IStream* pStream = NULL,
    IUnknown** ppUnkContainer = NULL);

HRESULT CreateControl(
    DWORD dwResID,
    IStream* pStream = NULL,
    IUnknown** ppUnkContainer = NULL);

Parameters

lpszName
A pointer to a string to create the control. Must be formatted in one of the following ways:

  • A ProgID such as "MSCAL.Calendar.7"

  • A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"

  • A URL such as "https://www.microsoft.com"

  • A reference to an Active document such as "file://\\Documents\MyDoc.doc"

  • A fragment of HTML such as "MSHTML:<HTML><BODY>This is a line of text</BODY></HTML>"

    Note

    "MSHTML:" must precede the HTML fragment so that it is designated as being an MSHTML stream. Only the ProgID and CLSID are supported in Windows Mobile platforms. Windows CE embedded platforms, other than Windows Mobile with support for CE IE support all types including ProgID, CLSID, URL, reference to active document, and fragment of HTML.

pStream
[in] A pointer to a stream that is used to initialize the properties of the control. Can be NULL.

ppUnkContainer
[out] The address of a pointer that will receive the IUnknown of the container. Can be NULL.

dwResID
The resource ID of an HTML resource. The WebBrowser control will be created and loaded with the specified resource.

Return Value

A standard HRESULT value.

Remarks

If the second version of this method is used, an HTML control is created and bound to the resource identified by dwResID.

This method gives you the same result as calling:

   AtlAxCreateControlEx(lpszName, hWnd, pStream, NULL, NULL, GUID_NULL, NULL);

See CAxWindow2T::CreateControlLic to create, initialize, and host a licensed ActiveX control.

Example

See Hosting ActiveX Controls Using ATL AXHost for a sample that uses CreateControl.

CAxWindow::CreateControlEx

Creates an ActiveX control, initializes it, and hosts it in the specified window.

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);

Parameters

lpszName
A pointer to a string to create the control. Must be formatted in one of the following ways:

  • A ProgID such as "MSCAL.Calendar.7"

  • A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"

  • A URL such as "https://www.microsoft.com"

  • A reference to an Active document such as "file://\\Documents\MyDoc.doc"

  • A fragment of HTML such as "MSHTML:<HTML><BODY>This is a line of text</BODY></HTML>"

    Note

    "MSHTML:" must precede the HTML fragment so that it is designated as being an MSHTML stream. Only the ProgID and CLSID are supported in Windows Mobile platforms. Windows CE embedded platforms, other than Windows Mobile with support for CE IE support all types including ProgID, CLSID, URL, reference to active document, and fragment of HTML.

pStream
[in] A pointer to a stream that is used to initialize the properties of the control. Can be NULL.

ppUnkContainer
[out] The address of a pointer that will receive the IUnknown of the container. Can be NULL.

ppUnkControl
[out] The address of a pointer that will receive the IUnknown of the control. Can be NULL.

iidSink
[in] The interface identifier of an outgoing interface on the contained object. Can be IID_NULL.

punkSink
[in] A pointer to the IUnknown interface of the sink object to be connected to the connection point on the contained object specified by iidSink.

dwResID
[in] The resource ID of an HTML resource. The WebBrowser control will be created and loaded with the specified resource.

Return Value

A standard HRESULT value.

Remarks

This method is similar to CAxWindow::CreateControl, but unlike that method, CreateControlEx also allows you to receive an interface pointer to the newly created control and set up an event sink to receive events fired by the control.

See CAxWindow2T::CreateControlLicEx to create, initialize, and host a licensed ActiveX control.

Example

See Hosting ActiveX Controls Using ATL AXHost for a sample that uses CreateControlEx.

CAxWindow::GetWndClassName

Retrieves the name of the window class.

static LPCTSTR GetWndClassName();

Return Value

A pointer to a string containing the name of the window class that can host nonlicensed ActiveX controls.

CAxWindow::operator =

Assigns an HWND to an existing CAxWindow object.

CAxWindow<TBase>& operator=(HWND hWnd);

Parameters

hWnd
A handle to an existing window.

Return Value

Returns a reference to the current CAxWindow object.

CAxWindow::QueryControl

Retrieves the specified interface of the hosted control.

HRESULT QueryControl(REFIID iid, void** ppUnk);
template <class  Q>
HRESULT QueryControl(Q** ppUnk);

Parameters

iid
[in] Specifies the IID of the control's interface.

ppUnk
[out] A pointer to the interface of the control. In the template version of this method, there is no need for a reference ID as long as a typed interface with an associated UUID is passed.

Q
[in] The interface that is being queried for.

Return Value

A standard HRESULT value.

CAxWindow::QueryHost

Returns the specified interface of the host.

HRESULT QueryHost(REFIID iid, void** ppUnk);
template <class  Q>
HRESULT QueryHost(Q** ppUnk);

Parameters

iid
[in] Specifies the IID of the control's interface.

ppUnk
[out] A pointer to the interface on the host. In the template version of this method, there is no need for a reference ID as long as a typed interface with an associated UUID is passed.

Q
[in] The interface that is being queried for.

Return Value

A standard HRESULT value.

Remarks

The interface of the host allows access to the underlying functionality of the window-hosting code, implemented by AxWin.

CAxWindow::SetExternalDispatch

Sets the external dispatch interface for the CAxWindow object.

HRESULT SetExternalDispatch(IDispatch* pDisp);

Parameters

pDisp
[in] A pointer to an IDispatch interface.

Return Value

A standard HRESULT value.

CAxWindow::SetExternalUIHandler

Sets the external IDocHostUIHandlerDispatch interface for the CAxWindow object.

HRESULT SetExternalUIHandler(IDocHostUIHandlerDispatch* pUIHandler);

Parameters

pUIHandler
[in] A pointer to an IDocHostUIHandlerDispatch interface.

Return Value

A standard HRESULT value.

Remarks

The external IDocHostUIHandlerDispatch interface is used by controls that query the host's site for the IDocHostUIHandlerDispatch interface. The WebBrowser control is one control that does this.

See Also

ATLCON Sample
CWindow Class
Composite Control Fundamentals
Class Overview
Control Containment FAQ