请教一个关于系统时间的问题,感谢您的帮助!

jsfun 2004-01-02 11:01:10
请问如何在MFC窗口的数据显示区中的某一指定位置显示当前时间,即象WINDOWS右下脚任务栏中的时间一样,把实时时间显示在MFC窗口数据显示区中,就像显示一幅位图一样,只不过这里要求程序一启动就显示时间!感谢大家提供帮助!
...全文
53 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
carbon107 2004-01-02
  • 打赏
  • 举报
回复
m_wndStatusBar.SetText(4, CTime::GetCurrentTime().Format("系统时间:%H:%M:%S"),CTime::GetCurrentTime().Format("%H:%M:%S"));

m_wndStatusBar为状态条
jsfun 2004-01-02
  • 打赏
  • 举报
回复
bluebohe(薄荷)大哥,能不能帮我写一段简单的代码,谢谢了!
zhucde 2004-01-02
  • 打赏
  • 举报
回复


CTime t=CTime::GetCurrentTime(); //取出当前时间
int y=t.GetYear();
int d=t.GetDay();
int m=t.GetMonth();
int h=t.GetHour();
int min=t.GetMinute();
int s=t.GetSecond();

CString yy,dd,mm,hh,mins,ss,total;
yy.Format("%d",y);
dd.Format("%d",d);
mm.Format("%d",m);
if(h<10)
hh.Format("0%d",h);
else
hh.Format("%d",h);
if(min<10)
mins.Format("0%d",min);
else
mins.Format("%d",min);
if(s<10)
ss.Format("0%d",s);
else
ss.Format("%d",s);

total=yy+"-"+mm+"-"+dd+" "+hh+":"+mins+":"+ss;


GetDlgItem(IDC_STATIC1)->SetWindowText(total); //在静态文本框中

这里用的是显示在一个静态文本框中,
当然你想显示在什么地方由你自己定,只要把以上显示的代码放到初始化里就行了.
bluebohe 2004-01-02
  • 打赏
  • 举报
回复
这很容易啊CTime::GetCurrentTime()可以得到当前时间,使用CTime::Format函数可以得到时间字符串,然后在一个Timer中实时地TextOut到屏幕上就可以了
broadoceans 2004-01-02
  • 打赏
  • 举报
回复
首先定义一个WM_TIMER处理函数,每秒钟执行一次。
然后在处理函数中用GetLocalTime得到时间。
并写入窗口数据显示区即可。
ninsenki 2004-01-02
  • 打赏
  • 举报
回复
用GetSystemTime获得时间显示,并SetTimer(1,1000,NULL)
fzd999 2004-01-02
  • 打赏
  • 举报
回复
楼主你不是吧,薄荷是不是晕倒了已经? :)

在ClassView的CTimerView项上单击鼠标右键,在弹出菜单中选择“Add Windows Message handler”,然后在弹出的对话框左边列表里面双击WM_CREATE,然后按Edit Existing就可以添加OnCreate函数的代码了

同样的步骤,双击WM_DESTROY,可以添加OnDestroy的函数代码
pf1685 2004-01-02
  • 打赏
  • 举报
回复
我是采用的基于MFC的单文本结构,这两个函数我应该分别放到那里?
pf1685 2004-01-02
  • 打赏
  • 举报
回复
我是采用的基于MFC的单文本结构,这两个函数我应该分别放到那里?
taianmonkey 2004-01-02
  • 打赏
  • 举报
回复
SetTimer(1,1000,NULL)和KillTimer(1);放的位置不正确!
SetTimer(1,1000,NULL)一般放在初始化中,
KillTimer(1) 放在销毁窗口或停止计时的代码中;
jsfun 2004-01-02
  • 打赏
  • 举报
回复
我在view类中没有看到OnCreate()和OnDestroy() 两个函数,我把SetTimer(1,1000,NULL)和
KillTimer(1)分别加到OnBeginPrinting和OnEndPrinting中的。并且加入了WM_TIMER消息响应函数,代码如下:
void CTimerView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CTime t=CTime::GetCurrentTime(); //取出当前时间
int y=t.GetYear();
int d=t.GetDay();
int m=t.GetMonth();
int h=t.GetHour();
int min=t.GetMinute();
int s=t.GetSecond();

CString yy,dd,mm,hh,mins,ss,total;
yy.Format("%d",y);
dd.Format("%d",d);
mm.Format("%d",m);
if(h<10)
hh.Format("0%d",h);
else
hh.Format("%d",h);
if(min<10)
mins.Format("0%d",min);
else
mins.Format("%d",min);
if(s<10)
ss.Format("0%d",s);
else
ss.Format("%d",s);

total=yy+"-"+mm+"-"+dd+" "+hh+":"+mins+":"+ss;
HDC m_hdc=::GetDC(*this);
TextOut(m_hdc,0,0,total,20);//在这里输出时间

CView::OnTimer(nIDEvent);
}
但为什么窗口中没有任何反应?请指教!
bluebohe 2004-01-02
  • 打赏
  • 举报
回复
View中OnCreate添加SetTimer(1,1000,NULL),OnDestroy() 添加 KillTimer(1);然后用类向导导出View类的WM_TIMER消息响应函数,在这个函数中添加代码

16,551

社区成员

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

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

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