原文请看《win32获取和显示电脑开机运行了多长时间》
在头文件中:
INT d,h,m,s,ms;
LPWSTR tip;
实现文件的构造函数:
tip=new TCHAR[1024];
其他地方:
void CGetTickCountDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
PAINTSTRUCT ps;
CDC *pDC=BeginPaint(&ps);
pDC->TextOutW(2,30,tip);
EndPaint(&ps);
CDialogEx::OnPaint();
}
}
void CGetTickCountDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
DWORD dwTime=GetTickCount();
d=dwTime/(24*60*60*1000);
dwTime%=24*60*60*1000;
//切割小时数
h = dwTime/3600/1000;
dwTime %=3600*1000;
//切割分钟数
m = dwTime /60/1000;
dwTime %=60*1000;
//切割秒数和毫秒数
s = dwTime/1000;
ms = dwTime%1000;
wsprintf(tip,_T("已开机:%d天%d小时%d分%d秒%d"),d,h,m,s,ms);
//wsprintf(tip.AllocSysString(),_T("已开机:%d天%d小时%d分%d秒%d"),d,h,m,s,ms);
Invalidate();
CDialogEx::OnTimer(nIDEvent);
}
int CGetTickCountDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialogEx::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
SetTimer(1,50,NULL);
return 0;
}
代码实现: