下面是书中的步骤,我照做了,运行后能显示出窗格,只是窗格始终是空白的,不会显示时间。请帮忙看一下问题出在哪里。谢谢。本人初学,如果是很简单的错误,请不要见怪。第一步,数组中加ID:(带“<----”的行是需要手工添加的。)
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CLOCK, <----
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
}; 第二步:
找到并双击名为String Table的字符串资源,打开字符串资源编辑窗口。接着在编辑窗口内按Insert键以插入一个新的字符串,请指定字符串的ID为ID_INDICATOR_CLOCK,内容为00:00:00。第三步:
利用ClassWizard给CMainFrame类加入WM_TIMER的消息处理函数OnTimer和WM_CLOSE消息的处理函数OnClose,具体方法是在Class name栏中选择CMainFrame,在Object IDs栏中选择CMainFrame,在Messages栏中找到WM_TIMER和WM_CLOSE项,分别双击之然后按OK按钮退出ClassWizard。第四步,添加代码:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
…
SetTimer(1,1000,NULL); <----
return 0;
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CTime time; <----
time=CTime::GetCurrentTime(); <----
CString s=time.Format("%H:%M:%S"); <----
m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s); <---
CFrameWnd::OnTimer(nIDEvent);
}
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
KillTimer(1); <----
CFrameWnd::OnClose();
}
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CLOCK, <----
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
}; 第二步:
找到并双击名为String Table的字符串资源,打开字符串资源编辑窗口。接着在编辑窗口内按Insert键以插入一个新的字符串,请指定字符串的ID为ID_INDICATOR_CLOCK,内容为00:00:00。第三步:
利用ClassWizard给CMainFrame类加入WM_TIMER的消息处理函数OnTimer和WM_CLOSE消息的处理函数OnClose,具体方法是在Class name栏中选择CMainFrame,在Object IDs栏中选择CMainFrame,在Messages栏中找到WM_TIMER和WM_CLOSE项,分别双击之然后按OK按钮退出ClassWizard。第四步,添加代码:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
…
SetTimer(1,1000,NULL); <----
return 0;
}
void CMainFrame::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CTime time; <----
time=CTime::GetCurrentTime(); <----
CString s=time.Format("%H:%M:%S"); <----
m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s); <---
CFrameWnd::OnTimer(nIDEvent);
}
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
KillTimer(1); <----
CFrameWnd::OnClose();
}
解决方案 »
- 谁知道百度贴吧自动回贴地址啊 ?我想做一个自动回贴啊
- ogre + mfc
- 如何获得ListControl的列标题
- 刚学win32编程,请教RegisterClass()的作用
- 我想了解一些关于声音识别编程方面的技术
- winpcap中关于pcap_dispatch的一个问题!
- 关于CFileFind,看看我的4句代码有错吗?
- 如何在WINDOWS服务中创建新任务
- 字体与光标的问题!!!!!。
- MFC模态对话框导致调用父窗体卡死
- 一个问题: 用Install Vise制作安装程序的?有兴趣的进来看看!
- 如何模拟键盘和鼠标,将鼠标移动到一个窗口的控件上,然后点击左键,(非一个进程,且接受消息窗口不一定是当前焦点窗口.)
我啥都没改,显示正常。你重新编译一下,再看看。
真是怪了。我再试过几次。发现如果仅在向导生成的程序中加上上面的修改,就可以正常显示时间。而按照书上的步骤,使用向导之后再对工具栏、菜单等作些修改,再按上面贴出的步骤做一遍,就不会显示时间了。
算了,先不去想它了。
谢谢楼上的关注。