在何处调用MFC对话框的DestroyWindow()?
我现在正在MFC应用程序中处理对话框,而且——不可否认——我对MFC还很陌生 假设我有一个类在何处调用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在深入
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
),因此我认为您走的是正确的道路