116d4f17f58b46592abe284c7c940d821f930600
5 #define ID_ACCEL1 0x100
6 #define ID_ACCEL2 0x101
7 #define ID_ACCEL3 0x102
8 #define ID_ACCEL4 0x103
12 * fVirt |= FVIRTKEY | FCONTROL | FALT | FSHIFT
15 static ACCEL Accelerators
[4] = {
16 { FVIRTKEY
, VK_A
, ID_ACCEL1
},
17 { FVIRTKEY
| FSHIFT
, VK_A
, ID_ACCEL2
},
18 { FVIRTKEY
| FCONTROL
, VK_A
, ID_ACCEL3
},
19 { FVIRTKEY
| FALT
, VK_A
, ID_ACCEL4
}};
20 static HACCEL hAcceleratorTable
;
21 static char Event
[200];
23 LRESULT WINAPI
MainWndProc(HWND
, UINT
, WPARAM
, LPARAM
);
26 WinMain(HINSTANCE hInstance
,
27 HINSTANCE hPrevInstance
,
35 wc
.lpszClassName
= "AcceleratorTest";
36 wc
.lpfnWndProc
= MainWndProc
;
37 wc
.style
= CS_VREDRAW
| CS_HREDRAW
;
38 wc
.hInstance
= hInstance
;
39 wc
.hIcon
= LoadIcon(NULL
, (LPCTSTR
)IDI_APPLICATION
);
40 wc
.hCursor
= LoadCursor(NULL
, (LPCTSTR
)IDC_ARROW
);
41 wc
.hbrBackground
= (HBRUSH
)GetStockObject(GRAY_BRUSH
);
42 wc
.lpszMenuName
= NULL
;
45 if (RegisterClass(&wc
) == 0)
47 fprintf(stderr
, "RegisterClass failed (last error 0x%lX)\n",
52 hWnd
= CreateWindow("AcceleratorTest",
65 fprintf(stderr
, "CreateWindow failed (last error 0x%lX)\n",
70 /*tf = CreateFontA(14, 0, 0, TA_BASELINE, FW_NORMAL, FALSE, FALSE, FALSE,
71 ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
72 DEFAULT_QUALITY, FIXED_PITCH|FF_DONTCARE, "Timmons");*/
76 ShowWindow(hWnd
, nCmdShow
);
78 hAcceleratorTable
= CreateAcceleratorTable(Accelerators
,
79 sizeof(Accelerators
)/sizeof(Accelerators
[1]));
80 if (hAcceleratorTable
== NULL
)
82 fprintf(stderr
, "CreateAcceleratorTable failed (last error 0x%lX)\n",
87 while(GetMessage(&msg
, NULL
, 0, 0))
89 if (!TranslateAccelerator(hWnd
, hAcceleratorTable
, &msg
))
91 TranslateMessage(&msg
);
92 DispatchMessage(&msg
);
96 if (!DestroyAcceleratorTable(hAcceleratorTable
))
98 fprintf(stderr
, "DestroyAcceleratorTable failed (last error 0x%lX)\n",
108 LRESULT CALLBACK
MainWndProc(HWND hWnd
, UINT msg
, WPARAM wParam
, LPARAM lParam
)
117 hDC
= BeginPaint(hWnd
, &ps
);
118 //SelectObject(hDC, tf);
119 sprintf(buf
, "Event: '%s'", Event
);
120 TextOut(hDC
, 10, 10, buf
, strlen(buf
));
130 switch (LOWORD(wParam
))
137 strcpy(Event
, "SHIFT+A");
141 strcpy(Event
, "CTRL+A");
145 strcpy(Event
, "ALT+A");
149 sprintf(Event
, "%d", LOWORD(wParam
));
153 InvalidateRect(hWnd
, NULL
, TRUE
);
158 return DefWindowProc(hWnd
, msg
, wParam
, lParam
);