如何防止不同插件中的重复资源ID?

时间:2010-09-24 07:43:46

标签: c++ mfc resources

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

#define ID_SHOW_OUTPUT                 10313

当它有一个具有类似ID的插件(DLL)时,它会在trigerred之后导致未定义的行为。

为了安全起见,我尝试定义自己的私人ID:

#define ID_SHOW_OUTPUT          (WM_APP+6)

但是,如果EXE和DLL中有数百个资源,我将会做很多工作。

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

1 个答案:

答案 0 :(得分:4)

  • 检查this add-in。它使您可以更好地控制资源ID。

  • 正如Luke评论的那样,使用带有重复资源ID的DLL应该没有问题。使用AfxSetResourceHandle

  • 一次只能激活一个资源模块
  • 将命令ID设置为任意UINT值(在您将WM_APP + 6分配给命令ID的问题中)是不安全的,因为这些值在很多地方由MFC解释。有关详细信息,请查看this StackOverflow问题。