Windows API (DAY10) LoadAccelerators 函数

当用户使用软件时,往往有些功能是最常用的功能。作为开发人员,就需要让用户感觉 到这个软件好用,这样就需要把他们最常用的功能用起来最方便,最快捷,能提高生产效率。 在这方面,微软是做到家了,比如在键盘上有一个 Windows 键,Windows 很多功能都可 以通过这个键与其它键来组合成快捷键,提高使用的方便性。现在就来介绍一下怎么样让你 的程序也方便使用,就是使用快捷键。函数 LoadAccelerators 声明如下:

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 是快捷键的定义表格。

调用这个函数的实例如下:

 //主程序入口
 //
 //  
 //
 int APIENTRY _tWinMain(HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPTSTR	lpCmdLine,
	int	nCmdShow)
 {
 UNREFERENCED_PARAMETER(hPrevInstance);
 UNREFERENCED_PARAMETER(lpCmdLine);

	//
 MSG msg;
 HACCEL hAccelTable;

 // 加载全局字符串。
 LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
 LoadString(hInstance, IDC_TESTWIN, szWindowClass, MAX_LOADSTRING);
 MyReg isterClass(hInstance);

 // 应用程序初始化:
 if (!Init Instance (hInstance, nCmdShow))
 {
	return FALSE;
 }

  hAccelTab le = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TESTWIN));

 // 消息循环:
 while (GetMessage(&msg, NULL, 0, 0))
 {
	if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
	{
	TranslateMessage(&msg);
	DispatchMessage(&msg);
	}
 }

 return (int) msg.wParam;
 }
  • 第 28 行就是调用函数 LoadAccelerators 从资源里加载快捷键。

到这里,就已经了解和使用 LoadAccelerators 函数了。但还有一个问题,就是快捷键的资源是怎么样定义的呢?问得好,下面就带你看一下它的定义:

 /
 //
 // Accelerator
 //

 IDC_TESTWIN ACCELERATORS
 BEGIN
	"?",	IDM_ABOUT,	ASCII, ALT
	"/",	IDM_ABOUT,	ASCII, ALT
 END

这是从资源文件 TestWin.rc 里拷贝出来的。

  • IDC_TESTWIN 是快捷键表的名称,
  • ACCELERATORS 是快捷键定义的关键字,
  • BEGIN 是表示快捷键的开始,
  • END 是表示快捷键的结束。

下面快捷键定义语法:
acctab lename ACCELERATORS [optional-statements] {event, idvalue, [type] [options]… }

  • [optional-statements]是可选的选项。
  • event 是必须有的内容,它是定义的键码,或者键的 ASCII 码。
  • idvalue 是快捷键响应的 ID 命令。
  • type 是类型选择。

上面第 8 行和第 9 行里就是设置 ALT+„?‟或者 ALT + „/‟作为快捷键,当用户按下 ALT+„?‟或者 ALT + „/‟时就会弹出关于对话框。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值