自定义MFC控件阻止创建对话框

自定义MFC控件阻止创建对话框,mfc,custom-controls,Mfc,Custom Controls,我有一个自定义MFC控件,子类化CWnd。除了提供OnPaint和PreSubclassWindow实现之外,它不覆盖任何默认功能,在构造中也不做任何奇怪的事情,只在构造函数中注册一个窗口类 使用对话框编辑器将控件添加到对话框中,以添加自定义控件 当该对话框是从CDialog派生的简单模式对话框时,它就工作了,但我们有调用CWnd::CreateDlgIndirect到实例对话框的代码,这在自定义控件中失败了。。。但是,如果从资源模板中删除自定义控件,则可以使用它。找到了它 我让自定义控件在自己

我有一个自定义MFC控件,子类化CWnd。除了提供OnPaint和PreSubclassWindow实现之外,它不覆盖任何默认功能,在构造中也不做任何奇怪的事情,只在构造函数中注册一个窗口类

使用对话框编辑器将控件添加到对话框中,以添加自定义控件

当该对话框是从CDialog派生的简单模式对话框时,它就工作了,但我们有调用CWnd::CreateDlgIndirect到实例对话框的代码,这在自定义控件中失败了。。。但是,如果从资源模板中删除自定义控件,则可以使用它。

找到了它 我让自定义控件在自己的构造函数中注册它的窗口类。我在这个自定义控件类型的对话框中有一个成员,所以在创建对话框时,按预期调用了ctor。 但是,事实证明,在我的新类自身初始化之前,我更改了对话框以从中派生的基类(而不是CDialog)在其自己的ctor中调用了CreateDlgIndirect,因此它试图在注册窗口类之前创建自定义控件

我的解决方案(有点混乱)是确保窗口类注册在InitInstance方法中的应用程序启动时发生,在任何对话框发生之前