要求:建立一个工程ShowTime,并在其中建立一个显示系统时间的主菜单。其下拉菜单包括在客户区显示、在状态栏显示、停止显示菜单项和分割线。程序运行时,在客户区中无显示,状态栏中显示“00:00:00”。单击在客户区显示菜单项,当前系统时间显示在客户区,单击在状态栏显示菜单项,系统时间显示在状态栏。单击停止显示菜单项,界面回复到初始状态。
步骤:
1、建立工程ShowTime,在工作区单击ResourceView,打开MENU,双击IDR_MAINFRAME,添加菜单项和题目要求的子菜单,同时添加分割线,并添加ID号。
2、单击VIEW->建立类向导,类名选择CShowViewDoc,选择子菜单的ID号,添加COMMAND函数。
3、打开CLASSView,右键ShowTimeView,添加windows message handle,添加定时器,WM-TIMER。并且编辑代码。(ShowTimeView.cpp)
void CShowTimeView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CDC* pDC=GetDC();
CShowTimeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CTime time;
CString s;
CStatusBar* pStatus;
pStatus=(CStatusBar*)AfxGetApp()->m_pMainWnd->GetDescendantWindow(ID_VIEW_STATUS_BAR);
time=CTime::GetCurrentTime();
s=time.Format("%H:%M:%S");
if(pDoc->stop==1)
{
KillTimer(1);
pStatus->SetPaneText(1,"00:00:00");
}
if(pDoc->kstatus==1)
{
pDC->TextOut(100,100,s);
}
if(pDoc->zstatus==1)
{
pStatus->SetPaneText(1,s);
}
CView::OnTimer(nIDEvent);
}
4、打开ShowTimeDoc.cpp,COMMAND函数下编辑代码。
void CShowTimeDoc::OnKehu() //自定义的COMMAND函数名
{
// TODO: Add your command handler code here
kstatus=1;
stop=0;
UpdateAllViews(NULL);
}
void CShowTimeDoc::OnZhuangtai()
{
// TODO: Add your command handler code here
zstatus=1;
stop=0;
UpdateAllViews(NULL);
}
void CShowTimeDoc::OnStop()
{
// TODO: Add your command handler code here
kstatus=0;
zstatus=0;
stop=1;
UpdateAllViews(NULL);
}
5、打开ShowTimeDoc.h,添加成员变量。
public:
int stop;
int zstatus;
int kstatus;
virtual ~CShowTimeDoc();
6、在CLASSVIEW中打开OnDraw函数,添加显示代码。
CShowTimeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
SetTimer(1,1000,NULL);
最后编译运行能够实现题目要求。