加速器资源表给出错误

时间:2014-04-24 11:36:01

标签: c++ winapi

以下资源定义有什么问题?

ACCELERATOR_RESOURCE_ID ACCELERATORS
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
{
    VK_C, IDA_COPY, NOINVERT, CONTROL, VIRTKEY
    VK_V, IDA_PASTE, NOINVERT, CONTROL, VIRTKEY
    VK_A, IDA_SELECTALL, NOINVERT, CONTROL, VIRTKEY 
}

每次编译时,它都会在 VK_C,IDA_COPY,NOINVERT,CONTROL,VIRTKEY 行给出语法错误。我无法确定问题所在。

1 个答案:

答案 0 :(得分:1)

在Windows标题中未定义普通字母或数字的虚拟键标识符 - 来自WinUser.h:

/*
 * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
 * 0x40 : unassigned
 * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
 */

因此,值VK_CVK_V等是问题所在。

资源编译器显然不支持像'C''V'这样的字符常量,而实践似乎使用(十六进制)数字ASCII值代替:

0x43, IDA_COPY, NOINVERT, CONTROL, VIRTKEY
0x56, IDA_PASTE, NOINVERT, CONTROL, VIRTKEY
0x41, IDA_SELECTALL, NOINVERT, CONTROL, VIRTKEY