mfc编程怎么可以在状态栏时时显示系统时间

 我来答
bhtzu
2016-08-04 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4233万
展开全部

在MFC框架下,单文档和多文档编程默认有状态栏(对话框需要自己创建状态栏),在文档视图程序中显示时间,需要在框架窗口(CMainFrame)下处理,具体步骤如下:

  1. 在状态栏中增加显示时间的区块:首先到ResourceView中编辑String Table,增加IDS_TIMER(时间),然后在CMainFrame中修改indicators数组,插入IDS_TIMER,插入的位置,即为显示的位置。(添加字符串必须将字符串说明也写上,不然无法新建);

  2. 在CMainFrame的OnCreate函数末尾添加SetTimer(1,1000,NULL); 语句;

  3. 在CMainFrame中增加WM_TIMER消息响应函数OnTimer,并在该定时器函数中增加如下代码:

CTime t=CTime::GetCurrentTime();          //获得当前的系统时间
CString str=t.Format("%H:%M:%S");       //格式可以参考MSDN中的strftime函数
int index==m_wndStatusBar.CommandToIndex(IDS_TIMER);
//此处也可以直接输入IDS_TIMER在indicators数组中从0开始的序号。
m_wndStatusBar.SetPaneText(index,str);

状态栏显示宽度默认为IDS_TIMER字符串的宽度,如果需要动态设置,可以使用SetPaneInfo函数。

在对话框程序中,因为对话框没有默认状态栏,需要手动创建一个,其它代码大致思路相同,都是在定时器中获取时间、格式化为字符串,并将字符串设置为状态栏文本。创建状态栏大致代码如下:

HWND Statu;//在对话框类头文件中,设置为类成员变量
//以下代码在OnInitDialog中
statu = CreateStatusWindow(WS_CHILD|WS_VISIBLE,"显示系统时间",this->m_hWnd,IDI_ICON_LOGO);
a99899s
2016-05-17 · 超过16用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:31.9万
展开全部
//初始化里,
SetTimer(1,1000,NULL); //定时器

//定时器消息响应
void CLittleCheaterDlg::OnTimer(UINT nIDEvent)
{
CTime Time;

Time=Time.GetCurrentTime();
m_StatusBar.SetPaneText(0,Time.Format(_T("%y/%m/%d/%w %H:%M:%S")));

CDialog::OnTimer(nIDEvent);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxcccv
2016-06-30 · TA获得超过494个赞
知道小有建树答主
回答量:410
采纳率:75%
帮助的人:144万
展开全部
显示系统时间,需要实时获取并更新时间到界面上。一般的思路是使用一个定时器。处理函数里面获取系统时间,并且显示到状态栏。定时器的时间根据你对时间的精度来设置。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
只为塑造更好的自己
2016-04-24 · TA获得超过387个赞
知道小有建树答主
回答量:325
采纳率:66%
帮助的人:70.6万
展开全部
弄个timer啊,隔一秒就刷新下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黎牛牛Pk
2016-04-15 · TA获得超过1042个赞
知道小有建树答主
回答量:396
采纳率:100%
帮助的人:110万
展开全部
你所指的状态栏我不知道是哪里
时间转字符串如下
CTime t1 = CTime::GetCurrentTime();
t1.Format("%Y-%m-%d %H:%M:%S");
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式