Visual studio VisualStudio如何将mfc对话类与对话资源相关联?

Visual studio VisualStudio如何将mfc对话类与对话资源相关联?,visual-studio,mfc,dialog,visual-c++,Visual Studio,Mfc,Dialog,Visual C++,我想知道visualstudio如何将mfcdialog派生类与其相应的对话框资源关联起来。我不感兴趣的是如何在运行时(按要求)建立连接,而是在设计时 当我将消息处理程序添加到对话框时,它如何知道将处理程序添加到哪个类。 另外,是否可以将多个CDialog派生类与同一对话框资源关联,反之亦然 我在项目目录中搜索了IDD_SOMEDIALOG字符串,但只在SOMEDIALOG.h、resource.h和project.rc中的预期位置找到了它,因此我猜它以某种方式从这些文件中推断出了连接,很可能是

我想知道visualstudio如何将
mfcdialog
派生类与其相应的对话框资源关联起来。我不感兴趣的是如何在运行时(按要求)建立连接,而是在设计时

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

我在项目目录中搜索了
IDD_SOMEDIALOG
字符串,但只在
SOMEDIALOG.h
resource.h
project.rc
中的预期位置找到了它,因此我猜它以某种方式从这些文件中推断出了连接,很可能是
SOMEDIALOG.h
中的枚举:

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

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

这取决于dev studio的版本

在VS6中,它都保存在CLW(类向导文件)中

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

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


AFAIK开发工作室一次只能“愉快地”处理一个对话框中的一个类。根据我的经验,尝试重复使用这样的对话框资源最终会与MFC&Dev Studio发生一场战斗,因为他们不打算这样做。

要补充Ruddy的答案:

我注意到我的一些对话框类,其中我用
static const int IDD
替换了
enum{IDD}
,它们不再与其对话框资源相关联。正在还原到重新关联它们的枚举。因此,VisualStudio似乎解析源代码以确定关系


至于资源共享,应该由哪个类接收事件处理程序代码是不明确的。类共享似乎是不可能的,因为它依赖于
IDD
,而不能同时分配给
IDD\u某物
IDD\u某物

情况似乎确实如此,有关详细信息,请参阅我的更新。