// FileManage.cpp : implementation file // #include "stdafx.h" //#include "ZLSoftC.h" #include "YLGL.h" #include "FileManage.h" #include "MyMdi.H" #include "ModifyDinDan.h" #include "InputPsw.h" #include "ImportPhoto.h" #include "ImportPhoto.h" #include "NeroDlg.h" #include "ClientRequirement.h" #include "ChoosePhotoSkin2.h" #include "./helper/ffsco.h" #include "TakeMoney4.h" #include "SelFile.h" #include "FileManage2.h" #include "FileManage3.h" #include "Lzari.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif //#pragma comment(lib, "Shlwapi.lib") /////////////////////////////////////////////////////////////////////////////yes // FileManage IMPLEMENT_DYNCREATE(FileManage, MyFormView) FileManage::FileManage() : MyFormView(FileManage::IDD) { //{{AFX_DATA_INIT(FileManage) m_filter = _T(""); m_check1 = FALSE; m_check2 = FALSE; m_curposition = _T(""); m_curid=-1; //}}AFX_DATA_INIT } FileManage::~FileManage() { } void FileManage::DoDataExchange(CDataExchange* pDX) { MyFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(FileManage) DDX_Control(pDX, IDC_TREE1, m_mytree); DDX_Control(pDX, IDC_COMBO1, m_combo1); DDX_Control(pDX, IDC_LIST2, m_List1); DDX_Control(pDX, IDC_STATIC1, m_static1); DDX_CBString(pDX, IDC_COMBO1, m_filter); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(FileManage, MyFormView) //{{AFX_MSG_MAP(FileManage) ON_BN_CLICKED(IDC_BUTclose, OnBUTclose) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1) ON_WM_TIMER() ON_BN_CLICKED(IDC_BUTshowphoto, OnBUTshowphoto) ON_BN_CLICKED(IDC_BUTexportphoto, OnBUTexportphoto) ON_BN_CLICKED(IDC_BUTimportphoto, OnBUTimportphoto) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST2, OnItemchangedList2) ON_BN_CLICKED(IDC_BUTburncd, OnBUTFileManage) ON_NOTIFY(NM_DBLCLK, IDC_LIST2, OnDblclkList2) ON_NOTIFY(NM_CLICK, IDC_LIST2, OnClickList2) ON_BN_CLICKED(IDC_BUTburncd2, OnBUTburncd2) ON_BN_CLICKED(IDC_CHECK1, OnCheck1) ON_BN_CLICKED(IDC_CHECK2, OnCheck2) ON_NOTIFY(NM_CLICK, IDC_TREE1, OnClickTree1) ON_NOTIFY(TVN_SELCHANGED, IDC_TREE1, OnSelchangedTree1) ON_BN_CLICKED(IDC_BUTTON8, OnButton8) ON_BN_CLICKED(IDC_BUTTON4, OnButton4) ON_BN_CLICKED(IDC_BUTTON5, OnButton5) ON_BN_CLICKED(IDC_BUTTON6, OnButton6) //}}AFX_MSG_MAP ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST2, OnCustomdrawList) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // FileManage diagnostics #ifdef _DEBUG void FileManage::AssertValid() const { MyFormView::AssertValid(); } void FileManage::Dump(CDumpContext& dc) const { MyFormView::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // FileManage message handlers void FileManage::OnInitialUpdate() { MyFormView::OnInitialUpdate(); // SetDlgFont(this); // TODO: Add your specialized code here and/or call the base class CMyMdi Mdi; Mdi.SetSubView((CWnd*)GetParent(), (CWnd*)this); GetDlgItem(IDC_BUTburncd2)->EnableWindow(IsHasRights2new(49)); // Here we create the outbar control using the splitter as its parent // and setting its id to the first pane. CRect rc2; GetWindowRect(rc2); ::MoveWindow(m_hWnd,g_rc.left,g_rc.top,g_rc.Width(),g_rc.Height(),TRUE); EnumChildWindows(m_hWnd,(WNDENUMPROC)EnumChildProc,0); m_static1.SetFont (&g_titlefont); GetDlgItem(IDC_BUTTON5)->EnableWindow(IsHasRights2new(49)); int idarray[]={IDC_BUTTON4,IDC_BUTTON6,IDC_BUTTON5,IDC_BUTTON2,IDC_BUTclose}; int idcount=5; int btnwid; CRect prerc; for(int a=idcount-2; a>=0; a--) { GetDlgItem(idarray[a+1])->GetWindowRect (prerc); ScreenToClient(prerc); GetDlgItem(idarray[a])->GetWindowRect (rc2); ScreenToClient(rc2); btnwid=rc2.Width (); rc2.right =prerc.left ; rc2.left =rc2.right -btnwid; GetDlgItem(idarray[a])->MoveWindow (rc2); } HICON icon[2]; icon[0]=AfxGetApp()->LoadIcon (IDI_ICON12); icon[1]=AfxGetApp()->LoadIcon (IDI_ICON13); CImageList *m_imagelist=new CImageList; m_imagelist->Create(16,16,0,7,7); m_imagelist->SetBkColor (RGB(255,255,255)); for(int n=0;n<2;n++) { m_imagelist->Add(icon[n]); //把图标载入图像列表控件 } m_mytree.SetImageList(m_imagelist,TVSIL_NORMAL); m_binittree=0; GetData(); m_binittree=1; m_combo1.GetWindowRect (rc2); ScreenToClient(rc2); rc2.bottom +=200; m_combo1.MoveWindow (rc2); GetDlgItem(IDC_BUTclose)->GetWindowRect(rc2); SetComboHei(&m_combo1, rc2.Height ()); m_List1.SetHeadings("存放位置,100;文件名,100;存入,100;日期,150;阅读级别,100;备注,100" ); m_List1.LoadColumnInfo (405); for(int i=0; iSendMessage(WM_CLOSE); } void FileManage::OnSelchangeCombo1() { // TODO: Add your control notification handler code here SetTimer(1, 100, NULL); } void FileManage::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default KillTimer(nIDEvent); OnButton1(); } BOOL FileManage::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class try { if(pMsg->message==WM_KEYDOWN) { switch (pMsg->wParam) { case VK_RETURN: OnButton1(); return 1; case 0x43: // copy if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) ) { GetFocus()->SendMessage(WM_COPY); return TRUE; } break; case 0x56: //Ctrl + V: if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) ) { GetFocus()->SendMessage(WM_PASTE); return TRUE; } break; case 0x58: // cut if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) ) { GetFocus()->SendMessage(WM_CUT); return TRUE; } break; case 0x5A: //undo case 0x59: //redo if ( ( GetKeyState( VK_CONTROL ) & 0x80 ) ) { GetFocus()->SendMessage(WM_UNDO); return TRUE; } break; } } return MyFormView::PreTranslateMessage(pMsg); } catch(...) { } } extern int CALLBACK BrowseProc(HWND hwnd, UINT msg, LPARAM lParam, LPARAM lpData); /*{ switch(msg) { case BFFM_INITIALIZED: SendMessage(hwnd, BFFM_SETSELECTION, TRUE, NULL); break; case BFFM_SELCHANGED: { char szFileName[MAX_PATH]; LPITEMIDLIST pidlCurrent = (LPITEMIDLIST)lParam; SHGetPathFromIDList(pidlCurrent, szFileName); SendMessage(hwnd, BFFM_SETSTATUSTEXT, 0, (LPARAM)szFileName); } break; } return 0; }*/ void FileManage::GetSavePath(CString &path) { char lpszDisplayName[MAX_PATH], szFileName[MAX_PATH]; LPITEMIDLIST pidlDesktop, pidlCurrent; if(SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidlDesktop) == NOERROR) { BROWSEINFO bi; bi.hwndOwner = this->m_hWnd; bi.pidlRoot = pidlDesktop; bi.pszDisplayName = lpszDisplayName; bi.lpszTitle = "\n文档保存的目录:"; bi.ulFlags = BIF_STATUSTEXT&BIF_RETURNONLYFSDIRS ; bi.lpfn = BrowseProc; bi.lParam = 0; bi.iImage = 0; pidlCurrent = SHBrowseForFolder(&bi); SHGetPathFromIDList(pidlCurrent, szFileName); path = szFileName; } } int FileManage::FindArray(CStringArray *pArray, CString Str) { for(int i=0; iGetSize (); i++) { if(pArray->ElementAt (i)==Str) return i; } return -1; } void FileManage::GetNo(CString str, CStringArray &array) { if(!str.IsEmpty ()) { int pos=str.Find (","); while(pos!=-1) { if(FindArray(&array, str.Left (pos))==-1) array.Add (str.Left (pos)); str=str.Right (str.GetLength ()-pos-1); pos=str.Find (","); } if(FindArray(&array, str)==-1) array.Add(str); } } CString FileManage::GetSelName(CString name, CArray&spnamearray) { CString ret; name=","+name+","; CString str; for(int i=0; iEnableWindow(1); } else if(waiter4==g_user.name && IsHasRights2new(7) ) { GetDlgItem(IDC_BUTimportphoto)->EnableWindow(1); } else GetDlgItem(IDC_BUTimportphoto)->EnableWindow(0); *pResult = 0; } void FileManage::OnBUTFileManage() { // TODO: Add your control notification handler code here #ifdef ZLCX_VERSION //return; #endif POSITION pos; pos=m_List1.GetFirstSelectedItemPosition(); if(pos==NULL) { return; } int iItem=m_List1.GetNextSelectedItem(pos); CString id=m_List1.GetItemText (iItem, 0); TakeMoney4 dlg; dlg.m_mode =5; dlg.m_id =id; dlg.m_name1 =m_List1.GetItemText (iItem, 1); dlg.m_name2 =m_List1.GetItemText (iItem, 2); if(dlg.DoModal ()!=IDOK)return; } void FileManage::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here OnButton2(); *pResult = 0; } void FileManage::OnCustomdrawList ( NMHDR* pNMHDR, LRESULT* pResult ) { NMLVCUSTOMDRAW* pLVCD = reinterpret_cast( pNMHDR ); // Take the default processing unless we set this to something else below. *pResult = 0; // First thing - check the draw stage. If it's the control's prepaint // stage, then tell Windows we want messages for every item. if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage ) { *pResult = CDRF_NOTIFYITEMDRAW; } else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage ) { // This is the prepaint stage for an item. Here's where we set the // item's text color. Our return value will tell Windows to draw the // item itself, but it will use the new color we set here. // We'll cycle the colors through red, green, and light blue. /* if(m_List1.m_arLabels.ElementAt (pLVCD->nmcd.dwItemSpec).ElementAt (8)!="0") pLVCD->clrText = RGB(220,0,0); else pLVCD->clrText = RGB(20,133,20);*/ if(pLVCD->nmcd.dwItemSpec%2) pLVCD->clrTextBk = g_gridcol1; else pLVCD->clrTextBk = g_gridcol2; // Store the color back in the NMLVCUSTOMDRAW struct. // Tell Windows to paint the control itself. *pResult = CDRF_DODEFAULT; } } void FileManage::OnClickList2(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here POSITION pos; pos=m_List1.GetFirstSelectedItemPosition(); if(pos==NULL)return; int iItem=m_List1.GetNextSelectedItem(pos); if(g_user.account=="admin") { GetDlgItem(IDC_BUTTON2)->EnableWindow(1); } else if(g_user.level!="") { if(atoi(g_user.level.Left(1))>=atoi(m_List1.GetItemText (iItem, 4)) ) GetDlgItem(IDC_BUTTON2)->EnableWindow(1); else GetDlgItem(IDC_BUTTON2)->EnableWindow(0); } else GetDlgItem(IDC_BUTTON2)->EnableWindow(0); if(IsHasRights2new(49) || g_user.name==m_List1.GetItemText (iItem, 2)) { GetDlgItem(IDC_BUTTON6)->EnableWindow(1); } else { GetDlgItem(IDC_BUTTON6)->EnableWindow(0); } *pResult = 0; } void FileManage::HidePrice() { } void FileManage::OnBUTburncd2() { // TODO: Add your control notification handler code here ListToXLS(&m_List1, "c:\\客人欠款.xls", 0); } //ZLCX void FileManage::OnCheck1() { // TODO: Add your control notification handler code here } void FileManage::OnCheck2() { // TODO: Add your control notification handler code here } void FileManage::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here OnSelchangedTree1( pNMHDR, pResult) ; *pResult = 0; } CString FileManage::GetName(CString id) { for(int i=0; iProcessChatMessageRequest2(1); if(g_bSendOK==0)return; DataToArray(&m_List2array); CalPostion(); if( m_curposition!="") FillGrid2(); else FillGrid(); return; } m_curid=-1; m_curposition=""; CString str; str.Format ("当前柜:%s", m_curposition); SetDlgItemText(IDC_STATIC16, str); g_sendhead.code[0]=232; g_sendhead.code[1]=233; g_sendhead.tabcount=2; g_pMainWnd->ProcessChatMessageRequest2(1); if(g_bSendOK==0)return; DataToArray(&m_List1array,&m_List2array);CalPostion(); m_mytree.DeleteAllItems(); for(int i=0; iAdd(oldstr); pArray->Add(curid); } } } CString FileManage::GetCurSelID(CString &path) { HTREEITEM hSelectedItem = m_mytree.GetSelectedItem(); if(hSelectedItem==NULL) { return ""; } CString m_strSelect; while(hSelectedItem) { m_strSelect="\\"+m_mytree.GetItemText(hSelectedItem)+m_strSelect; hSelectedItem=m_mytree.GetParentItem(hSelectedItem); } for(int i=0; iGetSize()==0)return; if(patharray->GetSize()==1) { CString str=patharray->ElementAt(0); CString ext; if(str.Find(".")!=-1) ext=str.Right(str.GetLength()-str.ReverseFind('.')-1); ext.MakeLower (); if(0)//ext=="jpg" || ext=="jpeg" || ext=="png" || ext=="gif"|| ext=="bmp") { Image *m_pImg=NULL; ::LoadImageFromBuf (&m_pImg, str); if(m_pImg==NULL) { AfxMessageBox("无效图片文件!");return; } // ShowPhoto dlg; // dlg.m_pImg=m_pImg; // dlg.DoModal(); delete m_pImg; } else { ShellExecute(NULL, _T("open"), str, NULL, NULL, SW_SHOWMAXIMIZED); } return; } SelFile dlg; dlg.m_pArray=patharray; dlg.DoModal(); } void FileManage::OnButton2() // 查看文件; { POSITION pos; pos=m_List1.GetFirstSelectedItemPosition(); if(pos==NULL) { AfxMessageBox("请先选中您要查看的文件!", MB_ICONINFORMATION); return; } int iItem=m_List1.GetNextSelectedItem(pos); if(g_user.account=="admin") { } else if(g_user.level!="") { if(atoi(g_user.level.Left(1))ProcessChatMessageRequest2((BYTE*)no, 20); g_nSendCode=0; if(g_bSendOK==0) { return; } DWORD nReaded=0; int filepos=0; DeleteDirectory(g_mainpath+"\\公告"); ::CreateDirectory(g_mainpath+"\\公告", NULL); CStringArray patharraytemp; if(1) { BYTE *lpszOut = NULL; int nOutSize = 0; LZARI Lzari; #ifdef VC60 Lzari.UnCompress(g_pData,g_nLeng,lpszOut,nOutSize); #else Lzari.UnCompress(g_pData, g_nLeng, (const BYTE*&)lpszOut, nOutSize); #endif CMemFile memfile; // memfile.Attach (lpszOut,nOutSize); delete []g_pData; g_pData=new BYTE[nOutSize]; memcpy(g_pData, lpszOut,nOutSize); Lzari.Release(); g_nLeng=nOutSize; } while(nReaded=patharray.GetSize())break; CString path=patharray.ElementAt(filepos);filepos++; path=g_mainpath+"\\公告"+path.Right(path.GetLength()-path.ReverseFind('\\')); DWORD leng; memcpy(&leng, g_pData+nReaded, sizeof(DWORD));nReaded+=sizeof(DWORD); CFile fp; fp.Open(path, CFile::modeWrite|CFile::modeCreate); fp.Write(g_pData+nReaded, leng);nReaded+=leng; fp.Close(); patharraytemp.Add(path); } patharray.RemoveAll(); patharray.Copy(patharraytemp); ShowFile(&patharray); return; } } void FileManage::OnButton8() // 管理按钮; { // TODO: Add your control notification handler code here FileManage2 dlg; dlg.DoModal(); m_binittree=0; GetData(); m_binittree=1; } void FileManage::OnButton4() //存入文件; { // TODO: Add your control notification handler code here if(m_curid==-1) { AfxMessageBox("未选择当前柜!", MB_ICONINFORMATION);return; } FileManage3 dlg; UpdateData(); dlg.m_curposition=m_curposition; // Jeff.当前文件柜位置; if(IDOK!=dlg.DoModal())return; CString m_path=dlg.m_path; // Jeff.文件名路径; CString level=dlg.level; // 阅读级别; CString m_bz=dlg.m_bz; // 备注; CString filename,curfile,filename2; BYTE *pData=new BYTE[1024*200*5+4000]; DWORD length=0; DWORD fileleng; int filenum=0; // Jeff.选择的文件数量; int pos=m_path.Find(";"); while(pos!=-1 || m_path!="") { if(filenum>=5) { AfxMessageBox("注意:文件太多,仅保存了前5个文件!", MB_ICONINFORMATION); break; } if(pos!=-1) curfile=m_path.Left(pos); else { curfile=m_path; m_path=""; } CFile fp; if(fp.Open(curfile, CFile::modeRead)) { filename2=curfile.Right(curfile.GetLength()-curfile.ReverseFind('\\')-1); filename+=filename2; filename+=";"; fileleng=fp.GetLength(); if(fileleng>1024*200) { CString ext; if(curfile.Find(".")!=-1) ext=curfile.Right(curfile.GetLength()-curfile.ReverseFind('.')-1); ext.MakeLower(); if(!(ext=="jpg" || ext=="jpeg" || ext=="png"|| ext=="bmp")) { AfxMessageBox("文件太大,请上传小于200K的文件!"); fp.Close(); delete []pData; return; } else { fp.Close(); Image *m_pImg=NULL; ::LoadImageFromBuf(&m_pImg, curfile); if(m_pImg==NULL) { AfxMessageBox("无效图片!"); delete []pData; return; } Image *simg2=NULL; CRect rc2(0,0,1600,1600); RectFitDes(m_pImg->GetWidth(), m_pImg->GetHeight(), rc2); simg2=m_pImg->GetThumbnailImage(rc2.Width(), rc2.Height(), NULL, NULL); Graphics graphic2(simg2);//防止GetThumbnailImage影响质量 graphic2.Clear(Color(255,255,255,255)); graphic2.DrawImage(m_pImg, 0,0,simg2->GetWidth(), simg2->GetHeight() ); if(m_pImg)delete m_pImg; m_pImg=NULL; CString path=g_mainpath+"\\1."+ext; ::SaveImageToFile2(simg2, path, 40); delete simg2; if(!fp.Open(path, CFile::modeRead)) { AfxMessageBox("文件打开失败!"); delete []pData; return; } fileleng=fp.GetLength(); } } // 1.先存入文件的大小,sizeof(DWROD) fileleng; memcpy(pData+length, &fileleng, sizeof(fileleng)); length+=sizeof(fileleng); // 2.再读入文件的数据; fp.Read(pData+length, fileleng); length+=fileleng; fp.Close(); filenum++; } else { AfxMessageBox("附件未找到!", MB_ICONINFORMATION); } if(pos!=-1) m_path=m_path.Right(m_path.GetLength()-pos-1); pos=m_path.Find(";"); } filename.TrimRight(";"); CString sql; sql.Format("insert into [filemanage2]([parent],[filename],[clerk],[date],[level],[bz],[position]) values('%d','%s','%s','%s','%s','%s','%s')", m_curid, filename, g_user.name, "msgtimestamp2", level, m_bz, m_curposition); /* g_sendhead.bsql=1; g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return; AfxMessageBox("保存成功!", MB_ICONINFORMATION);*/ // 3.写入SQL语句的长度;(当做另一文件来操作) fileleng=sql.GetLength(); memcpy(pData+length, &fileleng, sizeof(fileleng)); // 4.写入SQL语句; DWORD nSqlPos=length; length+=sizeof(fileleng); memcpy(pData+length, sql.GetBuffer(0), fileleng); sql.ReleaseBuffer(); // 5.写入SQL语句在数据内的位置; length+=fileleng; memcpy(pData+length, &nSqlPos, sizeof(nSqlPos)); length+=sizeof(nSqlPos); g_nSendCode=42; g_pMainWnd->ProcessChatMessageRequest2(pData, length); g_nSendCode=0; delete []pData; if(g_bSendOK==0)return; AfxMessageBox("存入成功!", MB_ICONINFORMATION); #if 1 CString strLog = _T(""); strLog.Format(_T("存入操作:位置:%s; 文件名:%s; 级别:%s"), m_curposition, filename, level); // 2015.03.08 添加删除日志; WriteLog(strLog); #endif GetData(); } void FileManage::OnButton5() // 删除按钮; { if(IsHasRights2new(49)==0)return; // TODO: Add your control notification handler code here POSITION pos; pos=m_List1.GetFirstSelectedItemPosition(); if(pos==NULL) { AfxMessageBox("请先选中您要删除的文件!", MB_ICONINFORMATION); return; } if(AfxMessageBox("确认删除此文件吗?", MB_YESNO|MB_ICONINFORMATION)!=IDYES)return; int iItem=m_List1.GetNextSelectedItem(pos); CString date=m_List1.GetItemText (iItem, 3); CString position=m_List1.GetItemText (iItem, 0); CString sql; sql.Format("delete from filemanage2 where [date]='%s' ", date); g_sendhead.bsql=1; g_pMainWnd->ProcessChatMessageRequest2(sql);if(g_bSendOK==0)return; #if 1 CString strLog = _T(""); strLog.Format(_T("删除操作:位置:%s; 文件名:%s;存入人:%s; 存入日期:%s; 级别:%s"), m_List1.GetItemText(iItem,0), m_List1.GetItemText(iItem,1), m_List1.GetItemText(iItem,2), m_List1.GetItemText(iItem,3), m_List1.GetItemText(iItem,4)); // 2015.03.08 添加删除日志; WriteLog(strLog); #endif GetData(); } void FileManage::GetData2() { g_sendhead.bsql=0; g_sendhead.code[0]=232; g_sendhead.tabcount=1; g_pMainWnd->ProcessChatMessageRequest2(1); if(g_bSendOK==0)return; DataToArray(&m_List1array); m_curid=-1; m_curposition=""; CString str; str.Format ("当前柜:%s", m_curposition); SetDlgItemText(IDC_STATIC16, str); m_mytree.DeleteAllItems(); for(int i=0; iitemNew.hItem); UpdateData(); HTREEITEM hSelectedItem = m_mytree.GetSelectedItem(); if(hSelectedItem==NULL) { m_curposition=""; CString str; str.Format ("当前柜:%s", m_curposition); SetDlgItemText(IDC_STATIC16, str); m_curid=-1; return; } m_curid=atoi(GetCurSelID(m_curposition)); CString str; str.Format ("当前柜:%s", m_curposition); SetDlgItemText(IDC_STATIC16, str); FillGrid2(); *pResult = 0; } void FileManage::FillGrid2() { m_List1.DeleteAllItems2 (); int ii=0; m_List1.m_arLabels.SetSize( m_List2array.GetSize (), 1 ); int count=0; CString filter=m_curposition+"\\"; CString str; { for(ii=0; ii=5) { AfxMessageBox("注意:文件太多,仅保存了前5个文件!", MB_ICONINFORMATION); break; } if(pos!=-1) curfile=m_path.Left(pos); else { curfile=m_path; m_path=""; } CFile fp; if(fp.Open(curfile, CFile::modeRead)) { filename2=curfile.Right(curfile.GetLength()-curfile.ReverseFind('\\')-1); filename+=filename2; filename+=";"; fileleng=fp.GetLength(); if(fileleng>1024*200) { CString ext; if(curfile.Find(".")!=-1) ext=curfile.Right(curfile.GetLength()-curfile.ReverseFind('.')-1); ext.MakeLower (); if(!(ext=="jpg" || ext=="jpeg" || ext=="png"|| ext=="bmp")) { AfxMessageBox("文件太大,请上传小于200K的文件!"); fp.Close(); delete []pData; return; } else { fp.Close(); Image *m_pImg=NULL; ::LoadImageFromBuf(&m_pImg, curfile); if(m_pImg==NULL) { AfxMessageBox("无效图片!"); delete []pData; return; } Image *simg2=NULL; CRect rc2(0,0,1600,1600); RectFitDes(m_pImg->GetWidth(), m_pImg->GetHeight(), rc2); simg2=m_pImg->GetThumbnailImage(rc2.Width (), rc2.Height (), NULL, NULL); Graphics graphic2(simg2);//防止GetThumbnailImage影响质量 graphic2.Clear(Color(255,255,255,255)); graphic2.DrawImage(m_pImg, 0,0,simg2->GetWidth(), simg2->GetHeight() ); if(m_pImg)delete m_pImg;m_pImg=NULL; CString path=g_mainpath+"\\1."+ext; ::SaveImageToFile2 (simg2, path, 40); delete simg2; if(!fp.Open(path, CFile::modeRead)) { AfxMessageBox("文件打开失败!"); delete []pData; return; } fileleng=fp.GetLength(); } } memcpy(pData+length, &fileleng, sizeof(fileleng));length+=sizeof(fileleng); fp.Read(pData+length, fileleng);length+=fileleng; fp.Close(); filenum++; } else { AfxMessageBox("附件未找到!", MB_ICONINFORMATION); } if(pos!=-1) m_path=m_path.Right(m_path.GetLength()-pos-1); pos=m_path.Find(";"); } filename.TrimRight(";"); CString sql; if(filename!="") sql.Format("update [filemanage2] set [filename]='%s',[clerk]='%s',[date]='%s',[level]='%s',[bz]='%s' where [date]='%s' ", filename, g_user.name, "msgtimestamp2", level, m_bz, date); else sql.Format("update [filemanage2] set [clerk]='%s',[date]='%s',[level]='%s',[bz]='%s' where [date]='%s' ", g_user.name, "msgtimestamp2", level, m_bz, date); fileleng=sql.GetLength(); memcpy(pData+length, &fileleng, sizeof(fileleng)); DWORD nSqlPos=length; length+=sizeof(fileleng); memcpy(pData+length, sql.GetBuffer(0), fileleng); sql.ReleaseBuffer(); length+=fileleng; memcpy(pData+length, &nSqlPos, sizeof(nSqlPos)); length+=sizeof(nSqlPos); g_nSendCode=44; g_pMainWnd->ProcessChatMessageRequest2(pData, length); g_nSendCode=0; delete []pData; if(g_bSendOK==0)return; AfxMessageBox("修改成功!", MB_ICONINFORMATION); #if 1 CString strLog = _T(""); strLog.Format(_T("修改操作:位置:%s; 文件名:%s;存入人:%s; 存入日期:%s; 级别:%s 修改为:位置:%s; 文件名:%s;存入人:%s; 级别:%s"), m_List1.GetItemText(iItem,0), m_List1.GetItemText(iItem,1), m_List1.GetItemText(iItem,2), m_List1.GetItemText(iItem,3), m_List1.GetItemText(iItem,4), dlg.m_curposition, filename==_T("")?m_List1.GetItemText(iItem,1):filename, g_user.name, dlg.level); // 2015.03.08 添加删除日志; WriteLog(strLog); #endif GetData(); }