代码如下:
void CLogtoolDlg::OnButton()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
m_OpenPath = _T("C:");
CFileDialog dlg(TRUE, _T("txt"), NULL, OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT,
_T("ファイル(*.txt)|*.txt")); char szFileNameBuffer[10000] = {0}; // ファイル名を保存させる為のバッファ
dlg.m_ofn.lpstrFile = szFileNameBuffer; // バッファの割り当て
dlg.m_ofn.nMaxFile = 10000; // 最大文字数設定
dlg.m_ofn.nFilterIndex = m_iFileIdx;
dlg.m_ofn.lpstrInitialDir = m_OpenPath;
CFileStatus status;
CString acTime;
CString b;
CString c;
CFile::GetStatus(szFileNameBuffer,status);
//acTime = status.m_ctime.Format("Start: %Y-%m-%d %H:%M:%S:%M");
acTime.Format("Start: %d-%d-%d %d:%d:%d",status.m_ctime.GetYear(),status.m_ctime.GetMonth(),status.m_ctime.GetDay(),status.m_ctime.GetHour(),status.m_ctime.GetMinute(),status.m_ctime.GetSecond()); b = status.m_atime.Format("ATime: %Y-%m-%d %H:%M:%S:%M");
c = status.m_mtime.Format("MTime: %Y-%m-%d %H:%M:%S:%M");
if(dlg.DoModal() == IDOK)
{
CFile file(szFileNameBuffer,CFile::modeRead);
char* pBuf;
CString str;
DWORD dwFileLen;
dwFileLen=file.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
file.Close();
/* BY_HANDLE_FILE_INFORMATION fiBuf;
FILETIME ftBuf;
SYSTEMTIME stBuf;
char msg[40];
GetFileInformationByHandle(szFileNameBuffer, &fiBuf );
FileTimeToLocalFileTime( &fiBuf.ftLastWriteTime, &ftBuf );
FileTimeToSystemTime( &ftBuf, &stBuf );
wsprintf( msg, "Last write time is %d:%d %d/%d/%d",
stBuf.wHour,stBuf.wMinute,stBuf.wMonth,stBuf.wDay,stBuf.wYear );
::MessageBox( NULL, msg, NULL, MB_OK );*/
str.Format("%s",pBuf); GetDlgItem(IDC_EDIT1)->SetWindowText("2.000\r\n"+acTime+"\r\n"+b+"\r\n"+c+"\r\n\r\n\r\n"+str); delete []pBuf;
Invalidate();
}
}
运行exe程序,打开文件后结果如下:2.000
Start: 1970-3-5 7:59:35
ATime: 1970-03-25 19:31:05:31
MTime: 1970-03-08 08:48:44:48
sfsfsd sdf scxvxcvxvxvx
再次打开此文件结果如下:2.000
Start: 2033-9-14 4:26:15MTime: 2033-09-12 07:12:00:12
sfsfsd sdf scxvxcvxvxvx
请问,时间不对这个问题出在什么地方??系统时间不对??还是怎么个情况??
第二次打开该文件, ATime 为什么不显示??
还有一点,我想得到秒后面的 毫秒 ,在status.m_mtime.Format中可以吗??
void CLogtoolDlg::OnButton()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
m_OpenPath = _T("C:");
CFileDialog dlg(TRUE, _T("txt"), NULL, OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT,
_T("ファイル(*.txt)|*.txt")); char szFileNameBuffer[10000] = {0}; // ファイル名を保存させる為のバッファ
dlg.m_ofn.lpstrFile = szFileNameBuffer; // バッファの割り当て
dlg.m_ofn.nMaxFile = 10000; // 最大文字数設定
dlg.m_ofn.nFilterIndex = m_iFileIdx;
dlg.m_ofn.lpstrInitialDir = m_OpenPath;
CFileStatus status;
CString acTime;
CString b;
CString c;
CFile::GetStatus(szFileNameBuffer,status);
//acTime = status.m_ctime.Format("Start: %Y-%m-%d %H:%M:%S:%M");
acTime.Format("Start: %d-%d-%d %d:%d:%d",status.m_ctime.GetYear(),status.m_ctime.GetMonth(),status.m_ctime.GetDay(),status.m_ctime.GetHour(),status.m_ctime.GetMinute(),status.m_ctime.GetSecond()); b = status.m_atime.Format("ATime: %Y-%m-%d %H:%M:%S:%M");
c = status.m_mtime.Format("MTime: %Y-%m-%d %H:%M:%S:%M");
if(dlg.DoModal() == IDOK)
{
CFile file(szFileNameBuffer,CFile::modeRead);
char* pBuf;
CString str;
DWORD dwFileLen;
dwFileLen=file.GetLength();
pBuf=new char[dwFileLen+1];
pBuf[dwFileLen]=0;
file.Read(pBuf,dwFileLen);
file.Close();
/* BY_HANDLE_FILE_INFORMATION fiBuf;
FILETIME ftBuf;
SYSTEMTIME stBuf;
char msg[40];
GetFileInformationByHandle(szFileNameBuffer, &fiBuf );
FileTimeToLocalFileTime( &fiBuf.ftLastWriteTime, &ftBuf );
FileTimeToSystemTime( &ftBuf, &stBuf );
wsprintf( msg, "Last write time is %d:%d %d/%d/%d",
stBuf.wHour,stBuf.wMinute,stBuf.wMonth,stBuf.wDay,stBuf.wYear );
::MessageBox( NULL, msg, NULL, MB_OK );*/
str.Format("%s",pBuf); GetDlgItem(IDC_EDIT1)->SetWindowText("2.000\r\n"+acTime+"\r\n"+b+"\r\n"+c+"\r\n\r\n\r\n"+str); delete []pBuf;
Invalidate();
}
}
运行exe程序,打开文件后结果如下:2.000
Start: 1970-3-5 7:59:35
ATime: 1970-03-25 19:31:05:31
MTime: 1970-03-08 08:48:44:48
sfsfsd sdf scxvxcvxvxvx
再次打开此文件结果如下:2.000
Start: 2033-9-14 4:26:15MTime: 2033-09-12 07:12:00:12
sfsfsd sdf scxvxcvxvxvx
请问,时间不对这个问题出在什么地方??系统时间不对??还是怎么个情况??
第二次打开该文件, ATime 为什么不显示??
还有一点,我想得到秒后面的 毫秒 ,在status.m_mtime.Format中可以吗??
解决方案 »
- MFC 关于表格(table)控件的问题?
- ado显示数据小问题请教?
- 谁用过qq里的代理设置啊?
- 如何解决<winsock.h>和<winsock2.h>中定义冲突?
- 输入法窗口???????????
- 帮帮忙!!!!
- 使用directshow播放视频 无法正确获取鼠标位置
- VC2008 MFC 为水晶报表关联变量报错!求解决! 急急急! 谢谢!
- 关于vc与数据库的语句
- 我在程序中想加入一个继承自COleDataSource的新类,用ClassWizard可是在可选择的base class中没有COleDataSource,如何解决?(内空)
- vc控制Stereoscopic Player播放器问题
- 对话框多个背景图片每隔1秒显示一张时,程序出错。请高手解决。
CFileStatus status;
char* pFileName = "test.dat";
if( CFile::GetStatus( pFileName, status ) ) // static function
{
//m_*time is of type of CTime
status.m_ctime;//The date and time the file was created.
status.m_mtime;//The date and time the file was last modified.
status.m_atime;//The date and time the file was last accessed for reading.
status.m_size;//The logical size of the
}
第二次GetFileInformationByHandle(szFileNameBuffer, &fiBuf ); // 第一个参数要求是文件句柄,不是文件名
呵呵,看到日文本来讨厌不想回的,又看了代码好笑,给鬼子作东西别忘了留点后门。不过以你这水平,够呛。
还是谢谢你们的帮助,
我把得到文件时间属性那段移到 if(dlg.DoModal() == IDOK) 这里面来了,然后再前面加了一句 str1=file.GetFilePath();然后CFile::GetStatus(str1,status);结果好像没问题了。
其实我对于Windows一窍不通,本来只对C还算熟悉,C++都不算明白,特别是MFC编程,刚学不到2个月,甚至连句柄还没太弄明白,由于这项目需要用MFC做个东西,所以没办法,边做边学,现学现卖了……
不过幸好还有这个论坛,有你们这些热心的人帮我,就算再可笑,再低级的问题,我也不怕,只要不明白,我就贴出来问,并且向你们虚心学习,直到弄明白为止。
最后再真心的说一次谢谢你们!
日本人不会向我学习
我挣日本人的钱而已,
日本人的钱比较好挣,
不怕你们笑话,
就我这垃圾水平,
一个月还1w5左右RMB,
日本公司新人一般都这个工资水平