我经常在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
(A::OnDestroy
(时销毁B
对我来说更有意义,所以我认为你走的是正确的道路。