在何处调用MFC对话框的DestroyWindow()?

在何处调用MFC对话框的DestroyWindow()?,mfc,dialog,destructor,destroy,ondestroy,Mfc,Dialog,Destructor,Destroy,Ondestroy,我现在正在MFC应用程序中处理对话框,而且——不可否认——我对MFC还很陌生 假设我有一个类A(派生自CDialog),它使用类B(也派生自CDialog)。因此,A::OnInitDialog()调用B的create(…)方法 我现在看到类B的析构函数包含 if ( GetSafeHwnd() ) { DestroyWindow(); } 这样行吗?根据我的理解,最好在A::OnDestroy()中调用B的DestroyWindow()方法。是这样吗 谢谢你的帮助 Oliver在深入

我现在正在MFC应用程序中处理对话框,而且——不可否认——我对MFC还很陌生

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

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

if ( GetSafeHwnd() )
{
    DestroyWindow();
}
这样行吗?根据我的理解,最好在
A::OnDestroy()
中调用
B
DestroyWindow()
方法。是这样吗

谢谢你的帮助

Oliver

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

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