编译出错
本人仿照《Windows环境下32位汇编语言设计(典藏版)》Chapter05\Menu程序。Main.rc和Main.asm全部是手动抄写录入的,但是在nmake时,提示如下错误:对照检查也没看出来错在哪里,先把我手动录入的Main.rc贴出来,麻烦大神帮忙查看下错误在哪里?
//******************************************
#include<resource.h>
//******************************************
#define ICO_MAIN 0x1000 //图标
//******************************************
#define IDM_MAIN 0x2000 //菜单
#define IDA_MAIN 0X2000 //加速键
#define IDM_OPEN 0x4101
#define IDM_OPTION 0x4102
#define IDM_EXIT 0x4103
#define IDM_SETFONT 0x4201
#define IDM_SETCOLOR 0x4202
#define IDM_INACT 0x4203
#define IDM_GRAY 0x4204
#define IDM_BIG 0x4205
#define IDM_SMALL 0X4206
#define IDM_LIST 0x4207
#define IDM_DETAIL 0x4208
#define IDM_TOOLBAR 0x4209
#define IDM_TOOLBARTEXT 0x4210
#define IDM_INPUTBAR 0x4211
#define IDM_STATUSBAR 0x4212
#define IDM_HELP 0x4301
#define IDM_ABOUT 0x4302
//****************************************
ICO_MAIN ICON "Main.ico"
//****************************************
IDM_MAIN menu discardable
BEGIN
popup "文件(&F)"
BEGIN
menuitem "打开文件(&O)...", IDM_OPEN
menuitem "关闭文件(&C)...", IDM_OPTION
menuitem separator
menuitem "退出(&X)", IDM_EXIT
END
popup "查看(&V)"
BEGIN
menuitem "字体(&F)...\tAlt+F", IDM_SETFONT
menuitem "背景色(&B)...\tCtrl+Alt+B", IDM_SETCOLOR
menuitem separator
menuitem "被禁用的菜单项", IDM_INACT, INACTIVE
menuitem "被灰化的菜单项", IDM_GRAY, GRAYED
menuitem separator
menuitem "大图标(&G)", IDM_BIG
menuitem "小图标(&M)", IDM_SMALL
menuitem "列表(&L)", IDM_LIST
menuitem "详细资料(&D)", IDM_DETAIL
menuitem separator
popup "工具栏(&T)"
BEGIN
menuitem "标准按钮(&S)", IDM_TOOLBAR
menuitem "文字标签(&C)", IDM_TOOLBARTEXT
menuitem "命令栏(&I)", IDM_INPUTBAR
END
menuitem "状态栏(&U)", IDM_STATUSBAR
END
popup "帮助(&H)", HELP
BEGIN
menuitem "帮助主题(&H)\tF1", IDM_HELP
menuitem separator
menuitem "关于本程序(&A)...", IDM_ABOUT
END
END
//********************************************
IDA_MAIN accelerators
BEGIN
VK_F1, IDM_HELP VIRTKEY
"B", IDM_SETCOLOR,VIRTKEY,CONTROL,ALT
"F", IDM_SETFONT,VIRTKEY,ALT
END
//*********************************************** 发现两个主要错误,修正后即可编译通过:
1. 头文件引用错误(第一行):
原代码:#include
应改为:#include <resource.h>
缺少头文件名会导致资源编译器找不到定义
2. 加速键表语法错误(倒数第二段):
原代码:
IDA_MAIN accelerators
BEGIN
VK_F1, IDM_HELP VIRTKEY
"B", IDM_SETCOLOR,VIRTKEY,CONTROL,ALT
"F", IDM_SETFONT,VIRTKEY,ALT
END
应改为(修正逗号位置和VIRTKEY位置):
IDA_MAIN accelerators
BEGIN
VK_F1, IDM_HELP, VIRTKEY
"B", IDM_SETCOLOR, VIRTKEY, CONTROL, ALT
"F", IDM_SETFONT, VIRTKEY, ALT
END
特别注意:
1. 每个加速键参数之间需要用逗号分隔
2. VIRTKEY必须作为独立参数出现
3. 检查Main.ico图标文件是否存在于当前目录
修正后的完整资源文件结构:
//******************************************
#include <resource.h>
//******************************************
#define ICO_MAIN 0x1000//图标
...(中间定义保持不变)...
//****************************************
IDA_MAIN accelerators
BEGIN
VK_F1,IDM_HELP, VIRTKEY
"B", IDM_SETCOLOR, VIRTKEY, CONTROL, ALT
"F", IDM_SETFONT, VIRTKEY, ALT
END
//***********************************************
常见其他注意事项:
[*]确保所有菜单项的ID值在0x4101-0x4212范围内没有重复
[*]检查菜单中的中文引号是否使用了半角符号(程序中的引号应为""而非“”)
[*]确认资源文件名与工程文件中的引用一致
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 还是不行的,提示不是虚拟键问题,而是这一行代码错误 menuitem "被灰化的菜单项", IDM_GRAY, GRAYED
页:
[1]