回 帖 发 新 帖 刷新版面

主题:编程新手--C/C++--MFC编程--状态栏显示系统时间

在MFC编程中,如何让程序显示系统时间呢?下面为编程入门级的朋友做个简单的介绍。

本文专为编程新手朋友设计,老鸟可以一带而过。

首先先创建一个MFC程序。



要在程序当中显示系统时间,最好的地方就是在状态栏部分了,放在其他地方可能会影响程序使用。当然也可以放在标题栏上,不过个人感觉不太美观。

在状态栏上先增加一个提示框,可以在CMainFrame类当中的状态栏提示框数组indicators中增加一个String Table资源标识符,直接在资源菜单中创建即可。





显示系统时间当然要获取系统时间,可以用CTime类的成员函数GetCurrentTime。完成之后要做格式化操作,可以继续用成员函数Format。

之后要做的就是在状态栏显示系统时间了。直接用CStatusBar类的成员函数SetPaneText即可。

整体思路就是这样,在MFC程序当中的CMainFrame类中的OnCreate函数中写这些代码就完成了。但是你会发现不能显示秒数,这是因为提示框的宽度不够,设置提示框的宽度调用SetPaneInfo函数即可。

额 不会弄图片 原文发在[url=http://lun3322.3322.org]我的博客上[/url]

本文地址:[url=http://lun3322.3322.org/post/40.html]状态栏显示系统时间[/url]   上面有详细的图片和完整的例子

回复列表 (共2个回复)

沙发

在程序中调用SetPaneText设置状态栏文字,却发现很快又被 "Ready "字符串所覆盖,什么原因?

原因是默认状态下,状态栏都已有对应的消息映射,比如我们要设置文字
调用函数:
((CStatusBar*)AfxGetMainWnd()->GetDlgItem(AFX_IDW_STATUS_BAR))->SetPaneText(0,str,true);
后又会很快被“就绪”及其它提示等所覆盖。 

下面我们来实现自定义状态栏消息
首先创建一个单文档MFC程序
然后进入资源编辑窗,在String Table中添加一个值如下图:
IDS_MYSTATUS   "我的状态栏消息"

修改MainFrm.cpp 

static UINT indicators[] =
{
    ID_SEPARATOR,           // status line indicator
    IDS_MYSTATUS,
    ID_INDICATOR_CAPS,
    ID_INDICATOR_NUM,
    ID_INDICATOR_SCRL,
};
现在如果你编译并运行程序,你会发现你的状态栏多了一个显示项了,对,就是"我的状态栏消息"
下面要动态改变状态栏显示的信息:
在MainFrm.h中 添加一个公有函数SetStatusText(CString msg);
// Implementation
public:
    void SetStatusText(CString msg);


在DiyView.cpp中 包含头文件
#include   "MainFrm.h " 

加入消息响应函数
void CDiyView::OnLButtonDown(UINT nFlags, CPoint point) 
{
    // TODO: Add your message handler code here and/or call default
    ((CMainFrame*)AfxGetApp()->m_pMainWnd)->SetStatusText("鼠标左键按下了!");
    CView::OnLButtonDown(nFlags, point);
}

void CDiyView::OnLButtonUp(UINT nFlags, CPoint point) 
{
    // TODO: Add your message handler code here and/or call default
    ((CMainFrame*)AfxGetApp()->m_pMainWnd)->SetStatusText("鼠标左键松开了!");
    CView::OnLButtonUp(nFlags, point);
}
这样,状态栏的信息就可以动态改变了. 
  进来, 有好东西! 
原文出处:http://host286.com/articles.asp?ID=6602

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.会打字.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册