IOleInPlaceObjectWindowlessImpl 类

此类实现 IUnknown,并提供使无窗口控件能够接收窗口消息和参与拖放操作的方法。

重要

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

语法

template<class T>
class IOleInPlaceObjectWindowlessImpl

参数

T
你的类,派生自 IOleInPlaceObjectWindowlessImpl

成员

公共方法

名称 描述
IOleInPlaceObjectWindowlessImpl::ContextSensitiveHelp 启用上下文相关帮助。 ATL 实现返回 E_NOTIMPL。
IOleInPlaceObjectWindowlessImpl::GetDropTarget 为支持拖放的就地活动无窗口对象提供 IDropTarget 接口。 ATL 实现返回 E_NOTIMPL。
IOleInPlaceObjectWindowlessImpl::GetWindow 获取窗口句柄。
IOleInPlaceObjectWindowlessImpl::InPlaceDeactivate 停用就地活动控件。
IOleInPlaceObjectWindowlessImpl::OnWindowMessage 将消息从容器调度到处于就地活动的无窗口控件。
IOleInPlaceObjectWindowlessImpl::ReactivateAndUndo 将之前停用的控件重新激活。 ATL 实现返回 E_NOTIMPL。
IOleInPlaceObjectWindowlessImpl::SetObjectRects 指示就地控件的哪个部分可见。
IOleInPlaceObjectWindowlessImpl::UIDeactivate 停用并删除支持就地激活的用户界面。

备注

IOleInPlaceObject 接口管理就地控件的重新激活和停用,并确定控件的可见程度。 IOleInPlaceObjectWindowless 接口允许无窗口控件接收窗口消息并参与拖放操作。 IOleInPlaceObjectWindowlessImpl 类提供了 IOleInPlaceObjectIOleInPlaceObjectWindowless 的默认实现,并通过在调试版本中向转储设备发送信息来实现 IUnknown

相关文章ATL 教程创建 ATL 项目

继承层次结构

IOleInPlaceObjectWindowless

IOleInPlaceObjectWindowlessImpl

要求

标头:atlctl.h

IOleInPlaceObjectWindowlessImpl::ContextSensitiveHelp

返回 E_NOTIMPL。

HRESULT ContextSensitiveHelp(BOOL fEnterMode);

注解

请参阅 Windows SDK 中的 IOleWindow::ContextSensitiveHelp

IOleInPlaceObjectWindowlessImpl::GetDropTarget

返回 E_NOTIMPL。

HRESULT GetDropTarget(IDropTarget** ppDropTarget);

备注

请参阅 Windows SDK 中的 IOleInPlaceObjectWindowless::GetDropTarget

IOleInPlaceObjectWindowlessImpl::GetWindow

容器调用此函数以获取控件的窗口句柄。

HRESULT GetWindow(HWND* phwnd);

备注

即使当前窗口已窗口化,某些容器也不适用于已经无窗口的控件。 在 ATL 的实现中,如果控件类的数据成员 m_bWasOnceWindowless 为 TRUE,则函数返回 E_FAIL。 否则,如果 phwnd 不为 NULL,则 GetWindow 将 * phwnd 分配给控件类的数据成员 m_hWnd 并返回 S_OK。

请参阅 Windows SDK 中的 IOleWindow::GetWindow

IOleInPlaceObjectWindowlessImpl::InPlaceDeactivate

由容器调用,以停用就地活动控件。

HRESULT InPlaceDeactivate(HWND* phwnd);

注解

此方法根据控件的状态执行完整或部分停用。 如有必要,将停用控件的用户界面,并销毁控件的窗口(如果有)。 通知容器控件不再处于就地活动状态。 释放容器用来协商菜单和边框空间的 IOleInPlaceUIWindow 接口。

请参阅 Windows SDK 中的 IOleInPlaceObject::InPlaceDeactivate

IOleInPlaceObjectWindowlessImpl::OnWindowMessage

将消息从容器调度到处于就地活动的无窗口控件。

HRESULT OnWindowMessage(
    UINT msg,
    WPARAM WParam,
    LPARAM LParam,
    LRESULT plResultParam);

备注

请参阅 Windows SDK 中的 IOleInPlaceObjectWindowless::OnWindowMessage

IOleInPlaceObjectWindowlessImpl::ReactivateAndUndo

返回 E_NOTIMPL。

HRESULT ReactivateAndUndo();

备注

请参阅 Windows SDK 中的 IOleInPlaceObject::ReactivateAndUndo

IOleInPlaceObjectWindowlessImpl::SetObjectRects

由容器调用,以通知控件其大小和/或位置已更改。

HRESULT SetObjectRects(LPCRECT prcPos, LPCRECT prcClip);

备注

更新控件的 m_rcPos 数据成员和控件显示。 仅显示与剪辑区域相交的控件部分。 如果之前已剪裁控件的显示,但剪辑已删除,则可以调用此函数来重新绘制控件的完整视图。

请参阅 Windows SDK 中的 IOleInPlaceObject::SetObjectRects

IOleInPlaceObjectWindowlessImpl::UIDeactivate

停用并删除支持就地激活的控件的用户界面。

HRESULT UIDeactivate();

备注

将控件类的数据成员 m_bUIActive 设置为 FALSE。 此函数的 ATL 实现始终返回 S_OK。

请参阅 Windows SDK 中的 IOleInPlaceObject::UIDeactivate

另请参阅

CComControl 类
类概述