要处理加速器,应用程序(或线程)的消息循环必须包含对TranslateAccelerator函数的调用。TranslateAccelerator将击键与加速器表进行比较,如果找到匹配项,则将击键转换为WM_COMMAND(或WM_SYSCOMMAND)消息。然后该函数将消息发送到窗口过程。TranslateAccelerator函数的参数包括要接收WM_COMMAND消息的窗口的句柄,用于转换加速器的加速器表的句柄,以及指向包含队列中的消息的MSG结构的指针。以下示例显示如何从消息循环中调用TranslateAccelerator.
while(GetMessage(& msg,(HWND)NULL,0,0)){
/ *检查加速器击键。*/
if(!TranslateAccelerator(
hwndMain,/ *接收窗口的句柄* /
haccel,/ *主动加速的句柄。表* /
& msg)){/ *消息数据的地址* /
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}