【问题标题】:Where to call DestroyWindow() of an MFC dialog?在哪里调用 MFC 对话框的 DestroyWindow()?
【发布时间】:2011-07-06 07:38:46
【问题描述】:

我目前正在处理 MFC 应用程序中的对话框,而且我 - 诚然 - 对 MFC 很陌生。

假设我有类A(派生自CDialog)使用类B(也派生自CDialog)。因此,A::OnInitDialog() 调用了Bcreate(...) 方法。

我现在看到 B 类的析构函数包含

if ( GetSafeHwnd() )
{
    DestroyWindow();
}

这样好吗?据我了解,最好在A::OnDestroy() 中调用BDestroyWindow() 方法。对吗?

感谢您的帮助!
奥利弗

【问题讨论】:

    标签: mfc dialog destructor destroy ondestroy


    【解决方案1】:

    当您深入研究 MFC 时,您可能已经注意到一件事,那就是它是一个包装 API,而不是严格面向对象的。虽然我们希望喜欢使用 RAII(资源获取即初始化),但 MFC 不会在其构造函数中创建窗口。正如您正确指出的那样,它是通过 Create() 方法实现的。

    因此,考虑到 MFC 的工作方式,在 A 被销毁 (A::OnDestroy) 时销毁 B 对我来说更有意义,所以我认为你走的是正确的道路。

    【讨论】:

      猜你喜欢
      • 2014-10-10
      • 2015-12-28
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      相关资源
      最近更新 更多