SmsManager/DLG_Corp_File.cpp

729 lines
18 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// DLG_Corp_File.cpp : implementation file
//
#include "stdafx.h"
#include "smsmanager.h"
#include "DLG_Corp_File.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// DLG_Corp_File dialog
#include "MainFrm.h"
#include "UserDlg.h"
#include "K_Agent.h"
#include "DLG_Corp_File_Add.h"
#include "io.h"
DLG_Corp_File::DLG_Corp_File(CWnd* pParent /*=NULL*/)
: CDialog(DLG_Corp_File::IDD, pParent)
{
//{{AFX_DATA_INIT(DLG_Corp_File)
m_strCorpName = _T("");
m_strCorpID = _T("");
//}}AFX_DATA_INIT
m_pDlg = (CDialog *)pParent;
m_lDlgType = 0;
memset( &m_FileReq , 0 , sizeof(m_FileReq) );
m_pFileData = NULL;
m_lUpAllSize = 0;
m_lUpUpSize = 0;
m_lUpFileID =0;
m_lDownAllSize = 0;
m_lDownUpSize = 0;
m_lDownFileID =0;
m_lFileType = 0;
}
void DLG_Corp_File::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(DLG_Corp_File)
DDX_Control(pDX, IDC_CORP_FILE_GDT, m_P_GDT);
DDX_Control(pDX, IDC_CORP_FILE_LIST, m_wndList);
DDX_Text(pDX, IDC_CORP_FILE_CORPNAME, m_strCorpName);
DDX_Text(pDX, IDC_CORP_FILE_CORPID, m_strCorpID);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(DLG_Corp_File, CDialog)
//{{AFX_MSG_MAP(DLG_Corp_File)
ON_BN_CLICKED(IDC_CORP_FILE_ADD, OnCorpFileAdd)
ON_NOTIFY(NM_DBLCLK, IDC_CORP_FILE_LIST, OnDblclkCorpFileList)
ON_BN_CLICKED(IDC_CORP_FILE_MODIFY, OnCorpFileModify)
ON_BN_CLICKED(IDC_CORP_FILE_DEL, OnCorpFileDel)
ON_BN_CLICKED(IDC_CORP_FILE_UPLOAD, OnCorpFileUpload)
ON_BN_CLICKED(IDC_CORP_FILE_DOWNLOAD, OnCorpFileDownload)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// DLG_Corp_File message handlers
BOOL DLG_Corp_File::OnInitDialog()
{
CDialog::OnInitDialog();
m_strCorpName = m_FileReq.ret.szCorpName;
m_strCorpID.Format( _T("%d") , m_FileReq.ret.lCorpID );
this->UpdateData(false);
//³õʼ»¯List
m_Image.Create(16,16,ILC_COLOR16|ILC_MASK,5,5);
m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP) );
m_wndList.SubClassWindow2();
m_wndList.SetHeadings(_T("ÐòºÅ,50; ÎļþÀàÐÍ,100; Ç©¶©Ê±¼ä,90; ÉÏ´«Ê±¼ä,90; ÉÏ´«Óû§,80;´óС(K),70;ÊÇ·ñÍêÕû,70;ԭʼÎļþÃû,200;±¸×¢,200;"));
m_wndList.SetGridLines(true);
m_wndList.SetImageList(&m_Image,LVSIL_SMALL);
for ( int i = 0 ; i< m_FileReq.lCount ; i++ )
{
SetListText(m_pFileData[i],-1); //-1ΪÌí¼Ó
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void DLG_Corp_File::SetParam(ANS_Corp_File File, ANS_Corp_FileData *pFileData,long lDlgType)
{
m_FileReq = File;
m_pFileData = pFileData;
m_lDlgType = lDlgType;
}
BOOL DLG_Corp_File::ProcessSocket(Socket_Head *pHead)
{
//²é¿´Óû§¼Ç¼
if (pHead->lFuncType == SMSFUNC_CORP_FILE)
{
ANS_Corp_File * pFile = (ANS_Corp_File *)pHead->pFrame;
ANS_Corp_FileData * pFileData = (ANS_Corp_FileData *)(pHead->pFrame+sizeof(ANS_Corp_File));
if ( pFile->lCount < 0 ) //ȨÏÞ²»×㣬·µ»Ø´íÎó
return true;
if ( pFile->ret.lReqType == 1 ) //Ìí¼Ó
{
if ( pFile->bOK && pFile->lCount>0 )
{
SetListText(*pFileData , -1 ); //-1ΪÌí¼Ó
}
}
if ( pFile->ret.lReqType == 2 ) //ÐÞ¸Ä
{
if ( pFile->bOK && pFile->lCount>0 )
{
SetListText(*pFileData , -2 ); //-1ΪÐÞ¸Ä×ÊÁÏ
}
}
if ( pFile->ret.lReqType == 3 ) //ɾ³ý
{
if ( pFile->bOK && pFile->lCount>0 )
{
long lItem=0;
long lCount=m_wndList.GetItemCount();
for ( int i=0 ; i<lCount ; i++ )
{
if ( m_wndList.GetItemData(i) == pFileData->lFileID )
{
lItem = i;
break;
}
}
if ( i>=lCount )
return true;
m_wndList.DeleteItem(lItem);
}
}
if ( pFile->ret.lReqType == 4 ) //ÉÏ´«
{
if ( pFile->bOK && pFile->lCount>0 )
{
if ( pFile->ret.lAllSize == pFile->ret.lUpSize ) //ÒÑÉÏ´«Íê±Ï
{
m_P_GDT.SetRange(0,0); //ÉÏ´«Íê³É£¬¹Ø±Õ¹ö¶¯Ìõ
m_UpFile.Close();
//¸üÐÂÐÅÏ¢
ANS_Corp_FileData FileData={0};
FileData.lFileID = pFile->ret.lFileID;
FileData.lFileSize=pFile->ret.lAllSize;
FileData.lUploadSize=pFile->ret.lUpSize;
_tcscpy(FileData.szFileName , pFile->ret.szCorpName );
::GetLocalTime(&FileData.tUploadTime);
SetListText(FileData , -3 ); //-3Ϊ¸üÐÂÉÏ´«×ÊÁÏ
MessageBox( _T("ÎļþÉÏ´«Íê³É£¡") , _T("ÐÅÏ¢") , MB_ICONINFORMATION );
EnableCtrl(true);
}
else
{
m_P_GDT.SetPos(pFile->ret.lUpSize);
UpFileNext();
}
}
}
if ( pFile->ret.lReqType == 5 ) //ÏÂÔØ
{
if ( pFile->bOK && pFile->lCount>0 )
{
#define MAXUPFILESIZE 32*1024 //ÿ´ÎÏÂÔØ32K
//if ( pFile->ret.lSize <= pFile->ret.lUpSize ) //ÊÕµ½µÚÒ»Ö¡
if (pFile->ret.lUpSize <= MAXUPFILESIZE) //ÊÕµ½µÄµÚÒ»Ö¡
{
m_P_GDT.SetRange32(0,pFile->ret.lAllSize);
BYTE cRarHead[] = { 0x52,0x61,0x72,0x21,0x1A,0x07,0x00,0xCF,0x90,0x73,0x00,0x00,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
long lRarHeadLen = sizeof(cRarHead);
if (memcmp((BYTE*)pFileData, (BYTE*)cRarHead, lRarHeadLen) == 0)
{
m_lFileType = 0; //rarÎļþ
}
else
{
m_lFileType = 1; //ÆäËüÎļþ
}
}
m_DownFile.Write((BYTE*)pFileData ,pFile->ret.lSize ); //дÎļþ
if ( pFile->ret.lAllSize == pFile->ret.lUpSize ) //ÏÂÔØÍê³É
{
m_P_GDT.SetRange(0,0); //ÉÏ´«Íê³É£¬¹Ø±Õ¹ö¶¯Ìõ
m_DownFile.Close();
EnableCtrl(true);
CString strTemp=m_strDownFileName;
strTemp.MakeUpper();
//·ÇѹËõÎļþ»òÔ­Îļþ¾ÍÊÇѹËõÎļþµÄ£¬Ö±½Ó½«Îļþ¿½µ½Ä¿µÄÎļþ¼Ð
if (m_lFileType==1 || strTemp.Find(_T(".RAR"))>0 || strTemp.Find(_T(".ZIP"))>0 ) //Ô­À´ÉÏ´«µÄ¾ÍÊÇѹËõÎļþ£¬ÎÞÐèÒªÔÙ½âѹ
{
if ( ! ::CopyFile(m_strDownRarFile,m_strDownFilePath +CString(_T("\\"))+ m_strDownFileName , false ) )
{
MessageBox(_T("¿½±´Îļþµ½Ä¿µÄÎļþ¼Ðʧ°Ü!") , _T("´íÎó") , MB_ICONWARNING );
return true;
}
}
else
{
//È¡µ±Ç°Îļþ¼Ð
TCHAR szPath[512]={0};
GetCurrentPath(szPath);
CString strRar;
strRar.Format( _T("%srar.exe") , szPath );
//½«Îļþ½âѹµ½Ä¿µÄÎļþ¼Ð
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
CString strCmd;
strCmd.Format( _T("%s x -y \"%s\" \"%s\"") , strRar,m_strDownRarFile,m_strDownFilePath +CString(_T("\\")));
BOOL b2=CreateProcess(NULL,strCmd.GetBuffer(),NULL,NULL,false,NULL,NULL,NULL,&si,&pi);
if ( b2 )
{
if ( WaitForSingleObject( pi.hProcess, 50000 ) !=WAIT_TIMEOUT) //µÈ´ý20Ãë
{
//Èç¹ûѹËõ³É¹¦£¬É¾³ýÔ­Îļþ
//::DeleteFile( strFileName );
}
}
Sleep(500); //ÑÓʱһ»á
}
long lRet = MessageBox(_T("ÎļþÏÂÔØÍê³É£¡ÊÇ·ñ³¢ÊÔÖ±½Ó´ò¿ªÎļþ£¿"), _T("ÌáÎÊ"), MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON1);
if (lRet == IDYES)
{
//ÏÂÔØÍê³É£¬´ò¿ªÎļþ
ShellExecute(NULL, _T("open"), m_strDownFileName, NULL, m_strDownFilePath, SW_SHOWNORMAL);
}
}
else
{
m_P_GDT.SetPos(pFile->ret.lUpSize);
}
}
}
return true;
}
return false;
}
void DLG_Corp_File::OnCorpFileAdd()
{
ANS_Corp_FileData FileData={0};
FileData.lCorpType = m_FileReq.ret.lCorpType;
FileData.lCorpID = m_FileReq.ret.lCorpID;
DLG_Corp_File_Add dlg(this);
dlg.SetParam( FileData , true );
if ( dlg.DoModal() == IDOK )
{
FileData = dlg.GetParam();
long lSize = sizeof(REQ_Corp_File) + sizeof(ANS_Corp_FileData);
BYTE * pData = new BYTE[lSize];memset(pData,0,lSize);
REQ_Corp_File * pPayRet = (REQ_Corp_File *)pData;
ANS_Corp_FileData * pPayDataRet = (ANS_Corp_FileData *)(pData+sizeof(REQ_Corp_File));
*pPayRet = m_FileReq.ret;
pPayRet->lReqType = 1; //Ìí¼Ó
*pPayDataRet = FileData;
SendFrame(SMSFUNC_CORP_FILE , pData , lSize );
}
}
void DLG_Corp_File::SetListText(ANS_Corp_FileData FileData, long lType)
{
CString str;
long lItem=0;
if ( lType==-1 )
{
lItem = m_wndList.GetItemCount();
str.Format( _T("%d") , lItem+1 );
m_wndList.InsertItem( lItem , str , 0 );
}
if ( lType==-2 || lType==-3)
{
long lCount=m_wndList.GetItemCount();
for ( int i=0 ; i<lCount ; i++ )
{
if ( m_wndList.GetItemData(i) == FileData.lFileID )
{
lItem = i;
break;
}
}
if ( i>=lCount )
return ;
}
int iTemp=1;
if ( lType == -1 || lType == -2 )
{
m_wndList.SetItemText( lItem , iTemp++ , FileData.szFileType);
str.Format( _T("%04d.%02d.%02d") , FileData.tFileTime.wYear,FileData.tFileTime.wMonth,FileData.tFileTime.wDay );
m_wndList.SetItemText( lItem , iTemp++ , str );
}
else
{
iTemp += 2 ;
}
if ( lType==-1 || lType == -3 )
{
str.Format( _T("%04d.%02d.%02d") , FileData.tUploadTime.wYear,FileData.tUploadTime.wMonth,FileData.tUploadTime.wDay );
m_wndList.SetItemText( lItem , iTemp++ , str );
m_wndList.SetItemText( lItem , iTemp++ , FileData.szUploadUser );
if ( FileData.lFileSize>0 )
str.Format( _T("%d") , FileData.lFileSize/1024 );
else
str = _T("0");
m_wndList.SetItemText( lItem , iTemp++ , str );
if ( FileData.lFileSize>0 )
str = FileData.lFileSize == FileData.lUploadSize ? _T(" ÊÇ") : _T(" ·ñ");
else
str = _T(" ·ñ");
m_wndList.SetItemText( lItem , iTemp++ , str );
m_wndList.SetItemText( lItem , iTemp++ , FileData.szFileName );
}
else
{
iTemp += 5;
}
if ( lType == -1 || lType == -2 )
{
m_wndList.SetItemText( lItem , iTemp++ , FileData.szBZ );
}
else
{
iTemp+=1;
}
m_wndList.SetItemData( lItem , FileData.lFileID );
}
long DLG_Corp_File::GetCurrentSelected()
{
POSITION pos = m_wndList.GetFirstSelectedItemPosition();
if ( pos )
{
return m_wndList.GetNextSelectedItem(pos);
}
return -1;
}
void DLG_Corp_File::OnDblclkCorpFileList(NMHDR* pNMHDR, LRESULT* pResult)
{
*pResult = 0;
OnCorpFileModify();
}
void DLG_Corp_File::OnCorpFileModify()
{
long lItem = GetCurrentSelected();
if ( lItem<0 )
return ;
ANS_Corp_FileData FileData={0};
FileData.lCorpType = m_FileReq.ret.lCorpType;
FileData.lCorpID = m_FileReq.ret.lCorpID;
FileData.lFileID = m_wndList.GetItemData(lItem);
m_wndList.GetItemText(lItem , 1 , FileData.szFileType , sizeof(FileData.szFileType)-2 );
m_wndList.GetItemText(lItem , 8 , FileData.szBZ , sizeof(FileData.szBZ)-2 );
CString str;
str = m_wndList.GetItemText(lItem , 2 );
COleDateTime t;
str.Replace( _T(".") , _T("-") );
BOOL btime = t.ParseDateTime(str,VAR_DATEVALUEONLY);
if ( t.GetStatus() == COleDateTime::valid )
{
t.GetAsSystemTime(FileData.tFileTime);
}
DLG_Corp_File_Add dlg(this);
dlg.SetParam( FileData , false );
if ( dlg.DoModal() == IDOK )
{
FileData = dlg.GetParam();
long lSize = sizeof(REQ_Corp_File) + sizeof(ANS_Corp_FileData);
BYTE * pData = new BYTE[lSize];memset(pData,0,lSize);
REQ_Corp_File * pPayRet = (REQ_Corp_File *)pData;
ANS_Corp_FileData * pPayDataRet = (ANS_Corp_FileData *)(pData+sizeof(REQ_Corp_File));
*pPayRet = m_FileReq.ret;
pPayRet->lReqType = 2; //ÐÞ¸Ä
*pPayDataRet = FileData;
SendFrame(SMSFUNC_CORP_FILE , pData , lSize );
}
}
void DLG_Corp_File::OnCorpFileDel()
{
long lItem = GetCurrentSelected();
if ( lItem<0 )
return ;
ANS_Corp_FileData FileData={0};
FileData.lCorpType = m_FileReq.ret.lCorpType;
FileData.lCorpID = m_FileReq.ret.lCorpID;
FileData.lFileID = m_wndList.GetItemData(lItem);
CString str,str2;
str = m_wndList.GetItemText(lItem , 1 );
str2.Format( _T("È·ÈÏҪɾ³ý(%s)ÎļþÂð£¿") , str );
int iRet = MessageBox(str2 , _T("ÌáÎÊ") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 );
if ( iRet != IDYES )
return ;
long lSize = sizeof(REQ_Corp_File) + sizeof(ANS_Corp_FileData);
BYTE * pData = new BYTE[lSize];memset(pData,0,lSize);
REQ_Corp_File * pPayRet = (REQ_Corp_File *)pData;
ANS_Corp_FileData * pPayDataRet = (ANS_Corp_FileData *)(pData+sizeof(REQ_Corp_File));
*pPayRet = m_FileReq.ret;
pPayRet->lReqType = 3; //ɾ³ý
*pPayDataRet = FileData;
SendFrame(SMSFUNC_CORP_FILE , pData , lSize );
}
void DLG_Corp_File::OnCorpFileUpload()
{
long lItem = GetCurrentSelected();
if ( lItem<0 )
return ;
m_lUpFileID = m_wndList.GetItemData(lItem);
CString str = m_wndList.GetItemText(lItem ,6 );
if ( str == _T(" ÊÇ") )
{
int iRet =MessageBox( _T("ËùÑ¡µÄÎļþÒÑÉÏ´«ÍêÕû£¬ÊÇ·ñÖØÐÂÉÏ´«£¿") , _T("ÌáÎÊ") , MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2);
if ( iRet != IDYES )
return ;
}
#define FILE_FILTER_TEXT \
TEXT("ËùÓÐÎļþ (*.*)\0*.*;\0\0")
TCHAR szFile[ 256 ];
TCHAR szFileB[ 256 ];
*szFileB = NULL;
_stprintf( szFile , _T("*.*") );
OPENFILENAME sOpen;
sOpen.lStructSize = sizeof( sOpen );
sOpen.hwndOwner = this->m_hWnd ;
sOpen.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY;
sOpen.lpstrFilter = FILE_FILTER_TEXT;
sOpen.lpstrDefExt = _T("*");
sOpen.lpstrCustomFilter = NULL;
sOpen.nMaxCustFilter = 0;
sOpen.lpstrFile = szFile;
sOpen.nMaxFile = sizeof( szFile );
sOpen.lpstrFileTitle = szFileB;
sOpen.nMaxFileTitle = sizeof( szFileB );
sOpen.lpstrInitialDir = NULL;
sOpen.lpstrTitle = _T("´ò¿ªÉÏ´«µÄÎļþ");
if ( ::GetOpenFileName( &sOpen ) )
{
CString strName = sOpen.lpstrFile;
CString strTemp = strName;
CString strName2= strName;
strTemp.MakeUpper();
if ( strTemp.Find(_T(".RAR"))>0 || strTemp.Find(_T(".ZIP"))>0 ) //ÒÑÊÇѹËõÎļþ£¬ÎÞÐèÔÙѹËõÉÏ´«
{
}
else
{
//ѹËõÎļþ
//È¡µ±Ç°Îļþ¼Ð
TCHAR szPath[512]={0};
GetCurrentPath(szPath);
CString strRar;
strRar.Format( _T("%srar.exe") , szPath );
_tcscat(szPath , _T("Temp\\") );
::CreateDirectory(szPath,NULL); //´´½¨Îļþ¼Ð
_tcscat(szPath , _T("UpLoad.rar") );
if ( _taccess(szPath, 0) != -1 )
{
if ( !::DeleteFile(szPath) )
{
MessageBox( _T("Îļþ³åÍ»£¬½¨ÒéÖØÆôºóÔÙÊÔ£¡") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
}
CString strRarName = szPath;
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
CString strCmd;
strCmd.Format( _T("%s a -ep1 \"%s\" \"%s\"") , strRar,strRarName,strName);
BOOL b2=CreateProcess(NULL,strCmd.GetBuffer(),NULL,NULL,false,NULL,NULL,NULL,&si,&pi);
if ( b2 )
{
if ( WaitForSingleObject( pi.hProcess, 50000 ) !=WAIT_TIMEOUT) //µÈ´ý20Ãë
{
//Èç¹ûѹËõ³É¹¦£¬É¾³ýÔ­Îļþ
//::DeleteFile( strFileName );
}
Sleep(500); //ÑÓʱһ»á
strName2 = strRarName;
}
else
{
strCmd.Format(_T("ѹËõÎļþʧ°Ü£¨%d£©£¬½«Ê¹ÓÃÔ­ÎļþÉÏ´«!\r\n%s"), ::GetLastError(),strCmd);
MessageBox(strCmd, _T("Ìáʾ"), MB_ICONINFORMATION);
}
}
//ȡԭʼÎļþÃû
m_strUpFileName = strName;
long lLen = strName.GetLength();
for ( int i=lLen-1 ; i>=0 ; i-- )
{
if ( strName.GetAt(i) == '\\' || strName.GetAt(i) == '/' )
{
m_strUpFileName = strName.Right(lLen-i-1);
break;
}
}
//¿ªÊ¼ÉÏ´«
if ( !m_UpFile.Open(strName2 , CFile::modeRead) )
{
MessageBox( _T("´ò¿ªÎļþ´íÎ󣬽¨ÒéÖØÆôºóÔÙÊÔ£¡") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
m_lUpAllSize=m_UpFile.GetLength();
if ( m_lUpAllSize>2*1024*1024 ) //ÊÇ·ñ´óÓÚ2M
{
m_UpFile.Close();
MessageBox( _T("²»ÄÜÉÏ´«³¬¹ý2MµÄÎļþ£¬ÇëÏÈËõСºóÔÙÉÏ´«!") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
m_lUpUpSize=0;
EnableCtrl(false);
m_P_GDT.SetRange32(0,m_lUpAllSize);
UpFileNext();
}
}
BOOL DLG_Corp_File::UpFileNext()
{
#define MAXUPFILESIZE 32*1024 //ÿ´ÎÉÏ´«32K
long lSize = sizeof(REQ_Corp_File) + MAXUPFILESIZE;
BYTE * pData = new BYTE[lSize];
memset(pData , 0 , lSize );
REQ_Corp_File * pFile = (REQ_Corp_File * )pData;
BYTE * pBuf = pData+sizeof(REQ_Corp_File);
pFile->lFileID = m_lUpFileID;
pFile->lReqType= 4; //ÉÏ´«
_tcscpy(pFile->szCorpName , m_strUpFileName );
pFile->lAllSize = m_lUpAllSize;
DWORD dwRead=0;
dwRead = m_UpFile.Read(pBuf , MAXUPFILESIZE );
if ( dwRead >0 )
{
m_lUpUpSize += dwRead;
pFile->lUpSize= m_lUpUpSize;
pFile->lSize = dwRead;
SendFrame(SMSFUNC_CORP_FILE , pData , lSize );
return true;
}
return false;
}
void DLG_Corp_File::OnCorpFileDownload()
{
long lItem = GetCurrentSelected();
if ( lItem<0 )
return ;
long lFileID = m_wndList.GetItemData(lItem);
CString str = m_wndList.GetItemText(lItem ,6 );
if ( str != _T(" ÊÇ") )
{
MessageBox( _T("ËùÑ¡µÄÎļþδÉÏ´«ÍêÕû£¬²»ÄÜÏÂÔØ!") , _T("´íÎó") , MB_ICONWARNING);
return ;
}
//ѹËõÎļþ
//È¡µ±Ç°Îļþ¼Ð
TCHAR szPath[512]={0};
GetCurrentPath(szPath);
_tcscat(szPath , _T("Temp\\") );
::CreateDirectory(szPath,NULL); //´´½¨Îļþ¼Ð
_tcscat(szPath , _T("DownLoad.rar") );
if ( _taccess(szPath, 0) != -1 )
{
if ( !::DeleteFile(szPath) )
{
MessageBox( _T("Îļþ³åÍ»£¬½¨ÒéÖØÆôºóÔÙÊÔ£¡") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
}
m_strDownRarFile = szPath;
BROWSEINFO BInfo={0};
BInfo.hwndOwner = this->GetSafeHwnd();
BInfo.pszDisplayName = szPath;
BInfo.pidlRoot=0;
BInfo.lpszTitle = _T("ÇëÑ¡ÔñÎļþ±£´æÂ·¾¶£º");
BInfo.ulFlags = BIF_RETURNONLYFSDIRS; //¹æ¶¨Ö»ÄÜÑ¡ÔñÎļþ¼Ð£¬ÆäËûÎÞЧ
LPCITEMIDLIST pid = SHBrowseForFolder(&BInfo);
if ( pid && SHGetPathFromIDList(pid,szPath) )
{
if ( !m_DownFile.Open(m_strDownRarFile , CFile::modeCreate|CFile::modeWrite) )
{
MessageBox( _T("´´½¨Îļþʧ°Ü£¬½¨ÒéÖØÆôºóÔÙÊÔ£¡") , _T("´íÎó") , MB_ICONWARNING );
return ;
}
EnableCtrl(false);
str = m_wndList.GetItemText(lItem,7); //ԭʼÎļþÃû
m_strDownFilePath = szPath;
//m_strDownFileName = m_strDownFilePath + _T("\\")+ str;
m_strDownFileName = str; //ԭʼÎļþÃû
m_lFileType = 0;// 0-rarÎļþ£¬1-ÆÕͨÎļþ
REQ_Corp_File * pFile = new REQ_Corp_File;
memset(pFile , 0 , sizeof(REQ_Corp_File));
pFile->lFileID = lFileID;
pFile->lReqType= 5; //ÏÂÔØ
_tcscpy(pFile->szCorpName , str );
SendFrame(SMSFUNC_CORP_FILE , (BYTE*)pFile , sizeof(REQ_Corp_File) );
}
}
void DLG_Corp_File::EnableCtrl(BOOL b)
{
GetDlgItem(IDC_CORP_FILE_LIST)->EnableWindow(b);
GetDlgItem(IDC_CORP_FILE_ADD)->EnableWindow(b);
GetDlgItem(IDC_CORP_FILE_MODIFY)->EnableWindow(b);
GetDlgItem(IDC_CORP_FILE_DEL)->EnableWindow(b);
GetDlgItem(IDC_CORP_FILE_UPLOAD)->EnableWindow(b);
GetDlgItem(IDC_CORP_FILE_DOWNLOAD)->EnableWindow(b);
}
void DLG_Corp_File::GetCurrentPath(TCHAR *pPath)
{
if ( m_lDlgType == 1 ) //´úÀíÉÌ
{
((CK_Agent*)m_pDlg)->m_pMainFrame->GetCurrentPath(pPath);
}
else
{
((CUserDlg*)m_pDlg)->m_pMainFrame->GetCurrentPath(pPath);
}
}
BOOL DLG_Corp_File::SendFrame(unsigned char lFuncType, unsigned char *pFrame, unsigned long lFrameLen)
{
if ( m_lDlgType == 1 ) //´úÀíÉÌ
{
return ((CK_Agent*)m_pDlg)->m_pMainFrame->SendFrame(lFuncType,pFrame,lFrameLen);
}
else
{
return ((CUserDlg*)m_pDlg)->m_pMainFrame->SendFrame(lFuncType,pFrame,lFrameLen);
}
}