Advantage.
Message always sent to the TranslateAcclerator:hWnd irrespective of focus.
Thus no duplication required across window procs.
________________.
WinMain.
HACCEL hAccel = LoadAccelerators(hInstance, L"WCODE");.
While(GetMessage(&msg, NULL, 0, 0) > 0).
{
if(!TranslateAccelerator(MainWindow.hWnd, hAccel, &msg))
If(!IsDialogMessage(MainWindow.hWnd, &msg)).
{
TranslateMessage(&msg);.
DispatchMessage(&msg);.
}.
};.
________________.
Accelerators.rc.
include "Resource.h".
include "AFXRes.h".
WCODE ACCELERATORS DISCARDABLE.
BEGIN
VK_TAB, MODE_BUTTON_ID, CONTROL, VIRTKEY.
VK_TAB, START_FOCUS_ID, SHIFT, VIRTKEY.
"c", IN_CLEAR_BUTTON_ID, ALT, VIRTKEY.
"S", TOGGLE_SUG_ID, ALT, VIRTKEY.
VK_SPACE, OVER_SPACE, ALT, VIRTKEY.
VK_RETURN, CONVERT_BUTTON_ID, ALT, VIRTKEY.
"e", IN_FOCUS, ALT, VIRTKEY.
"x", CSM_CHECK_WINDOW_ID, ALT, VIRTKEY.
"z", MODE_BUTTON_ID, ALT, VIRTKEY.
END.
________________.
Resource.h.
# define ID_ACTION
0x0100.
________________.
MainWindow - Proc.
case WM_COMMAND
{
Switch(LOWORD(wParam)).
{.
case ID_ACTION
________________.

