OLE SDK——框架介面(二):IOleInPlaceFrame::SetStatusText (轉)

gugu99發表於2008-05-28
OLE SDK——框架介面(二):IOleInPlaceFrame::SetStatusText (轉)[@more@]

IOleInPlaceFrame::SetStatusText


在容器的視窗狀態行設定和顯示關於在位(in-place)的狀態文字。

HRESULT SetStatusText(
LPCOLESTR
pszStatusText //指向顯示訊息的指標
);


引數



pszStatusText
包含要顯示訊息的以空字元結束的字串的地址。

返回值


這個方法支援標準返回值E_FAIL,E_INVALIDARG和E_UNEXPECTED,也支援下列的:


S_OK
文字被顯示了。
S_TRUNCATED
一些文字被顯示,但訊息太長有一些被刪去了。

註釋


者注意

如果容器框架視窗有狀態行,當你需要告訴容器在它的框架狀態行顯示物件文字時,你應該呼叫SetStatusText。因為視窗的框架視窗自己擁有狀態行,呼叫IOleInPlaceFrame::SetStatusText只是讓一個物件可以在視窗的框架視窗中顯示狀態資訊的方法。如果容器拒絕了物件的請求,對應應用仍然可以協商取得邊框空間來顯示它自己的狀態列。


注意 當在容器所擁有的選單和在位(in-place)物件所擁有的選單之間切換時,如果物件沒有呼叫容器的IOleInPlaceFrame::SetStatusText方法,狀態列文字不會被適當的反映。例如,如果在一個在位(in-place)會話期間,選擇了File選單,狀態列將反映使用者選擇的這個選單將發生的動作。如果使用者選擇了Edit選單(被在位物件所擁有的),狀態列將不會改變,除非IOleInPlaceFrame::SetStatusText發生了呼叫。這是因為容器沒有辦法分辨一個物件的選單已經被啟用,因為所有容器想捕獲的訊息現在都發給物件了。


實現注意

要避免潛在的問題,所有物件被在位啟用都應該處理WM_MENU訊息和呼叫IOleInPlaceFrame::SetStatusText,即使物件不提供狀態資訊(這樣的話,物件可以剛好為請求狀態文字提供一個NULL字串。)


注意 當IOleInPlaceFrame::SetStatusText的時候,不可以呼叫的PeekMessageGetMessage,或一個對話方塊。這樣做可能引起的當機。OLE介面的方法和函式被在GetBorder中呼叫,有更近一步的。


資訊


 : 3.1或更高版本。
 Windows: Windows 95或更高版本。
 Windows CE: 不支援。
 Header: oleidl.h。


參見


中的PeekMessageGetMessage


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1004735/,如需轉載,請註明出處,否則將追究法律責任。

相關文章