LoadAccelerators声明如下:
WINUSERAPI
HACCEL
WINAPI
LoadAcceleratorsA(
__in_opt HINSTANCE hInstance,
__in LPCSTR lpTableName);
WINUSERAPI
HACCEL
WINAPI
LoadAcceleratorsW(
__in_opt HINSTANCE hInstance,
__in LPCWSTR lpTableName);
#def UNICODE
# LoadAccelerators LoadAcceleratorsW
#
# LoadAccelerators LoadAcceleratorsA
#end // !UNICODE
hInstance是应用例子句柄用来从资源文件里查找到快捷键定义
lpTableName是快捷键定义表格
这个例子如下:
#001 //主入口
#002 //
#003 // 蔡军生 2007/07/12
#004 //
#005 APIENTRY _tWinMain(HINSTANCE hInstance,
#006 HINSTANCE hPrevInstance,
#007 LPTSTR lpCmdLine,
#008 nCmdShow)
#009 {
#010 UNREFERENCED_PARAMETER(hPrevInstance);
#011 UNREFERENCED_PARAMETER(lpCmdLine);
#012
#013 //
#014 MSG msg;
#015 HACCEL hAccelTable;
#016
#017 // 加载全局串
#018 LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
#019 LoadString(hInstance, IDC_TESTWIN, szWindowClass, MAX_LOADSTRING);
#020 MyRegisterClass(hInstance);
#021
#022 // 应用化:
#023 (!InitInstance (hInstance, nCmdShow))
#024 {
#025 FALSE;
#026 }
#027
#028 hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TESTWIN));
#029
#030 // 消息循环:
#031 while (GetMessage(&msg, NULL, 0, 0))
#032 {
#033 (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
#034 {
#035 TranslateMessage(&msg);
#036 DispatchMessage(&msg);
#037 }
#038 }
#039
#040 () msg.wParam;
#041 }
第28行就是LoadAccelerators从资源里加载快捷键
到这里就已经了解和使用LoadAccelerators了但还有个问题就是快捷键资源是如何样定义呢?问得好下面就带你看下它定义:
#001 /////////////////////////////////////////////////////////////////////////////
#002 //
#003 // Accelerator
#004 //
#005
#006 IDC_TESTWIN ACCELERATORS
#007 BEGIN
#008 "?", IDM_ABOUT, ASCII, ALT
#009 "/", IDM_ABOUT, ASCII, ALT
#010 END
#011
这是从资源文件TestWin.rc里拷贝出来IDC_TESTWIN是快捷键表名称ACCELERATORS是快捷键定义关键字BEGIN是表示快捷键开始END是表示快捷键结束
下面快捷键定义语法:
acctablename ACCELERATORS [optional-statements] {event, idvalue, [type] [options]... }
[optional-statements]是可选选项
event是必须有内容它是定义键码或者键ASCII码
idvalue是快捷键响应ID命令
type是类型选择
上面第8行和第9行里就是设置ALT+‘?’或者ALT + ‘/’作为快捷键当用户按下ALT+‘?’或者ALT + ‘/’时就会弹出有关对话框
最新评论