在MFC C ++中,当我们在EXE中添加一个新资源时,表示字符串,它会自动生成一个ID:
#define ID_SHOW_OUTPUT 10313
当它有一个具有类似ID的插件(DLL)时,它会在trigerred之后导致未定义的行为。
为了安全起见,我尝试定义自己的私人ID:
#define ID_SHOW_OUTPUT (WM_APP+6)
但是,如果EXE和DLL中有数百个资源,我将会做很多工作。
我不确定在可执行文件的重复资源ID上是否有更好的解决方案和预防措施???
答案 0 :(得分:4)
检查this add-in。它使您可以更好地控制资源ID。
正如Luke评论的那样,使用带有重复资源ID的DLL应该没有问题。使用AfxSetResourceHandle
将命令ID设置为任意UINT
值(在您将WM_APP + 6
分配给命令ID的问题中)是不安全的,因为这些值在很多地方由MFC解释。有关详细信息,请查看this StackOverflow问题。