|
发表于 2020-2-27 23:55:10
|
显示全部楼层
本楼为最佳答案
本帖最后由 VC6 于 2020-2-28 02:49 编辑
- // SearchDlg.h 头文件中
- #define MSG_DELETE_ME (WM_USER+1000) //自定义消息
- class CSearchDlg : public CDialog
- {
- public:
- CSearchDlg(CWnd* pParent = NULL); // standard constructor
- ~CSearchDlg();//添加析构函数用于测试观察
- PVOID m_pBuffer;//添加指针变量用于测试观察
- HWND m_hWndMain;//主窗口句柄
- virtual void OnCancel(); //重载CSearchDlg类的OnCancel()函数
复制代码
- CSearchDlg::CSearchDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CSearchDlg::IDD, pParent)
- {
- OutputDebugString(_T("构造函数中申请一块内存"));
- m_pBuffer = malloc(4096*4096);
- }
- CSearchDlg::~CSearchDlg()
- {
- OutputDebugString(_T("析构函数释放这一块内存"));
- if (m_pBuffer)
- {
- free(m_pBuffer);
- m_pBuffer = NULL;
- }
- }
- void CSearchDlg::OnCancel()
- {
- ::PostMessage(m_hWndMain, MSG_DELETE_ME, (WPARAM)this, 0);//给主窗口发送消息,通知主窗口删除资源
- CDialog::OnCancel();
- }
复制代码
- //主窗口中的按钮事件
- void CMainDlgDlg::OnBtnSearch()
- {
- CSearchDlg *pSearchDlg;//记得要包含SearchDlg.h头文件
- pSearchDlg = new CSearchDlg;
- pSearchDlg->Create(IDD_SEARCH_DLG);//创建
- pSearchDlg->m_hWndMain = this->m_hWnd;//设置主窗口句柄
- pSearchDlg->ShowWindow(SW_SHOW);
- }
- //重载主窗口的PreTranslateMessage
- BOOL CMainDlgDlg::PreTranslateMessage(MSG* pMsg)
- {
- if (pMsg->message == MSG_DELETE_ME)
- {
- OutputDebugString(_T("接收到删除资源消息了"));
- CSearchDlg *pSearchDlg = (CSearchDlg *)pMsg->wParam;
- delete pSearchDlg;
- return TRUE;
- }
- return CDialog::PreTranslateMessage(pMsg);
- }
复制代码
|
|