加速键表/Accelerators

  1. 虽然我们可以通过监控键盘操作来相应组合案件,但是效率低下
  2. Accelerators 表中的记录是资源文件中关于按键组合的描述
  3. Accelerators 表可以多个同时存在
  4. 一个Accelerators表中的记录也是可以多个同时存在
  5. 利用资源文件我们可以快速的响应快捷键

定义Accelerators

  1. 打开/添加 资源文件Accelerators表
  2. 根据需求设置需要的组合按键

以下是一个设定好的组合案件监控,
这个记录表示监控:ctrl+a

| Alt   | False |
| Ctrl  | True  |
| Key   | A |
| Type  | VIRTKEY|
| ID    | ID_SELECTALL| //记住这个ID

使用Accelerators

在窗口创建完成后我们使用一下代码使 Accelerators生效

//IDC_MY 是一个Accelerators生效表的表名称,不是 Accelerators某个记录的ID
HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY));

捕获Accelerators

  1. Accelerators捕捉到记录对应的操作后会发送WM_COMMAND消息
  2. 当 HIWORD(wParam) == 1 并且 LOWORD(wParam)==记录ID 时表示捕获成功
case WM_COMMAND:
{
    int wmId = LOWORD(wParam);
    /*
    捕获LoadAccelerators
    HIWORD(wParam) == 1 :表示该消息时 按键消息
    LOWORD(wParam) == ID_SELECTALL :表示与ID_SELECTALL 匹配
    */
    if (HIWORD(wParam) == 1 && LOWORD(wParam) == ID_SELECTALL) {
        SendMessageA(hEditWnd, EM_SETSEL, 0,-1);
    }
}
Last modification:October 26, 2018
如果觉得我的文章对你有用,请随意赞赏