MFC resource.h命令/消息ID

ak.*_*ak. 5 resources mfc command messages

我正在开发一个MFC应用程序,这个应用程序多年来和不同的开发团队相当混乱.包含所有命令/消息映射的resource.h文件随着时间的推移变得非常大,并且存在许多问题(例如重复ID).我不熟悉MFC,所以这个问题可能听起来很愚蠢......

MSDN文档提到命令ID和消息ID不应相应地小于WM_USER和WM_APP.我看到Visual Studio生成的resource.h中的大多数命令ID都是从100开始.这不应该导致某些干扰MFC/Windows命令和消息,这些命令和消息与应用程序定义的ID重叠吗?例如,我有一个命令ID:

#define ID_MY_ID 101
Run Code Online (Sandbox Code Playgroud)

并且有一个具有相同ID的Windows命令.当MC将此命令发送到APP时,它会像应用程序定义的ID_MY_ID一样处理,并且应用程序正在执行不必要的操作.这是一种可能的情况吗?

此外,是否有一些第三方工具可以帮助分析项目资源?

更新1:

出现了新问题:向应用程序类添加新自定义命令的首选方法是什么?据我所知,在以下列方式添加之前:向resouce.h添加命令ID,然后向处理类添加消息映射处理程序.

Dan*_*eer 7

你混合了两件事:

  1. 消息ID.这些必须大于WM_USER.消息ID未在resource.h中定义.从您的描述中可以看出,您没有使用应用程序私人消息.
  2. 命令ID.您的应用程序本身不得包含重复的命令ID.命令ID值也不应干扰afxres.h中定义的标准MFC ID.这些命令ID从0xE100开始,因此resource.h中的值不太可能.资源编译器将为您的rc文件中的重复ID生成错误

您可能无需手动编辑resource.h.

我建议使用"资源符号"工具(右键单击资源视图中的资源,然后从弹出菜单中选择,我假设您使用的是VC++),从resource.h中删除所有未使用的ID.

  • 如果在资源文件(.rc)中找不到命令,则"资源符号"工具仅将命令标记为未使用.它不监视它们是否在代码中使用. (2认同)