Accelerator Keys

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

________________.

Updated: 2026 Aug 19