这应该是个老问题,我来稍微总结下:(我刚刚接触Windows编程希望大家多多指点)
1.上来来个最鲁莽的.
直接通过exit(0),ExitProcess(0); //不好的用法
猜测资源得不到回收
原因如下:
http://blog.csdn.net/jiang1013nan/article/details/4831020
2.向父窗口发送WM_CLOSE消息,然后自己关闭自己的窗口。
获取将父窗口的句柄直接传给子窗口,然后子窗口可以直接关闭父窗口.
示例代码如下:
父窗口类的定义:
// CMFC_biometic_authenticationDlg 对话框
class CMFC_biometic_authenticationDlg : public CDialogEx
{
// 构造
public:
CMFC_biometic_authenticationDlg(CWnd* pParent = NULL); // 标准构造函数
// 对话框数据
enum { IDD = IDD_MFC_BIOMETIC_AUTHENTICATION_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
HICON m_hIcon;
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedOk();
afx_msg void OnStnClickedPasswordTipsStatic();
afx_msg void OnStnClickedUsernameStatic();
afx_msg void OnEnChangeEdit3();
afx_msg void OnEnChangeFingerTipsEdit();
private:
CString m_username;
private:
CString m_password;
private:
CString m_message_return;
public:
afx_msg void OnBnClickedOkButton();
afx_msg void OnStnClickedPassMessageStatic();
afx_msg void OnBnClickedInstructionLog();
private:
CUserDialog m_Userlog;
public:
afx_msg void OnClose();
};
子窗口类的定义
class CUserDialog : public CDialogEx
{
DECLARE_DYNAMIC(CUserDialog)
public:
CUserDialog(CWnd* pParent = NULL); // 标准构造函数
virtual ~CUserDialog();
// 对话框数据
enum { IDD = IDD_USER_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedUserExitButton();
afx_msg void OnBnClickedOk();
afx_msg void OnClose();
private:
CWnd *m_pParentWnd;
};
CWnd *m_pParentWnd; 子窗口类中用来存储父窗口的指针
CUserDialog::CUserDialog(CWnd* pParent /*=NULL*/)
: CDialogEx(CUserDialog::IDD, pParent), m_pParentWnd(pParent)
{
}void CUserDialog::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//ExitProcess(0); //不好的用法
//::DestroyWindow(m_pParentWnd);
::SendMessage(m_pParentWnd->m_hWnd, WM_CLOSE, 0, 0);
CDialogEx::OnClose();
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/u010003835/article/details/47303267