You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows UI开发:Resource.h生成方式及添加ID定义解决RC2104错误

解决RC2104: undefined keyword or key name错误(无需手动编辑resource.h)

先跟你说清楚resource.h的生成逻辑哈——它一般是由IDE的资源编辑器(比如VS里的资源视图)自动维护的。当你通过可视化界面添加菜单、对话框、控件这些资源时,编辑器会自动在resource.h里生成对应的ID宏定义,同时同步更新.rc文件里的引用。手动改这个文件真的不推荐,后面编辑器修改资源的时候很可能把你的修改覆盖掉,还容易出现ID冲突的问题。

针对你的情况,有两种安全的方法可以添加ID_SOME_MENUITEM_NAME,完全不用手动碰resource.h:

方法1:通过资源编辑器添加菜单项,自动生成ID

  • 打开你的项目,切换到资源视图面板(没显示的话就去视图 > 资源视图调出来)
  • 找到UIPE.rc对应的菜单资源,双击打开菜单编辑器
  • 找到你要绑定ID_SOME_MENUITEM_NAME的菜单项,要是新菜单项就直接添加
  • 右键点击这个菜单项,选择属性
  • 在属性窗口的ID栏里直接输入ID_SOME_MENUITEM_NAME,回车即可
  • 资源编辑器会自动在resource.h里给这个ID分配一个未被使用的数值(比如#define ID_SOME_MENUITEM_NAME 6203),同时同步更新.rc文件里的引用,编译时就不会报错了

方法2:通过资源符号管理器手动添加ID

要是你只是需要定义这个ID,暂时不用关联可视化的菜单项:

  • 打开资源符号窗口,路径是视图 > 资源符号
  • 点击窗口里的新建按钮
  • 在弹出的对话框中,名称栏输入ID_SOME_MENUITEM_NAME,值可以留空(编辑器会自动选择一个未被占用的数值),也可以手动指定一个不冲突的数值
  • 点击确定,编辑器就会自动把这个宏定义写入resource.h中

为什么不推荐手动编辑resource.h?

因为你后续修改或添加资源时,资源编辑器会重新整理resource.h的内容,你手动添加的定义很可能被覆盖,或者不小心与已有的ID重复,反而引发更多编译问题。使用编辑器自带的工具操作,能保证ID的唯一性,还能让资源文件和头文件保持同步。

完成上述操作后,重新编译项目,那个RC2104错误应该就消失啦。

内容的提问来源于stack exchange,提问作者leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:27:46