次の方法で共有


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 が呼び出されない限り、ステータス バーのテキストは変更されません。 これは、コンテナーがトラップするすべてのメッセージがオブジェクトに送られるようになったため、オブジェクトのメニューの 1 つがアクティブになったことをコンテナーが認識する方法がないためです。

実装者へのメモ

潜在的な問題を回避するために、アクティブ化されているすべてのオブジェクトは 、WM_MENUSELECT メッセージを処理し、 IOleInPlaceFrame::SetStatusText を呼び出す必要があります。通常、オブジェクトが状態情報を提供しない場合でも (この場合、オブジェクトは要求された状態テキストに NULL 文字列を渡すだけです)。
メモIOleInPlaceFrame::SetStatusText の実行中は、PeekMessage 関数や GetMessage 関数、またはダイアログ ボックスを呼び出さないでください。 これにより、システムがデッドロックする可能性があります。 IOleInPlaceUIWindow::GetBorder 内から呼び出すことができる OLE インターフェイスのメソッドと関数には、さらに制限があります。
 

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー oleidl.h

こちらもご覧ください

GetMessage

IOleInPlaceFrame

PeekMessage