Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MFC>;将对话框连接到对话框类_Mfc_Dialog - Fatal编程技术网

MFC>;将对话框连接到对话框类

MFC>;将对话框连接到对话框类,mfc,dialog,Mfc,Dialog,我在已经存在的资源文件中定义了一个新对话框及其控件。我还创建了一个新文件,该文件将处理从该对话框生成的事件。但我不知道如何将这两者联系起来 是语句enum{IDD=IDD_NEW_DIALOG}连接两个所需的全部内容?还是应该添加其他语句?使用类向导为新创建的对话框创建类。ctrl+w是UI资源视图中的快捷键。通过dialog类(DoModal(),或对于非模式对话框,create)创建对话框时,这是正常的操作方式 你当然需要从cCaldio继承,并添加一个消息映射来将消息路由到你的EWVER处

我在已经存在的资源文件中定义了一个新对话框及其控件。我还创建了一个新文件,该文件将处理从该对话框生成的事件。但我不知道如何将这两者联系起来


是语句
enum{IDD=IDD_NEW_DIALOG}连接两个所需的全部内容?还是应该添加其他语句?

使用类向导为新创建的对话框创建类。ctrl+w是UI资源视图中的快捷键。

通过dialog类(
DoModal()
,或对于非模式对话框,
create
)创建对话框时,这是正常的操作方式


<>你当然需要从cCaldio继承,并添加一个消息映射来将消息路由到你的EWVER处理函数。

< P>这种方式通常在MFC中进行,就是在资源编辑器中定义一个对话框模板(如你所做的),然后在C++中从cBudio派生一个类,并将它与对话框模板关联起来。(这听起来像是你做的——还不完全清楚)

实际上,将两者关联起来的是CDialog代码的构造函数。如果查看MFC类向导自动生成的与对话框相关的代码,您将在构造函数实现中看到如下内容:

CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/) : CDialog(CMyDlg::IDD, pParent)
其中,CMyDlg::IDD被定义为一个枚举,其值为新对话框模板的标识符。正是这一点使这一切得以实现,而不是枚举的声明。您可以将其修改为

CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/) : CDialog(IDD_NEW_DIALOG, pParent)
它仍然可以工作(假设IDD_NEW_DIALOG是参考资料中对话框的模板id),因为所发生的一切就是将对话框id传递到构造函数中

一般来说,它总是值得记住的,尽管最初出现,MFC并不通过编译器魔法位绑定到Windows——它都是用C++和一些宏来完成的。
编辑:DIALOGEX和DIALOG声明了Windows理解的稍有不同的对话框资源格式:前者比后者更新。但是这两种格式至少都是从Windows 95开始出现的,所以这不是一个很明显的区别。

感谢您的回复。我从CDialog派生的基类派生了这个类。所以我想s负责处理这些东西。