gpt4 book ai didi

MFC resource.h 命令/消息 ID

转载 作者:行者123 更新时间:2023-12-04 17:41:37 26 4
gpt4 key购买 nike

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

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

#define ID_MY_ID 101

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

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

更新1:

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

最佳答案

你混合了两件事:

  • 消息 ID。这些必须大于 WM_USER。消息 ID 未在 resource.h 中定义。从您的描述看来,您没有使用应用程序私有(private)消息。
  • 命令 ID。您的应用程序本身不能有重复的命令 ID。命令 ID 值也不应干扰 afxres.h 中定义的标准 MFC ID。这些命令 ID 从 0xE100 开始,因此 resource.h 中的值不太可能。资源编译器会在你的 rc 文件中生成重复 ID 的错误

  • 您可能不需要手动编辑 resource.h。

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

    关于MFC resource.h 命令/消息 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2572364/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com