来自另一个DLL的MFC App加载对话框

时间:2010-08-26 17:38:33

标签: dll mfc dialog

我们有一个非常大的MFC应用程序,在解决方案中有16个项目。每个项目都是一个DLL。这些项目中有四(4)个是我们所谓的“网络”。在每个网络中,都有一个对话框,我们将调用X.这个对话框在每个网络中都非常不同,但每个resource.h中对话框本身的名称都是相同的。在resource.h中,它们也具有相同的ID(值)。

现在发生的事情是,当我在网络1上并使用对话框X加载类时,它会尝试使用网络2中的对话框。因为它们没有完全相同的控件,所以在DoDataExchange中崩溃,试图找到其他网络中不存在的控件。

有人知道是什么原因引起的吗?更改网络中不起作用的名称的尝试没有改变任何内容,因为它使用ID ...

我一直认为DLL正在使用它自己的resource.h但现在似乎并非如此...

有人可以帮忙吗? 感谢

1 个答案:

答案 0 :(得分:3)

听起来你需要调用AfxSetResourceHandle来指定加载对话框的DLL。

编辑:根据您的描述,您基本上需要在显示对话框的每个时间使用正确的值调用它。改变诸如DLL加载顺序之类的东西不会解决问题 - 在任何给定时间,MFC将尝试使用一个命令为DLL / EXE加载所有对话框,这是模态的,所以它保持不变,直到你改变它。鉴于需要在不同时间引用不同资源的相同资源ID,您需要在任何给定时间告诉它哪一个 - 否则,您将获得具有正确ID的第一件事,并且几乎无法控制哪个将使用正确的ID是