IOleInPlaceFrame::SetStatusText 方法 (oleidl.h)

设置并显示容器框架窗口状态行中有关就地对象的状态文本。

语法

HRESULT SetStatusText(
  [in] LPCOLESTR pszStatusText
);

参数

[in] pszStatusText

要显示的消息。

返回值

此方法在成功时返回S_OK。 其他可能的返回值包括以下内容。

返回代码 说明
S_TRUNCATED
显示一些文本,但消息太长,被截断。
E_FAIL
此操作失败。
E_INVALIDARG
指定的指针无效。
E_UNEXPECTED
发生了意外错误。

注解

调用方备注

需要要求容器在其框架的状态行中显示对象文本(如果有)时,应调用 IOleInPlaceFrame::SetStatusText 。 由于容器的框架窗口拥有状态行,因此调用 IOleInPlaceFrame::SetStatusText 是对象可以在容器的框架窗口中显示状态信息的唯一方法。 但是,如果容器拒绝对象的请求,则对象应用程序可以协商边界空间以显示其自己的状态窗口。

在容器拥有的菜单和就地活动对象之间切换时,如果对象不调用容器的 IOleInPlaceFrame::SetStatusText 方法,则状态栏文本不会正确反映。 例如,如果用户在就地会话期间选择“ 文件 ”菜单,则状态栏将反映用户选择此菜单时将发生的操作。 如果用户随后选择由就地对象) 拥有的 “编辑 ”菜单 (,则状态栏文本不会更改,除非恰好调用 了 IOleInPlaceFrame::SetStatusText 。 这是因为容器无法识别对象的菜单之一已激活,因为容器将捕获的所有消息现在都转到对象。

实施者说明

为了避免潜在问题,就地激活的所有对象都应处理 WM_MENUSELECT 消息并调用 IOleInPlaceFrame::SetStatusText,即使对象通常不提供状态信息 (在这种情况下,对象只能) 传递请求的状态文本的 NULL 字符串。
注意 在执行 IOleInPlaceFrame::SetStatusText 时,不要调用 PeekMessageGetMessage 函数或对话框。 这样做可能会导致系统死锁。 从 IOleInPlaceUIWindow::GetBorder 中可以调用哪些 OLE 接口方法和函数存在进一步的限制。
 

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 oleidl.h

另请参阅

GetMessage

IOleInPlaceFrame

PeekMessage