【问题标题】:Custom MFC control prevents dialog creation自定义 MFC 控件阻止创建对话框
【发布时间】:2009-11-03 12:33:04
【问题描述】:

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

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

当它是一个从 CDialog 派生的简单模式对话框时,该对话框可以工作,但是我们有代码调用 CWnd::CreateDlgIndirect 到实例对话框,并且自定义控件会失败...但是如果自定义控件从资源模板。

【问题讨论】:

    标签: mfc custom-controls


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-18
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 2022-01-24
      • 2010-09-09
      • 2010-10-21
      相关资源
      最近更新 更多