在MFC C++中,当我们在EXE中添加新资源时,用字符串表示,它将自动生成一个ID:

#define ID_SHOW_OUTPUT                 10313

当它具有具有相似ID的plugin(DLL)时,触发后将导致未定义的行为。

为了安全起见,我尝试定义自己的私有(private)ID:
#define ID_SHOW_OUTPUT          (WM_APP+6)

但是,如果EXE和DLL中有成百上千的资源,我将有很多工作。

我不确定是否存在更好的解决方案和针对可执行文件中重复资源ID的预防措施???

最佳答案

  • 检查this add-in。它使您可以更好地控制资源ID。
  • 正如Luke所说,将DLL与重复的资源ID一起使用应该不会有问题。使用AfxSetResourceHandle
  • 一次仅激活一个资源模块
  • 将命令ID设置为任意UINT值(在您的问题中,您已将WM_APP + 6分配给命令ID)并不安全,因为MFC在很多地方会解释这些值。检查this StackOverflow问题以获取更多详细信息。
  • 10-08 09:08
    查看更多