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