【发布时间】:2015-05-23 12:11:09
【问题描述】:
示例:第一个 MFC DLL 在 resource.h 中有一个 ID 值为 4711 的菜单 ID_MENU_FOO。第二个 MFC DLL 也有另一个菜单 ID_MENU_BAR,其 ID 值为 4711。 应用程序 (exe) 使用 DLL 并调用 LoadMenu。如果我想验证要加载的所需菜单,我需要调用 API 方法LoadMenu 将模块句柄提供给所需的 dll。还是我错了?
在我自己的项目中处理资源 ID 及其唯一性的最佳做法是什么?
提前致谢!
【问题讨论】:
-
当然,它们应该是唯一的
-
但是为什么呢?通常我不关心值,只是添加资源。但是有时当某个库或应用程序本身获得新资源时,应用程序会加载错误的菜单或图像或其他任何内容,因为新 ID 使另一个库的现有资源 ID 不再唯一。
-
这个问题没有任何意义,图书馆不能有任何资源。 IDE 不会阻止您创建它们,但它们需要链接到 DLL 或 EXE 中才能使用。
-
抱歉,我的意思是共享 MFC DLL,我已解决问题
-
LoadMenu 需要模块句柄。那必须是DLL之一。存储在不同模块中的资源可以有相同的ID,模块句柄避免了歧义。
标签: visual-c++ mfc