5 #define ID_ACCEL1 0x100
6 #define ID_ACCEL2 0x101
7 #define ID_ACCEL3 0x102
8 #define ID_ACCEL4 0x103
16 * fVirt |= FVIRTKEY | FCONTROL | FALT | FSHIFT
19 static ACCEL Accelerators
[4] = {
20 { FVIRTKEY
, VK_A
, ID_ACCEL1
},
21 { FVIRTKEY
| FSHIFT
, VK_A
, ID_ACCEL2
},
22 { FVIRTKEY
| FCONTROL
, VK_A
, ID_ACCEL3
},
23 { FVIRTKEY
| FALT
, VK_A
, ID_ACCEL4
}};
24 static HACCEL hAcceleratorTable
;
25 static char Event
[200];
27 LRESULT WINAPI
MainWndProc(HWND
, UINT
, WPARAM
, LPARAM
);
30 WinMain(HINSTANCE hInstance
,
31 HINSTANCE hPrevInstance
,
39 wc
.lpszClassName
= "AcceleratorTest";
40 wc
.lpfnWndProc
= MainWndProc
;
41 wc
.style
= CS_VREDRAW
| CS_HREDRAW
;
42 wc
.hInstance
= hInstance
;
43 wc
.hIcon
= LoadIcon(NULL
, (LPCTSTR
)IDI_APPLICATION
);
44 wc
.hCursor
= LoadCursor(NULL
, (LPCTSTR
)IDC_ARROW
);
45 wc
.hbrBackground
= (HBRUSH
)GetStockObject(GRAY_BRUSH
);
46 wc
.lpszMenuName
= NULL
;
49 if (RegisterClass(&wc
) == 0)
51 fprintf(stderr
, "RegisterClass failed (last error 0x%lX)\n",
56 hWnd
= CreateWindow("AcceleratorTest",
69 fprintf(stderr
, "CreateWindow failed (last error 0x%lX)\n",
74 /*tf = CreateFontA(14, 0, 0, TA_BASELINE, FW_NORMAL, FALSE, FALSE, FALSE,
75 ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
76 DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "Timmons");*/
80 ShowWindow(hWnd
, nCmdShow
);
82 hAcceleratorTable
= CreateAcceleratorTable(Accelerators
,
83 sizeof(Accelerators
)/sizeof(Accelerators
[1]));
84 if (hAcceleratorTable
== NULL
)
86 fprintf(stderr
, "CreateAcceleratorTable failed (last error 0x%lX)\n",
91 while(GetMessage(&msg
, NULL
, 0, 0))
93 if (!TranslateAccelerator(hWnd
, hAcceleratorTable
, &msg
))
95 TranslateMessage(&msg
);
96 DispatchMessage(&msg
);
100 if (!DestroyAcceleratorTable(hAcceleratorTable
))
102 fprintf(stderr
, "DestroyAcceleratorTable failed (last error 0x%lX)\n",
112 LRESULT CALLBACK
MainWndProc(HWND hWnd
, UINT msg
, WPARAM wParam
, LPARAM lParam
)
121 hDC
= BeginPaint(hWnd
, &ps
);
122 //SelectObject(hDC, tf);
123 sprintf(buf
, "Event: '%s'", Event
);
124 TextOut(hDC
, 10, 10, buf
, strlen(buf
));
134 switch (LOWORD(wParam
))
141 strcpy(Event
, "SHIFT+A");
145 strcpy(Event
, "CTRL+A");
149 strcpy(Event
, "ALT+A");
153 sprintf(Event
, "%d", LOWORD(wParam
));
157 InvalidateRect(hWnd
, NULL
, TRUE
);
162 return DefWindowProc(hWnd
, msg
, wParam
, lParam
);