WINUSERAPI
HACCEL
WINAPI
LoadAcceleratorsA(
__in_opt HINSTANCE hInstance,
__in LPCSTR lpTableName);
WINUSERAPI
HACCEL
WINAPI
LoadAcceleratorsW(
__in_opt HINSTANCE hInstance,
__in LPCWSTR lpTableName);
#ifdef UNICODE
#define LoadAccelerators LoadAcceleratorsW
#else
#define LoadAccelerators LoadAcceleratorsA
#endif // !UNICODE
hInstance是应用程序实例句柄,用来从程序的资源文件里查找到快捷键定义。
lpTableName是快捷键的定义表格。
MSG msg;
HACCEL hAccelTable;
// 初始化全局字符串
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_WIN32PROJECT1, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);
// 执行应用程序初始化:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WIN32PROJECT1));
// 主消息循环:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
WIN32示例程序,其中编写快捷键有三个步骤:
(1)在键表中加入对应关系,ID对应键值
(2)在程序中编写响应函数
(3)在相应的消息响应机制中调用响应函数
最后,注意 MAKEINTRESOURCE(int) 这是一个宏,以INT值为索引去找资源文件中的定义。