void CMainFrame::OnFileSaveAsLogfile() 
{
CString csFilter;
csFilter.LoadString(IDS_ECENTLOG);
csFilter += _T(" (*.evt)|*.evt||"); CFileDialog dlg(
FALSE, //显示打开文件对话框
_T("evt"), //缺省文件的扩展名
_T("log"), //缺省文件名
//OFN_READONLY| //复选只读复选框
OFN_PATHMUSTEXIST| //路径必须存在
OFN_OVERWRITEPROMPT| //覆盖前提示(保存时)
OFN_FILEMUSTEXIST| //文件必须存在
OFN_EXPLORER, //高级模式
// OFN_ALLOWMULTISELECT, //允许多选
(LPCTSTR)csFilter); //过滤字符串 if(dlg.DoModal()==IDOK)
{
CString csFile;
//取得全路径名
csFile = dlg.GetPathName();
SaveEvent(csFile);
}
}BOOL CMainFrame::SaveEvent(CString csFileName)
{
CFile file;
if(file.Open((LPCTSTR)csFileName, CFile::modeReadWrite|CFile::modeCreate))
{
file.Write(&m_nLogFileVersion, sizeof(long));
long nCount = m_EventList.GetCount();
file.Write(&nCount, sizeof(long));
POSITION pos = m_EventList.GetHeadPosition();
while(pos)
{
EVENTSTRU* pEventStru = (EVENTSTRU*)m_EventList.GetNext(pos);
file.Write(pEventStru, sizeof(EVENTSTRU));
}
file.Close();
return TRUE;
}
return FALSE;
}
小弟用上面代码存一个.evt文件 存好了打不开 不知道为什么 还请大侠指点一二 小弟的环境是 VS2010 win7 64位系统

解决方案 »

  1.   

    没有人知道??? 我存好了evt文件双击打开总说文件或目录已损坏 读不上来 跪求啊
      

  2.   

    evt是系统EventLog文件后缀吧,你自己写的文件,不符合系统日志文件格式,双击的时候会调用系统日志查看器打开,所以会发现格式不对,提示文件损坏
    你应该换一个后缀
      

  3.   


    可是就是要存成这个文件啊 这么要求的~~~ 原来再vc6下编的用在xp下可以读 现在升到vs2010 win7下就不行了