MFC程序关闭了窗口,但进程没有退出,Why?How?
写一个基于SDI的切分窗口界面,一开始都很正常,后来为了使子窗口固定大小,不响应鼠标的拖曳,参照网上的方法,自己写一个CSplitterWnd的派生类CMySplitterWnd,于是就出问题了,关闭了主窗口后,任务管理器中显示进程依然存在,这是为什么?可以确定是添加了CMySplitterWnd类之后出现的问题,其他的没有问题。
CMySplitterWnd是用ClassWizard生成的,一开始是选择基类是generic CWnd,然后手动改为CSplitterWnd,重载OnLButtonDwon()和OnMouseMove()函数。
没有增加新的成员变量,构造函数和析构函数都直接调用CSplitterWnd原来的。
/////////////////////////////////////////////////////////
//MySplitterWnd.h
class CMySplitterWnd : public CSplitterWnd
{
// Construction
public:
CMySplitterWnd();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMySplitterWnd)
//}}AFX_VIRTUAL
// Implementation
public:
virtual ~CMySplitterWnd();
// Generated message map functions
protected:
//{{AFX_MSG(CMySplitterWnd)
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
////////////////////////////////////////////////////////////////
//MySplitterWnd.cpp
CMySplitterWnd::CMySplitterWnd()
{
CSplitterWnd::CSplitterWnd();
}
CMySplitterWnd::~CMySplitterWnd()
{
CSplitterWnd::~CSplitterWnd();
}
BEGIN_MESSAGE_MAP(CMySplitterWnd, CSplitterWnd)
//{{AFX_MSG_MAP(CMySplitterWnd)
ON_WM_LBUTTONDOWN()
ON_WM_MOUSEMOVE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMySplitterWnd message handlers
void CMySplitterWnd::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//CSplitterWnd::OnLButtonDown(nFlags, point);
return;
}
void CMySplitterWnd::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
//CSplitterWnd::OnMouseMove(nFlags, point);
CWnd::OnMouseMove(nFlags, point);
}
///////////////////////////////////////////////////////////