MFC,实现消息框自动倒计时的功能...

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC,实现消息框自动倒计时的功能...相关的知识,希望对你有一定的参考价值。

小弟不才,最近在学MFC,想做一个消息自动倒计时的功能,想了很久就是不知道要怎么做...MessageBox产生的消息框,在消息框上显示 10秒,9秒。。。然后,到0秒的时候,自动关闭消息窗口??谢谢
感谢二楼的回答,可你好像是误解的的提问的原意了吧....我要做的是一个消息框.

用MessageBox不行,
你直接做个小的对话框,
然后在对话框的ON_TIMER消息里面做这个就行了
好吧,你如果要这样做的话稍微麻烦点
得到MessageBox窗口,得到它的窗口指针
开启一个单独的线程,通过这个窗口指针来操作,
你觉得哪个简单呢!
参考技术A 先作一个对话框,在对话框上添加一个控件(如EditBox),在这个控件上显示时间、先取得开始倒计时的系统时间t,开始计时以后的时间T,则10-(T-t)的值即为倒计时,把它显示在控件上,并隔一秒刷新一下。 参考技术B 先打开资源
然后 菜单-》格式-》Tab键顺序。
将这个控件的Tab顺序优先。
参考技术C 消息框是很难更改的,二楼说的是正解。。你想要做的应该就是一个倒计时的面板吧?

2创建MFC应用程序——基于对话框,时间计时器

使用计时器更新MFC界面时间,频率1s。

技术图片

文件——新建项目——MFC应用程序,下一步,选择基于对话框,其他默认,完成。

技术图片

双击窗体(或者鼠标右键)进入类向导,自动创建Ontimer()函数

技术图片

void CMFCApplication8Dlg::OnTimer(UINT_PTR nIDEvent)
{
    // TODO:  在此添加消息处理程序代码和/或调用默认值
    CTime time = CTime::GetCurrentTime();//获取当前时间
    CString str;
    str.Format(_T("%d年%2d月%2d日 %2d:%2d:%2d"), time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond());
    SetDlgItemText(IDC_EDIT1, str);//在文本框中显示str结果

    CDialogEx::OnTimer(nIDEvent);
}

// CMFCApplication8Dlg 消息处理程序

BOOL CMFCApplication8Dlg::OnInitDialog()中添加

SetTimer(1, 1000, NULL);//计时器1,1000ms触发一次OnTimer()函数

 

以上是关于MFC,实现消息框自动倒计时的功能...的主要内容,如果未能解决你的问题,请参考以下文章

自动消失的自定义消息框

猎豹MFC--消息映射

求助关于MFC的拖拽消息

MFC 中,按钮和其他(比如:图片框、列表框)控件怎么响应鼠标移动消息?

无法在 mfc 中用 CTaskDialog 替换经典消息框

mfc中,怎么把一个窗口的编辑框内容调用到另一个窗口的控件里