679
社区成员
发帖
与我相关
我的任务
分享
void CToolsDlg::OnBnClickedButton4()
{
// TODO: Add your control notification handler code here
CString strSrc, strDest;
GetDlgItem( IDC_EDIT2 )->GetWindowText( strSrc );
GetDlgItem( IDC_EDIT3 )->GetWindowText( strDest );
DWORD dwTime1 = GetTickCount();
int nEachSize = 1024 * 8;
HANDLE hSrc = CreateFile( strSrc, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if ( hSrc == INVALID_HANDLE_VALUE )
{
ASSERT( FALSE ); return;
}
HANDLE hDest = CreateFile( strDest, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL );
if ( hDest == INVALID_HANDLE_VALUE )
{
ASSERT(FALSE); return;
}
DWORD dwFileSize = GetFileSize( hSrc,NULL );
BYTE* pBuf = NULL;
pBuf = new BYTE[nEachSize];
if ( pBuf == NULL )
{
ASSERT( FALSE ); return;
}
int nCopyCount = dwFileSize / nEachSize;
DWORD dwReaded;
for ( int i=0;i<nCopyCount;i++ )
{
if(!ReadFile( hSrc, pBuf, nEachSize, &dwReaded, NULL ))
{
ASSERT(FALSE); return;
}
if ( !WriteFile( hDest, pBuf, nEachSize, &dwReaded, NULL ))
{
ASSERT(FALSE);return;
}
}
int nLeftByte = dwFileSize - nCopyCount*nEachSize;
if(!ReadFile( hSrc, pBuf, nLeftByte, &dwReaded, NULL ))
{
ASSERT(FALSE); return;
}
if ( !WriteFile( hDest, pBuf, nLeftByte, &dwReaded, NULL ))
{
ASSERT(FALSE);return;
}
CloseHandle( hSrc );
CloseHandle( hDest );
DWORD dwTime2 = GetTickCount();
DWORD dwCost = dwTime2 - dwTime1;
DWORD dwSec = dwCost / 1000;
CString strTimeCost;
strTimeCost.Format(_T("%d"), dwSec );
GetDlgItem( IDC_ShowTime )->SetWindowText(strTimeCost);
UpdateData(FALSE);
}