请教一个MFC程序运行出错的问题

void CMainFrame::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CTime time;
struct tm* osTime;
time = CTime::GetCurrentTime();
osTime = time.GetLocalTm(NULL);
m_strTime.Format("%2d:%2d:%2d:",osTime->tm_hour,osTime->tm_min,osTime->tm_sec);
m_wndStatusBar.SetPaneText(2, m_strTime);

CFrameWnd::OnTimer(nIDEvent);

}
这段代码是书上的用的是VC6,我用的是VS2013,编译的时候什么错误都没有,运行的时候就出问题了,DEBUG ASSERTION FAILED EXPRESSION:_ATL_CONDVAL,并且
就卡死在那了,只能结束VS2013的进程,如果把osTime = time.GetLocalTm(NULL);这句话去掉就不会出错,也不知道是什么原因,还请指教一下,先谢谢了。

2个回答

VC2013使用unicode,和VC6不同,需要相应的修改。

字符集的问题。
2013缺省是unicode字符了。

m_strTime.Format(L"%2d:%2d:%2d:",osTime->tm_hour,osTime->tm_min,osTime->tm_sec);

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!