MFC如何发送一个关闭对话框消息

franzhong 2011-03-12 03:20:12
对话框ID(ID_DLG1)
如何动态的发一个消息把这个非模的框关闭
...全文
1430 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2011-03-12
  • 打赏
  • 举报
回复
CXXDlg* pDlg = new CXXDlg;
pDlg->Create(…);

pDlg->DestroyWindow();
delete pDlg;
stlong0521 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 franzhong 的回复:]

引用 5 楼 stlong0521 的回复:
pWnd->PostMessage(WM_DESTROY,0,0);
pWnd->PostMessage(WM_NCDESTROY,0,0);
pWnd为你要关闭的窗口类指针

CReport_Add * Rpa = new CReport_Add;
Rpa->PostMessage(WM_DESTROY,0,0);
Rpa->Post……
[/Quote]
你那CReport_Add是什么类型呀?是窗口类吗?
应该首先获取窗口类指针,如果你的窗口处于打开状态,可以通过以下方法获取窗口类指针

//获取窗口句柄,其中的#32770可以由SPY++获得
HWnd = FindWindow(_T("#32770"), _T("此处填写你的窗口的Caption"));

//由窗口句柄获取窗口类指针
pWnd = CWnd::FromHandle(HWnd);
风______ 2011-03-12
  • 打赏
  • 举报
回复
pDlg->ShowWindow( SW_HIDE); //隐藏
pDlg->ShowWindow( SW_SHOW); //显示
franzhong 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 tywfeng 的回复:]
把窗口隐藏不好吗 要不下次用的话还要new 、 create、show
[/Quote]
怎么隐藏
风______ 2011-03-12
  • 打赏
  • 举报
回复
把窗口隐藏不好吗 要不下次用的话还要new 、 create、show
风______ 2011-03-12
  • 打赏
  • 举报
回复
发 wm_close消息
franzhong 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangld02 的回复:]
直接用::SendMessage(pDlg->m_hWnd, WM_CLOSE, 0, 0);

{//一个按钮,这里创建对话框
CDialog * pDlg = new CDialog;
pDlg->Create(IDD_DIALOG1);
pDlg->ShowWindow(SW_SHOW);
//这里要保持pDlg;
}

{//另外一个按钮,这样可以关闭刚……
[/Quote]
是我没说明白,对话框上有取消的按纽,我是想在别的地方,你比方点了别的地方去了,例如回主页,我就要把刚才的没关的帮他关了
franzhong 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 djj315 的回复:]
引用 7 楼 franzhong 的回复:
引用 5 楼 stlong0521 的回复:
pWnd->PostMessage(WM_DESTROY,0,0);
pWnd->PostMessage(WM_NCDESTROY,0,0);
pWnd为你要关闭的窗口类指针

CReport_Add * Rpa = new CReport_Add;
Rpa->Create(非模态窗体ID,th……
[/Quote]
卡住了,不行,再Create一次是为了什么啊
天山游龙 2011-03-12
  • 打赏
  • 举报
回复
直接用::SendMessage(pDlg->m_hWnd, WM_CLOSE, 0, 0);

{//一个按钮,这里创建对话框
CDialog * pDlg = new CDialog;
pDlg->Create(IDD_DIALOG1);
pDlg->ShowWindow(SW_SHOW);
//这里要保持pDlg;
}

{//另外一个按钮,这样可以关闭刚才产生的非模态对话框
::SendMessage(pDlg->m_hWnd, WM_CLOSE, 0, 0);
}
Simao 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 franzhong 的回复:]
引用 5 楼 stlong0521 的回复:
pWnd->PostMessage(WM_DESTROY,0,0);
pWnd->PostMessage(WM_NCDESTROY,0,0);
pWnd为你要关闭的窗口类指针

CReport_Add * Rpa = new CReport_Add;
Rpa->Create(非模态窗体ID,this);
Rpa->PostMessage(WM_DESTROY,0,0);
Rpa->PostM……
[/Quote]
franzhong 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 stlong0521 的回复:]
pWnd->PostMessage(WM_DESTROY,0,0);
pWnd->PostMessage(WM_NCDESTROY,0,0);
pWnd为你要关闭的窗口类指针
[/Quote]
CReport_Add * Rpa = new CReport_Add;
Rpa->PostMessage(WM_DESTROY,0,0);
Rpa->PostMessage(WM_NCDESTROY,0,0);
编译通过,进行点击后,弹出错误
franzhong 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 franzhong 的回复:]
引用 2 楼 gradual 的回复:
EndDialog

怎么用
void EndDialog( int nResult );
参数这样说的
Contains the value to be returned from the dialog box to the caller of DoModal.
我也没用DoModal,是个非模的,我想用ID关闭,要不然没有方法能找到我那个对……
[/Quote]
我用的是Create是不是要重载啊,我看MSDN例子是这样的,但不知非模能不能行,高手给点经验
stlong0521 2011-03-12
  • 打赏
  • 举报
回复
pWnd->PostMessage(WM_DESTROY,0,0);
pWnd->PostMessage(WM_NCDESTROY,0,0);
pWnd为你要关闭的窗口类指针
franzhong 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gradual 的回复:]
EndDialog
[/Quote]
怎么用
void EndDialog( int nResult );
参数这样说的
Contains the value to be returned from the dialog box to the caller of DoModal.
我也没用DoModal,是个非模的,我想用ID关闭,要不然没有方法能找到我那个对应的对话框了
franzhong 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lichunli1022 的回复:]
非模态对话框关闭,需要重载oncancel函数。
[/Quote]
谢谢你啦
重载该怎么写才能好在别处关闭啊
gradual 2011-03-12
  • 打赏
  • 举报
回复
EndDialog
LICHUNLI1022 2011-03-12
  • 打赏
  • 举报
回复
非模态对话框关闭,需要重载oncancel函数。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧