问题描述
- 请教一个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);这句话去掉就不会出错,也不知道是什么原因,还请指教一下,先谢谢了。
解决方案
VC2013使用unicode,和VC6不同,需要相应的修改。
解决方案二:
字符集的问题。
2013缺省是unicode字符了。
m_strTime.Format(L"%2d:%2d:%2d:",osTime->tm_hour,osTime->tm_min,osTime->tm_sec);
时间: 2024-09-04 05:18:11