我想知道 Visual Studio 如何将MFC CDialog派生的类与其对应的对话框资源相关联。我对运行时如何建立连接(如here所问)不感兴趣,而对设计时感兴趣。

当我向对话框添加消息处理程序时,它如何知道将处理程序添加到哪个类。
另外,是否可能有多个CDialog派生的类与相同的对话框资源相关联,反之亦然?

我已经在项目目录中搜索了IDD_SOMEDIALOG字符串,但只在预期位置的SomeDialog.hresource.hProject.rc中找到了它,所以我猜它以某种方式推断了这些文件的连接,很可能是SomeDialog.h中的枚举:

// in class CSomeDialog:
    enum { IDD = IDD_SOMEDIALOG };

我问这个主要是出于好奇。

最佳答案

这取决于开发工作室的版本。

在VS6中,所有内容都保存在CLW(类向导文件)中。

在较新版本的dev studio中,它不再使用CLW,我也不知 Prop 体如何知道,但是我怀疑它是实时解析的,而不是使用缓存的CLW。

至于使用同一资源的多个派生对话框,则可以手动完成。您可以复制创建的类文件并重命名它们,然后从标题中删除该枚举,然后将源文件中IDD枚举的使用编辑为实际的对话框资源ID(IDD_SOMEDIALOG)。

AFAIK Dev Studio一次只能“愉快地”处理一个类的一个对话框。以我的经验,尝试重用这样的对话框资源只会导致与MFC&Dev Studio的较量,这是因为他们不打算这样做。

关于visual-studio - Visual Studio如何将Mfc对话框类与对话框资源相关联?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2131394/

10-17 01:26