IOleInPlaceFrame::TranslateAccelerator
當一個對象在位啟用的時候,有意的為容器的架構翻譯加速鍵。
HRESULT TranslateAccelerator(
LPMSG lpmsg, //指向結構
WORD wID //命令標識值
);
參數
-
lpmsg
-
包含鍵資訊的
MSG結構指標
-
wID
-
命令標識值在容器提供的加速表中對應的鍵。容器應該使用這個值替代重新翻譯。
傳回值
這個方法支援標準傳回值E_INVALIDARG和E_UNEXPECTED,也支援下列:
-
S_OK
-
鍵被使用。
-
S_FALSE
-
鍵沒有被使用。
注釋
調用者注意
當加速鍵被為視窗(架構)故意的接收時,IOleInPlaceFrame::TranslateAccelerator方法通過OleTranslateAccelerator被間接的調用。
實現注意
容器應用程式應該執行它平常的加速處理,或直接使用wID,然後返回加速鍵是否被處理的指示。如果視窗是一個MDI應用程式,Windows的TranslateAccelerator調用失敗,視窗可以調用Windows的TranslateMDISysAccel函數,正象一般的訊息處理一樣。
應該在翻譯加速訊息方面給在位(In-place)對象一個機會。然而,因為對象通過DLL對象應用程式實現不能擁有它們自己的訊息處理機制,它們從容器的訊息迴圈中接收它們的訊息。要確保對象在翻譯訊息方面有了一個機會,一個容器應該總是在在它自己的加速翻譯前,調用IOleInPlaceActiveObject::TranslateAccelerator。相反,一個可執行對象應用程式應該在調用TranslateAccelerator,TranslateMessage和DispatchMessage全失敗後調用OleTranslateAccelerator。
注意 你應該為容器定義加速表,這樣它們將適當的工作,用對象應用程式做它們自己的加速鍵翻譯。表格應該被象下列一樣的定義:
"char", wID, VIRTKEY, CONTROL
這有更多的公用辦法來描述鍵加速。這是最通用的描述加速鍵的方法。在在位(in-plane)會話期間,如果這種方法失敗,將導制建丟失或發送到錯誤的對象。
快速資訊
Windows NT: 3.1或更高版本。
Windows: Windows 95或更高版本。
Windows CE: 不支援。
Header: oleidl.h。
參見
OleTranslateAccelerator, IOleInPlaceActiveObject::TranslateAccelerator
Win32中的TranslateAccelerator,TranslateMessage,DispatchMessage,TranslateMDISysAccel