evc中怎样在程序退出时弹出是否退出的提示对话框?

xiaogang2000 2011-02-01 07:32:51
evc中怎样在程序退出时弹出是否退出的提示对话框?

1、基于对话框的程序,在点击右上角的叉时,希望弹出是否退出的提示对话框,当用户点击确定时,程

序退出,点击取消时,程序不退出。

2、退出的提示对话框要和主程序对话框同时存在。

请问高手,我该如何实现上述功能?谢谢大家帮忙!
...全文
245 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaogang2000 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 js_gary 的回复:]
最近在外面出差,回去帮你试下PPC的
[/Quote]

必须得谢!!!
  • 打赏
  • 举报
回复
最近在外面出差,回去帮你试下PPC的
xiaogang2000 2011-03-03
  • 打赏
  • 举报
回复
继续等待。。。。。
xiaogang2000 2011-02-27
  • 打赏
  • 举报
回复
PPC版本的有人知道吗?
xiaogang2000 2011-02-24
  • 打赏
  • 举报
回复
我刚才测试了下:

基于WINCE的,点X,后面的主框不会消失
基于PPC的,点X,后面的主框消失

我要的是PPC的。

再次谢谢js_gary,感谢你
  • 打赏
  • 举报
回复
不会吧,我刚用EVC简单create了一个基于MFC的project

在WM_CLOSE消息里加了个MessageBox提示

点X,后面的主框不会消失啊

你是怎么做的,可以发出来看看,或发我邮箱帮你看下吧,是不是存在口头描述上的差异
garylijs@gmail.com
xiaogang2000 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 ezhong0812 的回复:]
添加个类 :class ErrDlg : public CDialog
ErrDlg 的OnInitDialog()中设置对话框的位置和大小:
this->MoveWindow(100,100,500,300);
ErrDlg 的OnPaint()中:用DrawText写上要提示的话
ErrDlg 的OnEraseBkgnd():返回ture或者fasle
给ErrDlg添加两个按钮,一……
[/Quote]

谢谢您的回答。

我现在需要的是处理右上角的叉。
xiaogang2000 2011-02-21
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 js_gary 的回复:]
引用 21 楼 xiaogang2000 的回复:
而且后面的主框也不会先消失

我这边恰恰是主对话框先消失!

覆盖主窗口WM_CLOSE消息,然后点主窗口右上角的X,还是主框先消失?
[/Quote]

当然是“还是主框先消失”!
大家可以自己试试

谢谢了!
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 xiaogang2000 的回复:]
而且后面的主框也不会先消失

我这边恰恰是主对话框先消失!
[/Quote]
覆盖主窗口WM_CLOSE消息,然后点主窗口右上角的X,还是主框先消失?
xiaogang2000 2011-02-18
  • 打赏
  • 举报
回复
而且后面的主框也不会先消失

我这边恰恰是主对话框先消失!
ezhong0812 2011-02-18
  • 打赏
  • 举报
回复
添加个类 :class ErrDlg : public CDialog
ErrDlg 的OnInitDialog()中设置对话框的位置和大小:
this->MoveWindow(100,100,500,300);
ErrDlg 的OnPaint()中:用DrawText写上要提示的话
ErrDlg 的OnEraseBkgnd():返回ture或者fasle
给ErrDlg添加两个按钮,一个返回OnCancel();另一个返回OnOK();

在主对话框中申明:ErrDlg Err;
主对话框中点击关闭按钮的处理函数中:
INT_PTR response = PopErr.DoModal();
if(response==IDOK)
{ return OnOK();}
else
{//不做处理}


也可以完全由图片处理,不添加对话框
按钮用贴图做,在OnLButtonDown和OnLButtonUp中通过鼠标位置判断是取消还是确定
然后重绘主对话框界面。
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 xiaogang2000 的回复:]
引用 18 楼 js_gary 的回复:
引用 17 楼 xiaogang2000 的回复:
还没解决!
没有人回答??

还没解决啊,再不行给你个其他方法:
不用MessageBox这个API,自己建一个dialog做为你的MessageBox,具体思路如下:
假设 主程序上有个BUTTON1,点下调用新建的那个dialog,框的大小可以自行调整,比用API还人性点哦,调用代码如下……
[/Quote]

你要点那个X退出是吧,也可以,你给WM_CLOSE发消息
WM_CLOSE消息
WM_CLOSE:
if (MessageBox( "你确定要退出吗? ", "! ", MB_YESNO) == IDYES)
{
return 0;
}

应该就是你要的功能了,点X弹出一个提示是否退出的框,而且后面的主框也不会先消失。
xiaogang2000 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 js_gary 的回复:]
引用 17 楼 xiaogang2000 的回复:
还没解决!
没有人回答??

还没解决啊,再不行给你个其他方法:
不用MessageBox这个API,自己建一个dialog做为你的MessageBox,具体思路如下:
假设 主程序上有个BUTTON1,点下调用新建的那个dialog,框的大小可以自行调整,比用API还人性点哦,调用代码如下 :
dlgMsg dlg;
dlg.……
[/Quote]


感谢js_gary的帮忙!!!
我现在的主要问题是点击窗内上的叉来关闭程序时,不知其消息“首先”发到什么地方,不论我在哪里截获窗口关闭的消息,窗口都关闭了。

自己增加一个按钮来退出程序不是我需要的。
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 xiaogang2000 的回复:]
还没解决!
没有人回答??
[/Quote]
还没解决啊,再不行给你个其他方法:
不用MessageBox这个API,自己建一个dialog做为你的MessageBox,具体思路如下:
假设 主程序上有个BUTTON1,点下调用新建的那个dialog,框的大小可以自行调整,比用API还人性点哦,调用代码如下 :
dlgMsg dlg;
dlg.DoModal();
。。。。。

新建的框里,你要像实现成什么样都可以,如果你想点下整个程序都退出,可以用exit(0)或PostQuitMessage(0)都可以

试看看,good luck!
xiaogang2000 2011-02-14
  • 打赏
  • 举报
回复
还没解决!
没有人回答??
xiaogang2000 2011-02-12
  • 打赏
  • 举报
回复
代码就是这样啊,区别只是把他放在不同的地方,但是不管放到哪,总是先关闭的对话框!

注意,开发环境是EVC,不是VC++

int ret = AfxMessageBox(_T("确认真的要退出程序吗?!"), MB_YESNO);
if (ret != IDYES)
return;

91program 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xiaogang2000 的回复:]

现在我碰到的问题是,找不到一个好的地方放入AfxMessageBox;

不管将这个函数放在哪个地方,总是先关闭的对话框!
[/Quote]

不是吧,MS没有这样的要求!
xiaogang2000 2011-02-11
  • 打赏
  • 举报
回复
现在我碰到的问题是,找不到一个好的地方放入AfxMessageBox;

不管将这个函数放在哪个地方,总是先关闭的对话框!
  • 打赏
  • 举报
回复
把你的代码贴出来,说下你的思路
怎么可能会这样呢
  • 打赏
  • 举报
回复
用MFC写的程序,有时候会碰到 msg 无效,看代码也是对的,可以尝试把以前的函数删掉,重新建一个试下,不行可以试试WM_DESTROY有没有效,其实与OnDestroy函数是一样的,估计是你的程序结构上的问题
加载更多回复(9)

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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