非模态对话框怎么销毁
非模态对话框如何销毁?
我在view类中有一个非模态对话框(这个对话框我删除了标题栏和系统按钮,没有关闭键)
在VIEW类的OnInitialUpdate()中创建如下
在VIEW类的析构中如下
在VIEW其他函数中有
m_pSearchBar->ShowWindow(SW_SHOW);
没有明显的错误,但是在DEBUG模式下退出时会有报错的声音,没有错误提示。
但是如果调用了 m_pSearchBar->ShowWindow(SW_HIDE);以后再退出程序,不会有错误声音。
一行一行跟踪了很久没找到问题,我愚钝的猜想是析构时出的问题,错在哪里,求解
------解决方案--------------------
查一下是不是重复销毁的问题。
我就碰到过类似的情况。
delete m_pSearchBar; 这句看看是不是重复了
有些新版本的控件都自带类似托管功能的。反而有时候你意识很好去销毁,动作反而重复了。
------解决方案--------------------
还有: 按照mfc的说法,应该是先销毁了 view 对应的窗口,最后销毁CView这个类。
注意有两个东西,一个是 窗口,一个是窗口对应的c++类。
如果已经进入了了c++类的CView的析构函数里,就已经说明了 窗口被销毁了。
那么我觉得你应该在 CView::OnDestroy中 销毁 对话框窗口及其对应的类
不应该放在析构函数中,去销毁对话框。
各位觉得如何?
我在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中 销毁 对话框窗口及其对应的类
不应该放在析构函数中,去销毁对话框。
各位觉得如何?