📄 用vc++在状态栏显示时钟.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0055)http://www.ruijier.com/knowledge/c_c++/04072003/c55.htm -->
<HTML><HEAD><TITLE>用VC++在状态栏显示时钟</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2462.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY>
<DIV align=center>
<CENTER>
<TABLE style="FONT-SIZE: 10pt; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体" height=709
cellSpacing=0 cellPadding=0 width=600 border=0>
<TBODY>
<TR>
<TD height=41>
<P align=center><B><FONT color=#000080
size=3>用VC++在状态栏显示时钟 </FONT></B> </P></TD></TR>
<TR>
<TD style="BORDER-BOTTOM: #008000 2px solid" vAlign=top align=right
height=20>作者:张剑寅</TD></TR>
<TR>
<TD vAlign=top
height=633><BR>在VC的控件中有个Status bar可以在窗体状态栏中添加日期和时间。其实通过简单的代码,你就能创建一个有时钟显示的状态栏,并且还能设置时钟栏的显示方式。举例如下:<BR> 首先,用MFC AppWizard按默认方式创建一个单文档界面的应用程序框架。<BR> 然后,编写代码:<BR> 1)在String Table中添加New String,在此定义为ID_INDICATOR_CLOCK,将其Caption设为00:00:00(由于状态栏根据Caption确定时间窗格的缺省宽度,使用此值将为时间的显示预留空间)。注意,本步操作时有两种方式:<BR> 一种建立新的String Table,并添加String;另一种则在原有String Table中添加。当用后一种方式操作时,若完成后,时钟栏并不显示时间,则需要将此New String在String Table中对应的Value值加1(可在resource.h中修改)。<BR> 2)在MainFrm.cpp中indicators声明处添加ID_INDICATOR_CLOCK,代码如下:<BR> …<BR> static UINT indicators[] =<BR> {<BR> ID_SEPARATOR, <BR> ID_INDICATOR_CLOCK,<BR> ID_INDICATOR_CAPS,<BR> ID_INDICATOR_NUM,<BR> ID_INDICATOR_SCRL,<BR> };<BR> …<BR> 这一步中ID_INDICATOR_CLOCK的插入位置将影响时间窗格在状态栏中的显示位置。<BR> 3)安装定时器:在MainFrm.cpp中OnCreate函数处添加代码如下:<BR> int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)<BR> { ……<BR> SetTimer(1,1000,NULL);//安装定时器,并将其时间间隔设为1000毫秒<BR> return 0;<BR> }<BR> 4)编写时间处理函数:利用ClassWizard为CMainFrame类加入WM_TIMER的消<BR> 息处理函数OnTimer,并添加代码如下:<BR> void CMainFrame::OnTimer(UINT nIDEvent) <BR> {// TODO: Add your message handler code here and/or call default<BR> CTime time;<BR> time=CTime::GetCurrentTime();//得到当前时间<BR> CString s=time.Format(″%H:%M:%S″);//转换时间格式<BR> m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIn-<BR> dex(ID_INDICATOR_CLOCK),s); //显示时钟<BR> CFrameWnd::OnTimer(nIDEvent);}<BR> 5)销毁定时器:利用ClassWizard为CMainFrame类加入WM_CLOSE的消息处理<BR> 函数OnClose,并添加代码如下:<BR> void CMainFrame::OnClose() <BR> {// TODO: Add your message handler code here and/or call default<BR> KillTimer(1);//销毁定时器<BR> CFrameWnd::OnClose();}<BR> 最后,编译运行。<BR> 怎么样,你的时钟还不错吧。此外,你还可以通过调用CStatusBar的成员函数SetPaneStyle,SetPaneInfo来设置你的时钟栏的显示方式。例如:在MainFrm .cpp中OnCreate函数处添加如下代码,即可将你的时钟栏pop out:<BR> int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)<BR> {…<BR> m_wndStatusBar.SetPaneInfo(m_wndStatusBar.CommandTo-<BR> Index(ID_INDICATOR_CLOCK),ID_INDICATOR_CLOCK,SBPS_POPOUT,50); <BR> return 0;}<BR> 了解了如何添加时钟,添加别的窗格也是大同小异。这样,你就可以随心所欲地定制自己的状态栏了。
</TD></TR>
<TR>
<TD height=15></TD></TR></TBODY></TABLE></CENTER></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -