3

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

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

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

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

这个可以吗?B在我的理解中,调用'sDestroyWindow()方法会更好A::OnDestroy()。是对的吗?

谢谢你的帮助!
奥利弗

4

1 回答 1

3

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

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

于 2011-07-06T07:43:54.307 回答