在哪里调用MFC对话框的DestroyWindow()



我经常在MFC应用程序中处理对话框,无可否认,我对MFC很陌生。

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

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

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

这样可以吗?根据我的理解,最好在A::OnDestroy()中调用BDestroyWindow()方法。是这样吗?

谢谢你的帮助
Oliver

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

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

最新更新