非模态对话框怎么销毁

非模态对话框如何销毁?
我在view类中有一个非模态对话框(这个对话框我删除了标题栏和系统按钮,没有关闭键)

在VIEW类的OnInitialUpdate()中创建如下
C/C++ code

    m_pSearchBar = new CSearchBarDlg();
    m_pSearchBar->Create(IDD_SEARCH_BAR);
    m_pSearchBar->SetParent(this);    //设置这句是为了随窗口移动
    m_pSearchBar->MoveWindow(CRect(2,2,1082,40));




在VIEW类的析构中如下
C/C++ code

    if(m_pSearchBar)
    {
        m_pSearchBar->DestroyWindow();
        delete m_pSearchBar;
        m_pSearchBar = NULL;
    }



在VIEW其他函数中有
m_pSearchBar->ShowWindow(SW_SHOW);



没有明显的错误,但是在DEBUG模式下退出时会有报错的声音,没有错误提示。
但是如果调用了 m_pSearchBar->ShowWindow(SW_HIDE);以后再退出程序,不会有错误声音。
一行一行跟踪了很久没找到问题,我愚钝的猜想是析构时出的问题,错在哪里,求解

------解决方案--------------------
查一下是不是重复销毁的问题。

我就碰到过类似的情况。

delete m_pSearchBar; 这句看看是不是重复了

有些新版本的控件都自带类似托管功能的。反而有时候你意识很好去销毁,动作反而重复了。
------解决方案--------------------
还有: 按照mfc的说法,应该是先销毁了 view 对应的窗口,最后销毁CView这个类。

注意有两个东西,一个是 窗口,一个是窗口对应的c++类。

如果已经进入了了c++类的CView的析构函数里,就已经说明了 窗口被销毁了。

那么我觉得你应该在 CView::OnDestroy中 销毁 对话框窗口及其对应的类

不应该放在析构函数中,去销毁对话框。

各位觉得如何?