MFC 单文档应用程序如何在状态栏显示时间

创建一个单文档应用程序。

1.选择资源视图选项卡,双击String Table(字符串表)打开字符串表编辑器。

在最下面的一行上双击,将字符串标识修改为ID_INDICATOR_CLOCK,并将Caption文本框修改为“00:00:00 ”,注意最后一个00后面有一个空格,要不然时间显示不完整。

2.添加状态栏指示器。在CMainFrame类的实现文件(直接放在构造函数之前,而不是构造函数里)中,添加如下代码:

static UINT indicators[] =
{
	ID_SEPARATOR,           // 状态行指示器
	ID_INDICATOR_CLOCK,//添加指示器,用于显示时间信息
	ID_INDICATOR_CAPS,
	ID_INDICATOR_NUM,
	ID_INDICATOR_SCRL,
};
3.添加时间信息显示功能,为CMainFrame类添加WM_TIMER消息响应函数OnTimer:

//添加WM_TIMER消息响应函数OnTimer
void CMainFrame::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CTime time=CTime::GetCurrentTime();//获取当前时间
	CString strTime=time.Format("%H: %M: %S");//转换时间格式
	UINT nIndex=m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK);//获取时间指示器索引
	m_wndStatusBar.SetPaneText(nIndex,strTime);//设置显示时间

	CFrameWndEx::OnTimer(nIDEvent);
}
4.在CMainFrame类的成员函数OnCreate中添加定时器,添加位置在return 0;之前代码如下:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	//......
	SetTimer(1,1000,NULL);//添加定时器,开始时钟功能

	return 0;
}
5.编译运行,状态栏将显示时钟,效果如下:

提示:如编译不通过添加此头文件#include //CTime::GetCurrentTime()调用此函数需头文件。


你可能感兴趣的:(C++/VC++/MFC)