// Global.cpp : Ӧ�ó����ȫ�ֱ���������Դ�ļ� // // ���������� 2014��9��25��, 09:55 #include "StdAfx.h" #include "Global.h" #include <io.h> // _access_sͷ�ļ�; #include <stdio.h> #include "afxcoll.h" #include "afxtempl.h" #include "atlconv.h" #include "..\\lzari.h" #include "..\helper\ffsco.h" #include <WinSock2.h> #include "..\BasicExcelVC6.h" using namespace YExcel; #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif //#include <WS2tcpip.h> ////////////////////////////////////////////////////////////////////////// static const int BEGIN_YEAR = 1901; static const int NUMBER_YEAR = 199; static const unsigned int LUNAR_YEARS[199] = { 0x04AE53, 0x0A5748, 0x5526BD, 0x0D2650, 0x0D9544, 0x46AAB9, 0x056A4D, 0x09AD42, 0x24AEB6, 0x04AE4A, //1901-1910 0x6A4DBE, 0x0A4D52, 0x0D2546, 0x5D52BA, 0x0B544E, 0x0D6A43, 0x296D37, 0x095B4B, 0x749BC1, 0x049754, //1911-1920 0x0A4B48, 0x5B25BC, 0x06A550, 0x06D445, 0x4ADAB8, 0x02B64D, 0x095742, 0x2497B7, 0x04974A, 0x664B3E, //1921-1930 0x0D4A51, 0x0EA546, 0x56D4BA, 0x05AD4E, 0x02B644, 0x393738, 0x092E4B, 0x7C96BF, 0x0C9553, 0x0D4A48, //1931-1940 0x6DA53B, 0x0B554F, 0x056A45, 0x4AADB9, 0x025D4D, 0x092D42, 0x2C95B6, 0x0A954A, 0x7B4ABD, 0x06CA51, //1941-1950 0x0B5546, 0x555ABB, 0x04DA4E, 0x0A5B43, 0x352BB8, 0x052B4C, 0x8A953F, 0x0E9552, 0x06AA48, 0x7AD53C, //1951-1960 0x0AB54F, 0x04B645, 0x4A5739, 0x0A574D, 0x052642, 0x3E9335, 0x0D9549, 0x75AABE, 0x056A51, 0x096D46, //1961-1970 0x54AEBB, 0x04AD4F, 0x0A4D43, 0x4D26B7, 0x0D254B, 0x8D52BF, 0x0B5452, 0x0B6A47, 0x696D3C, 0x095B50, //1971-1980 0x049B45, 0x4A4BB9, 0x0A4B4D, 0xAB25C2, 0x06A554, 0x06D449, 0x6ADA3D, 0x0AB651, 0x093746, 0x5497BB, //1981-1990 0x04974F, 0x064B44, 0x36A537, 0x0EA54A, 0x86B2BF, 0x05AC53, 0x0AB647, 0x5936BC, 0x092E50, 0x0C9645, //1991-2000 0x4D4AB8, 0x0D4A4C, 0x0DA541, 0x25AAB6, 0x056A49, 0x7AADBD, 0x025D52, 0x092D47, 0x5C95BA, 0x0A954E, //2001-2010 0x0B4A43, 0x4B5537, 0x0AD54A, 0x955ABF, 0x04BA53, 0x0A5B48, 0x652BBC, 0x052B50, 0x0A9345, 0x474AB9, //2011-2020 0x06AA4C, 0x0AD541, 0x24DAB6, 0x04B64A, 0x69573D, 0x0A4E51, 0x0D2646, 0x5E933A, 0x0D534D, 0x05AA43, //2021-2030 0x36B537, 0x096D4B, 0xB4AEBF, 0x04AD53, 0x0A4D48, 0x6D25BC, 0x0D254F, 0x0D5244, 0x5DAA38, 0x0B5A4C, //2031-2040 0x056D41, 0x24ADB6, 0x049B4A, 0x7A4BBE, 0x0A4B51, 0x0AA546, 0x5B52BA, 0x06D24E, 0x0ADA42, 0x355B37, //2041-2050 0x09374B, 0x8497C1, 0x049753, 0x064B48, 0x66A53C, 0x0EA54F, 0x06B244, 0x4AB638, 0x0AAE4C, 0x092E42, //2051-2060 0x3C9735, 0x0C9649, 0x7D4ABD, 0x0D4A51, 0x0DA545, 0x55AABA, 0x056A4E, 0x0A6D43, 0x452EB7, 0x052D4B, //2061-2070 0x8A95BF, 0x0A9553, 0x0B4A47, 0x6B553B, 0x0AD54F, 0x055A45, 0x4A5D38, 0x0A5B4C, 0x052B42, 0x3A93B6, //2071-2080 0x069349, 0x7729BD, 0x06AA51, 0x0AD546, 0x54DABA, 0x04B64E, 0x0A5743, 0x452738, 0x0D264A, 0x8E933E, //2081-2090 0x0D5252, 0x0DAA47, 0x66B53B, 0x056D4F, 0x04AE45, 0x4A4EB9, 0x0A4D4C, 0x0D1541, 0x2D92B5 //2091-2099 }; ////////////////////////////////////////////////////////////////////////// // ���ѡƬ [4/1/2015 lyfz] ////////////////////////////////////////////////////////////////////////// BOOL g_bRemote = FALSE; ////////////////////////////////////////////////////////////////////////// HMODULE g_hlyfzMicroShareDLL = NULL; lyfzCreateShare g_lyfzCreateShare = NULL; // �������汾��; WORD g_arrFileVersion[4] = { 0 }; TCHAR g_szLoginUser[MAX_PATH] = _T(""); // ��ǰ�����ĵ�½�û���; TCHAR g_szLoginPsw[MAX_PATH] = _T(""); // ��ǰ�����ĵ�½����; TCHAR g_szModulePath[MAX_PATH] = _T(""); // ����Ŀ¼; TCHAR g_szModuleFileName[MAX_PATH] = _T(""); // ����ȫ����; TCHAR g_szConnectString[MAX_PATH] = _T(""); // DB���Ӵ�; // ������Ϣ; TCHAR g_szHostComputerIP[MAX_PATH] = _T(""); // �������������; DWORD g_dwCSPort = 5678; // ���������ͨ��TCP�˿�; TCHAR g_szN8ViewUserDir[MAX_PATH] = {0}; // N8ѡ��������û�Ŀ¼(����Ŀ¼); TCHAR g_szN8ViewStsDir[MAX_PATH] = {0}; // N8ѡ�������ͳ������Ŀ¼(����Ŀ¼); TCHAR g_szN8ViewProductDir[MAX_PATH] = {0}; // N8ѡ���Ʒ����Ŀ¼(����Ŀ¼); DWORD g_dwSoftRunTime = 0; // ����ʣ�������ʱ��; // ���ݿ���Ϣ; TCHAR g_szDBSource[MAX_PATH] = _T(""); // ���ݿ�Դ(��������IP��������); TCHAR g_szDBSourcePort[MAX_PATH] = _T(""); // ���ݿ�Դ�˿�; DWORD g_dwDBServerPort = 0; // ���ݿ�Դ�˿�; TCHAR g_szDBAccount[MAX_PATH] = _T(""); // ���ݿ��¼�û�; TCHAR g_szDBPassWord[MAX_PATH] = _T(""); // ���ݿ��¼����; TCHAR g_szDBName[MAX_PATH] = _T(""); // ���ݿ�����; // ��Ƭ�洢Ŀ¼; TCHAR g_szShareHost[MAX_PATH] = _T(""); // ����������; TCHAR g_szOriginalFolder[MAX_PATH] = _T(""); // ԭƬĿ¼; TCHAR g_szOriginalBkFolder[MAX_PATH] = _T(""); // ԭƬ����Ŀ¼; TCHAR g_szEarlyRepairFolder[MAX_PATH] = _T(""); // ����ƬĿ¼; TCHAR g_szEarlyRepairBkFolder[MAX_PATH] = _T(""); // ����Ƭ����Ŀ¼; TCHAR g_szFurtherRepairFolder[MAX_PATH] = _T(""); // ����ƬĿ¼; TCHAR g_szFurtherRepairBkFolder[MAX_PATH] = _T(""); // ����Ƭ����Ŀ¼; TCHAR g_szDesignFolder[MAX_PATH] = _T(""); // ���ƬĿ¼; TCHAR g_szDesignBkFolder[MAX_PATH] = _T(""); // ���Ƭ����Ŀ¼; TCHAR g_szTelRecordingFolder[MAX_PATH] = _T(""); // �绰¼��Ŀ¼; TCHAR g_szFullDressImageFolder[MAX_PATH] = _T(""); // ���ͼƬĿ¼; TCHAR g_strCPUID[MAX_PATH] = _T(""); //��ȡCPU ID TCHAR g_strMacAddr[MAX_PATH] = _T(""); //mac��ַ TCHAR g_strHDNum[MAX_PATH] = _T(""); //Ӳ��ID TCHAR g_strBIOSNum[MAX_PATH] = _T(""); //����ID BOOL g_bRunOnCorruptdb = FALSE; // �������ݿ�������; // �������ü��ܹ��Ƿ���ע��; // Jeff,Ӧ�÷���SoftKey��Ϊ��̬����ʹ��; BOOL g_bSoftWareReg = FALSE; // ���ܹ��е��ַ���ϢS1:�� 201409062003558789.ly.com // ��ȫ�ֱ����ھ����������ǣ�g_sdomain; // �ñ��������ݿ���ֶ�[path].[path1]�д洢; CString g_strDogMainInfo = ""; // δ֪��;; // ��ȫ�ֱ����ھ������������ǣ�CString g_bMain; // �뼯�Ű��й�����; // �п�������������; CString g_strMain = ""; // �ֵ���������;�����������ƣ�g_branchnamearray CStringArray g_strArrayOfBranchName; // ?? CStringArray g_strArrayOfBranchName2; // �ֵ�IP��ַ����; CStringArray g_strArrayOfBranchIPAdress; // �ֵ�ļ��ܹ�S1��Ϣ����; CStringArray g_strArrayOfBranchDogMainInfo; // ��ϯ������������(�Ӽ��ܹ��л�ȡ); unsigned int g_nCountOfAllowToConn = 0; #ifdef USE_KERNEL_DLL // ����������Ϣ;���ڼ��Ű�����ʱ,�طñ�����Ϣʱ��; TblVersion g_ThisShopVersion; HINSTANCE g_Instance = NULL; #endif DWORD g_nLeng = 0; BYTE *g_pData = NULL; DWORD g_nLeng2 = 0; BYTE *g_pData2 = NULL; SENDHEAD g_sendhead; BOOL g_bRedSkin = 0; COLORREF g_gridcol1 = RGB(204, 204, 204); COLORREF g_gridcol2 = RGB(190, 190, 190); COLORREF g_bkcol = RGB(184, 184, 184); CString g_date; CString g_title; CArray<CStringArray, CStringArray>g_userarray; CArray<CStringArray, CStringArray>g_cominfoarray; CArray<CStringArray, CStringArray>g_cominfoarraylocal; CArray<DWORD, DWORD>g_lengarray; CArray<DWORD, DWORD>g_btnlengarray; CArray<BYTE*, BYTE*>g_pointerarray; CBrush g_editbkbrush; DWORD g_btnleng[8]; int g_btnlengpos = -1; int g_nYearpos = -1; CString g_branchname = ""; // Jeff.���Ű�:????���ֵ�����; CString g_branchip = ""; CString g_branchip2 = ""; BOOL g_bBranchModify = 0; BOOL g_bShowOK = 0; // ȡ��OK�Ķ���; BOOL g_bStaffAchievementShow = 0; // �˻�����Ա��ҵ���鿴; BOOL g_bSaveUploadTask1 = 0; BOOL g_bSaveUploadTask2 = 0; BOOL g_bSaveUploadTask3 = 0; BOOL g_bSaveUploadTask4 = 0; BOOL g_bSearchFilter = 0; CString g_waiter1; CString g_waiter2; CString g_waiter3; CString g_waiter4; CString g_waiter5; CString g_filterdate1; CString g_filterdate2; CString g_filterdate3; CString g_filterdate4; CString g_filterdate5; CString g_filterdate6; CString g_filterbranch; USER g_user; CString g_mainpath; // ����Ŀ¼ CString g_id; // CString g_server; // ����˵�ַ CStringArray g_serverarray; // CString g_serverbak; // CString g_path1; /* ����Ŀ¼ <�ͻ�ԭƬ(��������)$> ��:"\\lyfz-pc\�ͻ�ԭƬ(��������)$" */ CString g_path2; /* ����Ŀ¼ <�õ�Ƭ(��������)$> ��:"\\lyfz-pc\�õ�Ƭ(��������)$" */ CString g_path3; /* ����Ŀ¼ <��ƺõ�Ƭ(��������$)> ��:""> */ CString g_path4; /* ����Ŀ¼ <���õ�Ƭ(��������$)> ��:""> */ CString g_path5; /* ����Ŀ¼ <���ͼƬ(��������$)> ��:""> */ CString g_path6; /* ����Ŀ¼ <�绰¼��(��������$)> ��:""> */ CString g_path7; /* ����Ŀ¼ <�ͻ�ԭƬ(��������$)\Ч��ͼ> ��:""> */ CString g_path1bak; CString g_path2bak; CString g_path3bak; CString g_path4bak; CString g_path5bak; CString g_path6bak; CString g_path7bak; CDatabase g_db; DWORD g_ncount; CFont g_titlefont; DWORD g_nSendCode = 0; BOOL g_bSendOK = 0; CString g_temp; CArray<CStringArray, CStringArray>g_hisyeararray; CArray<CStringArray, CStringArray>g_brancharray; CArray<CStringArray, CStringArray>g_oldclientarray; BOOL g_bNoConnDlg = 0; BOOL g_bInSkin = 0; BOOL g_bGenBranchData = 0; BOOL g_bSortAscending = FALSE; CFont g_listctrlfont; float g_fscalex; // x����̶� float g_fscaley; // y����̶� int g_screenwid; // ����� int g_screenhei; // ����� float g_WidthScale2 = 1; float g_HeightScale2 = 1; RESDATA2 g_resdata2; BOOL g_bAlphaWnd = 0; BYTE g_bNeedDrawParent = 0; BOOL g_bAllBranch = 0; CString g_domain; CString g_sInfo; int g_ncot = 0; // Jeff:��������(������ʷ��������),�ñ��������ǵ�������������1000ʱ,��˾��������������; int g_conpos = 0; int g_nAutoShowStaffAchievement = -1; BOOL g_bShowBar = 1; int g_bookingtype = 0; BOOL g_bNoLoginLia = 0; BOOL g_bConnLYFZ = 0; BOOL g_bSendLYFZ = 0; int g_ntimeout = 29000; float g_WidthScale; float g_HeightScale; int g_dx = 0; int g_dy = 0; BOOL g_bNeedCoon = 1; // remark by Jeff:�Ƿ���Ҫ�������ӷ����; CStringArray g_menubranchname; CArray<CStringArray, CStringArray>g_List1array; #if USE_SHARE_FLORD CArray<CStringArray, CStringArray> g_aryOfSharePathInfo; // NetShareInfo����¼; #endif /************************************************************************/ /* Jeff��g_conntype g_conntype == 0 :��ʾ��������?(�������ӱ��ط�����?) g_conntype == 1 :��ʾ���ӹ�˾������(http://lijiafz.vicp.net) g_conntype == 2 :http://www.lyfz.net/download/ip.txt g_conntype == 3 :http://photo.bjlyfz.com/download/ip.txt g_conntype == 4 : */ /************************************************************************/ int g_conntype = 0; // ����; // ʹ��ϵͳ��������; BOOL g_bOriginal = FALSE; // �ͻ���guidֵ; TCHAR g_szGuidMark[64] = {0}; // ����̨���; BOOL g_bStdOut = FALSE; // N8��װ·��; TCHAR g_szN8Path[MAX_PATH] = _T(""); // HostInfo.ini��·��; TCHAR g_szIniPath[MAX_PATH] = _T(""); // N8ѡ�������IP��ַ; TCHAR g_szN8SvIP[MAX_PATH] = _T(""); // �Ƿ�������ѡ����; BOOL g_bEnableClound = FALSE; // �Ƿ�������λͼ; BOOL g_bExportBarCode = FALSE; // �������������; INT g_nDrawerCount = 12; //0 ���� //1 ����1 //2 ����2 //3 ����3 //4 ����4 //************************************// // ���ݿ��ַ; // ���ݿ�˿�; // ���ݿ����Ա�˺�; // ���ݿ����Ա����; // ���ݿ�����; // // [����]��GetIniInfo // [����]����ȡָ��ini��Ϣ; // [����]�� // szPath��ini����Ŀ¼; // szIniName��ini��; // [����]��void //************************************// int GetSysIniInfo(const char *szPath, const char *szIniName) { TCHAR szDrive[_MAX_DRIVE] = { 0 }; TCHAR szDir[_MAX_DIR] = { 0 }; TCHAR szFna[_MAX_DIR] = { 0 }; TCHAR szExt[_MAX_DIR] = { 0 }; ::GetModuleFileName(NULL, g_szModuleFileName, sizeof(g_szModuleFileName) / sizeof(TCHAR)); #ifdef VC60 sprintf(g_szModulePath, _T("%s"), g_szModuleFileName); _tsplitpath(g_szModulePath, szDrive, szDir, szFna, szExt); _tcscpy(g_szModulePath, szDrive); _tcscat(g_szModulePath, szDir); #else _stprintf_s(g_szModulePath, MAX_PATH, _T("%s"), g_szModuleFileName); _tsplitpath_s(g_szModulePath, szDrive, _MAX_DRIVE, szDir, _MAX_DIR, szFna, _MAX_DIR, szExt, _MAX_DIR); _tcscpy_s(g_szModulePath, MAX_PATH, szDrive); _tcscat_s(g_szModulePath, MAX_PATH, szDir); #endif // -----------------------------------------------------// if (szPath != NULL && szIniName != NULL) { if ( szPath[strlen(szPath) -1] == '\\' ) wsprintf(g_szIniPath, _T("%s%s"), szPath, szIniName); else wsprintf(g_szIniPath, _T("%s\\%s"), szPath, szIniName); if ( !PathFileExists(g_szIniPath) ) { wsprintf(g_szIniPath, _T("%sHostInfo.ini"), g_szModulePath); } } else { wsprintf(g_szIniPath, _T("%sHostInfo.ini"), g_szModulePath); } printf("szFile =%s\n", g_szIniPath); HANDLE hFile = CreateFile(g_szIniPath, 0/*GENERIC_READ*/, 0, NULL, OPEN_EXISTING, 0, NULL); if (ERROR_FILE_NOT_FOUND == GetLastError()) { printf("û���ҵ������ļ�[%s]\n", g_szIniPath); // ��������; CFile fp; if( fp.Open(g_szIniPath,CFile::modeCreate|CFile::modeWrite) ) { fp.Close(); } WritePrivateProfileString(_T("NetWorkInfo"),_T("Host"),_T("127.0.0.1"),g_szIniPath); WritePrivateProfileString(_T("NetWorkInfo"),_T("CSPort"),_T("5678"),g_szIniPath); return -1; } CloseHandle(hFile); hFile = NULL; // ��ȡ��������TCP��Ϣ; GetPrivateProfileString(_T("NetWorkInfo"), _T("Host"), _T(""), g_szHostComputerIP, MAX_PATH, g_szIniPath); // N8ѡ�����·��; GetPrivateProfileString(_T("NemoInfo"), _T("N8Path"), _T(""), g_szN8Path, MAX_PATH, g_szIniPath); // N8ѡ�������IP; //GetPrivateProfileString(_T("NemoInfo"), _T("N8SvIP"), _T(""), g_szN8SvIP, MAX_PATH, g_szIniPath); g_dwCSPort = GetPrivateProfileInt(_T("NetWorkInfo"), _T("CSPort"), 0, g_szIniPath); g_ntimeout = GetPrivateProfileInt(_T("NetWorkInfo"), _T("TimeOut"), 30000, g_szIniPath); g_bRunOnCorruptdb = GetPrivateProfileInt(_T("SystemInfo"), _T("RunOnCorruptdb"), 0, g_szIniPath); if ( !g_bStdOut ) { g_bStdOut = GetPrivateProfileInt(_T("NetWorkInfo"), _T("StdOut"), 0, g_szIniPath); if ( g_bStdOut ) { AllocConsole(); // ���ٿ���̨; SetConsoleTitle(_T("lyfz�������")); // ���ÿ���̨���ڱ���; freopen("CONOUT$", "w+t", stdout); // �ض������; freopen("CONIN$", "r+t", stdin); // �ض�������; HWND hWnd = NULL; again: hWnd = ::FindWindow(NULL, _T("lyfz�������")); if( hWnd ) { if (!::SetWindowPos(hWnd, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE)) { printf(_T("ǰ������ʧ��\n")); } else { printf(_T("ǰ�����óɹ�\n")); } } else { goto again; } } } return 0; } //---------------------------------------------------------- // ������IsFileExist // �������ж�ij�ļ��Ƿ����; // ������ // pFileFullName�� ָ�����ļ���; // ���أ�TRUE��ʾ�ļ�����; //---------------------------------------------------------- BOOL IsFileExist(const TCHAR *pFileFullName) { int err = 0; // Check for existence. if ((err = _access(pFileFullName, 0)) == 0) { //printf_s( "File crt_access_s.c exists.\n" ); // Check for write permission. if ((err = _access(pFileFullName, 2)) == 0) { //printf_s( "File crt_access_s.c does have ""write permission.\n" ); } else { //printf_s( "File crt_access_s.c does not have ""write permission.\n" ); } } else { //printf_s( "File crt_access_s.c does not exist.\n" ); return FALSE; } return TRUE; } // Pump messages while waiting for event //---------------------------------------------------------- // ������WaitWithMessageLoop // �������ȴ�ij�ں��¼�����; // ������ // hEvent�� ���ȴ���Ӧ���ں��¼�����; // nTimeout�� ��ʱֵ; // ���أ�TRUE���ش����ɹ�; //---------------------------------------------------------- BOOL WaitWithMessageLoop(HANDLE hEvent, int nTimeout) { DWORD dwRet = 0; while (1) { // wait for event or message, if it's a message, process it and return to waiting state dwRet = MsgWaitForMultipleObjects(1, &hEvent, FALSE, nTimeout, QS_ALLINPUT); if (dwRet == WAIT_OBJECT_0) { TRACE0("WaitWithMessageLoop() event triggered.\n"); return TRUE; } else if (dwRet == WAIT_OBJECT_0 + 1) { // process window messages AfxGetApp()->PumpMessage(); } else if (dwRet == WAIT_TIMEOUT) { // timed out ! return FALSE; } else { // WAIT_ABANDONED_0 ... return TRUE; } } } //---------------------------------------------------------- // ������DeleteDirectory // ������ɾ��ָ��Ŀ¼�µ������ļ�; // ������strDir��ָ��Ҫɾ�����ļ�Ŀ¼; // ���أ�; //---------------------------------------------------------- void DeleteDirectory(CString strDir) { try { // ����ɾ���ļ������ļ��� CFileFind ff; BOOL bFound = ff.FindFile(strDir + "\\*", 0); while (bFound) { bFound = ff.FindNextFile(); if (ff.GetFileName() == "." || ff.GetFileName() == "..") continue; // ȥ���ļ�(��)ֻ�������� SetFileAttributes(ff.GetFilePath(), FILE_ATTRIBUTE_NORMAL); if (ff.IsDirectory()) { // �ݹ�ɾ�����ļ��� DeleteDirectory(ff.GetFilePath()); RemoveDirectory(ff.GetFilePath()); } else { DeleteFile(ff.GetFilePath()); // �ݹ� ɾ���ļ� } } ff.Close(); // Ȼ��ɾ�����ļ��� RemoveDirectory(strDir); } catch (...) { //WriteLogin("�����ں���deldir��"); } // int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp ); } // Jeff.ע��ؼ�����;2014.09.11 //---------------------------------------------------------- // ������RegisterOcx // ������ע��ָ��������ļ�; // ������ocxfileָ��Ҫע�������ļ���; // ���أ�TRUE��ʾע��ɹ�; //---------------------------------------------------------- BOOL RegisterOcx(LPCTSTR ocxfile) { HKEY hKey; bool bRet; USES_CONVERSION; ITypeLib* pTypeLib; CString CLSIDStr; CLSID clsid; LPOLESTR wRes = NULL; if (LoadTypeLib(T2OLE(ocxfile), &pTypeLib) == S_OK) { TLIBATTR tlibAttr, *ptlibAttr; ptlibAttr = &tlibAttr; pTypeLib->GetLibAttr(&ptlibAttr); clsid = ptlibAttr->guid; pTypeLib->Release(); } ::StringFromCLSID(clsid, &wRes); CLSIDStr = OLE2CT(wRes); if ((RegOpenKeyEx(HKEY_CLASSES_ROOT, "CLSID\\" + CLSIDStr, 0, KEY_READ, &hKey) == ERROR_SUCCESS) || (RegOpenKeyEx(HKEY_CLASSES_ROOT, "Wow6432Node\\TypeLib\\" + CLSIDStr, 0, KEY_READ, &hKey) == ERROR_SUCCESS)) { return true; } else { HINSTANCE hLib = LoadLibrary(ocxfile); if (hLib < (HINSTANCE)HINSTANCE_ERROR) { MessageBox(0, "Ȩ����,��������OCX�ļ�����ע��ؼ���", "���", MB_OK); bRet = false; } else { FARPROC lpDllEntryPoint; lpDllEntryPoint = GetProcAddress(hLib, _T("DllRegisterServer")); if (lpDllEntryPoint != NULL) { if (FAILED((*lpDllEntryPoint)())) { MessageBox(0, "����ע�ắ����DllRegisterServer��ʧ�ܣ���ע��ؼ���", "���", MB_OK); bRet = false; } else bRet = true; } else { MessageBox(0, "����ע�ắ����DllRegisterServer��ʧ�ܣ���ע��ؼ���", "���", MB_OK); bRet = false; } } FreeLibrary(hLib); return bRet; } } // Jeff.Hacker. WINDOWS NT ���ϵ��ں���Ҫ��Ȩ,���ܶ�ϵͳ���и�����; //---------------------------------------------------------- // ������GetDebugPriv // �������Գ�����Ȩ; // ������ // ���أ�TRUE��ʾ������Ȩ�ɹ�; //---------------------------------------------------------- BOOL GetDebugPriv() { // ���صķ�������ָ��; HANDLE hToken; // ���������ص��ƶ���Ȩ���Ƶ���Ϣ; LUID sedebugnameValue; // ����Ȩ��Ϣ��ָ��(�ṹ��); TOKEN_PRIVILEGES tkp; DWORD dwCurProcId = GetCurrentProcessId(); // Ҫ�ķ���Ȩ�Ľ��̾��; HANDLE hCurProc; hCurProc = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwCurProcId); if (!::OpenProcessToken(hCurProc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) { ShowSystemErrorInfo(CString("��ȨOpenProcessTokenʧ�ܡ�"), GetLastError()); return FALSE; } if (!::LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue)) { ShowSystemErrorInfo(CString("��ȨLookupPrivilegeValueʧ�ܡ�"), GetLastError()); CloseHandle(hToken); return FALSE; } tkp.PrivilegeCount = 1; tkp.Privileges[0].Luid = sedebugnameValue; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if (!::AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof tkp, NULL, NULL)) { ShowSystemErrorInfo(CString("��ȨAdjustTokenPrivilegesʧ�ܡ�"), GetLastError()); CloseHandle(hToken); return FALSE; } CloseHandle(hCurProc); CloseHandle(hToken); return TRUE; } //---------------------------------------------------------- // ������GetFileVersion // ��������ȡָ��ģ����ļ��汾��Ϣ // ������ // hModule: ָ����ģ�飨���ΪNULL,��ʾ��ȡ�����ļ��汾��Ϣ��; // pBuffer�� ���ص��ļ��汾��Ϣ; // // ���أ�TRUE��ʾ��ȡģ���ļ��汾��Ϣ�ɹ�; //---------------------------------------------------------- bool GetFileVersion(HMODULE hModule, WORD *pBuffer) { TCHAR fname[MAX_PATH]; VS_FIXEDFILEINFO *pVi; DWORD dwHandle; std::string str; if (::GetModuleFileName(hModule, fname, MAX_PATH)) { int size = GetFileVersionInfoSize(fname, &dwHandle); if (size > 0) { BYTE *buffer = new BYTE[size]; memset(buffer, 0, size); if (GetFileVersionInfo(fname, dwHandle, size, buffer)) { if (VerQueryValue(buffer, _T("\\"), (LPVOID *)&pVi, (PUINT)&size)) { pBuffer[0] = HIWORD(pVi->dwFileVersionMS); pBuffer[1] = LOWORD(pVi->dwFileVersionMS); pBuffer[2] = HIWORD(pVi->dwFileVersionLS); pBuffer[3] = LOWORD(pVi->dwFileVersionLS); delete buffer; return true; } } delete buffer; } } return false; } //---------------------------------------------------------- // GetProductVersion // ��������ȡָ��ģ����ļ��汾��Ϣ // ������ // hModule: ָ����ģ�飨���ΪNULL,��ʾ��ȡ�����ļ��汾��Ϣ��; // pBuffer�� ���ص��ļ��汾��Ϣ; // // ���أ�TRUE��ʾ��ȡģ���ļ��汾��Ϣ�ɹ�; //---------------------------------------------------------- bool GetProductVersion(IN HMODULE hModule, OUT WORD *pBuffer) { TCHAR fname[MAX_PATH] = {0}; VS_FIXEDFILEINFO *pVi = NULL; DWORD dwHandle = 0; string str; if (::GetModuleFileName(hModule, fname, MAX_PATH)) { int size = GetFileVersionInfoSize(fname, &dwHandle); if (size > 0) { BYTE *buffer = new BYTE[size]; memset(buffer,0,size); if (GetFileVersionInfo(fname, dwHandle, size, buffer)) { if (VerQueryValue(buffer, _T("\\"), (LPVOID *)&pVi, (PUINT)&size)) { pBuffer[0] = HIWORD(pVi->dwProductVersionMS); pBuffer[1] = LOWORD(pVi->dwProductVersionMS); pBuffer[2] = HIWORD(pVi->dwProductVersionLS); pBuffer[3] = LOWORD(pVi->dwProductVersionLS); delete []buffer; return true; } } delete []buffer; } } return false; } //---------------------------------------------------------- // ������CheckInternalIP // �������ж�IP(�����ֽ���)��ַ�Ƿ�Ϊ������ַ; // ������ip_addr:����IP������Ϊ�����ֽ���; // // ���أ�TRUE��ʾ����IPΪ����IP; FALSE��ʾ����IP; //---------------------------------------------------------- BOOL CheckInternalIPV4(const unsigned int &ip_addr) { // ���α���IP�Σ���Ϊ˽�е�ַ�������ڹ�����ʹ�ã�ֻ������IP; // A�ࣺ10.0.0.0 ~ 10.255.255.255 = 0A.00.00.00 ~ 0A.FF.FF.FF // B�ࣺ172.16.0.0 ~ 172.31.255.255 = AC.10.00.00 ~ AC.1F.FF.FF // C�ࣺ192.168.0.0 ~ 192.168.255.255 = C0.A8.00.00 ~ C0.A8.FF.FF // D�ࣺ127.0.0.0 ~ 127.255.255.255 = 7F.00.00.00 ! 7F.FF.FF.FF (���ص�ַ) #if 0 //���3���ַ�Ƿ����ڹ���; if ((ip_addr >= 0x0A000000 && ip_addr <= 0x0AFFFFFF) || (ip_addr >= 0xAC100000 && ip_addr <= 0xAC1FFFFF) || (ip_addr >= 0xC0A80000 && ip_addr <= 0xC0A8FFFF) ) { return FALSE; } return TRUE; #endif #if 0 //���3���ַ�Ƿ���������; // 0xa -- "10.0.0.0">>24; // 0xc0a8--"192.168.0.0.">>16; // 0x2b0--"127.17.0.1">>22 if ((ip_addr >> 24 == 0xa) || (ip_addr >> 16 == 0xc0a8) || (ip_addr >> 22 == 0x2b0)) return FALSE; else return TRUE; #endif #if 1 // �ػ���ַҲ���ȥ�� if ((ip_addr >> 24 == 0x0A) || (ip_addr >> 20 == 0xAC1) || (ip_addr >> 16 == 0xC0A8) || (ip_addr >> 26 == 0x7)) return FALSE; else return TRUE; #endif } //---------------------------------------------------------- // ������IsValidIPV4 // �������ж��ַ����Ƿ�����Ч��IPV4; // ������szIP:����IP; // // ���أ�TRUE��ʾ�ַ���Ϊ��Ч��IPV4; //---------------------------------------------------------- BOOL IsValidIPV4(const TCHAR *szIP) { int nIndex = 0; int nPointCount = 0; // "."IPV4��3��; int nLen = strlen(szIP); for (int i = 0; i < nLen; i++) { if (szIP[i] == '.') { if (i == 0 || i == nLen - 1) { return FALSE; } else { if (++nIndex != i) { nIndex = i; nPointCount++; } else return FALSE; } continue; } if (isdigit(szIP[i]) == 0) return FALSE; } if (nPointCount != 3) return FALSE; return TRUE; } //---------------------------------------------------------- // ������GetHostAllOfIP // ����������ָ���������Ƶ�����IPV4��ַ; // ������ // pHostName: ������; // vtHostIPV4��ָ��������������IPV4��ַ; // // ���أ�TRUE��ʾ�ַ���Ϊ��Ч��IPV4; //---------------------------------------------------------- int GetHostAllOfIP(const TCHAR *pHostName, std::vector<std::string> &vtHostIPV4) { #if 0 WSADATA wsa = { 0 }; WSAStartup(MAKEWORD(2, 2), &wsa); #endif #if 0 // YLGL��Ŀʹ�ò���,��Ϊ�����˾ɵ�ϵͳͷ�ļ�; addrinfo hint, *answer, *curr; memset(&hint, 0, sizeof(addrinfo)); hint.ai_family = AF_INET; hint.ai_socktype = SOCK_STREAM; int nRet = GetAddrInfo(pHostName, NULL, &hint, &answer); //int nRet = GetAddrInfo(pHostName, "5678", &hint, &answer); if (nRet != 0) { DWORD dwError = GetLastError(); return; } TCHAR szIP[MAX_PATH]; for (curr = answer; curr != NULL; curr = curr->ai_next) { //std::string ipstr; memset(szIP, 0, MAX_PATH); _inet_ntop(AF_INET, &(((sockaddr_in*)(curr->ai_addr))->sin_addr), szIP, MAX_PATH); vtHostIPV4.push_back(szIP); } freeaddrinfo(answer); #endif return 0; } void DataToArray(CArray<CStringArray, CStringArray>*pArrayOfString, int datapos) { try { pArrayOfString->RemoveAll(); if (g_nLeng == 0) { return; } // 1.code[0]���飺��������ʱ,�洢�Ų���ָ��;��������ʱ,�洢�Ž������ݴ�С???; if (g_sendhead.code[0]) { // 1.1.��g_pDataȫ�ֱ����ﱣ������ݽ��н�ѹ,���洢��lpszOut������; 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 // 1.2.����ѹ�������lpszOut���ӵ��ڴ��ļ���; CMemFile memfile; memfile.Attach(lpszOut, nOutSize); Lzari.Release(); // 1.3.���ڴ��ļ����л����浽CArchive������; CArchive ar(&memfile, CArchive::load); pArrayOfString->SetSize(g_sendhead.count[0]); // 1.4.��CArchive�����������,���л���ָ����CArray������; for (int ii = 0; ii < pArrayOfString->GetSize(); ii++) { pArrayOfString->ElementAt(ii).Serialize(ar); } // 1.5.������ݵĵ�������,�ͷ��ڴ�; ar.Close(); memfile.Detach(); } else { CMemFile memfile; memfile.Attach(g_pData, g_nLeng); CArchive ar(&memfile, CArchive::load); pArrayOfString->SetSize(g_sendhead.count[0]); for (int ii = 0; ii < pArrayOfString->GetSize(); ii++) { pArrayOfString->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } } catch (...) { } } void DataToArray( CArray<CStringArray, CStringArray>*pArrayOfString1, CArray<CStringArray, CStringArray>*pArrayOfString2, int datapos) { try { CArray<CStringArray, CStringArray>*parray[2] = { pArrayOfString1, pArrayOfString2 }; DWORD bytereads = 0; for (int i = 0; i < 2; i++) { parray[i]->RemoveAll(); if (g_sendhead.length[i] == 0) continue; if (g_sendhead.code[i]) { // 1.1.��g_pDataȫ�ֱ����ﱣ������ݽ��н�ѹ,���洢��lpszOut������; BYTE *lpszOut = NULL; int nOutSize = 0; LZARI Lzari; #ifdef VC60 Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize); #else Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize); #endif // 1.2.����ѹ�������lpszOut���ӵ��ڴ��ļ���; CMemFile memfile; memfile.Attach(lpszOut, nOutSize); Lzari.Release(); // 1.3.���ڴ��ļ����л����浽CArchive������; bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); // 1.4.��CArchive�����������,���л���ָ����CArray������; for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } // 1.5.������ݵĵ�������,�ͷ��ڴ�; ar.Close(); memfile.Detach(); } else { CMemFile memfile; memfile.Attach(g_pData + bytereads, g_sendhead.length[i]); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } } } catch (...) { } } void DataToArray( CArray<CStringArray, CStringArray>*pArrayOfString1, CArray<CStringArray, CStringArray>*pArrayOfString2, CArray<CStringArray, CStringArray>*pArrayOfString3, int datapos) { try { CArray<CStringArray, CStringArray>*parray[3] = { pArrayOfString1, pArrayOfString2, pArrayOfString3 }; DWORD bytereads = 0; for (int i = 0; i < 3; i++) { parray[i]->RemoveAll(); if (g_sendhead.length[i] == 0)continue; if (g_sendhead.code[i]) { BYTE *lpszOut = NULL; int nOutSize = 0; LZARI Lzari; #ifdef VC60 Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize); #else Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize); #endif CMemFile memfile; memfile.Attach(lpszOut, nOutSize); Lzari.Release(); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } else { CMemFile memfile; memfile.Attach(g_pData + bytereads, g_sendhead.length[i]); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } } } catch (...) { } } void DataToArray( CArray<CStringArray, CStringArray>*pArrayOfString1, CArray<CStringArray, CStringArray>*pArrayOfString2, CArray<CStringArray, CStringArray>*pArrayOfString3, CArray<CStringArray, CStringArray>*pArrayOfString4, int datapos) { try { CArray<CStringArray, CStringArray>*parray[4] = { pArrayOfString1, pArrayOfString2, pArrayOfString3, pArrayOfString4 }; DWORD bytereads = 0; for (int i = 0; i < 4; i++) { parray[i]->RemoveAll(); if (g_sendhead.length[i] == 0)continue; if (g_sendhead.code[i]) { BYTE *lpszOut = NULL; int nOutSize = 0; LZARI Lzari; #ifdef VC60 Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize); #else Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize); #endif CMemFile memfile; memfile.Attach(lpszOut, nOutSize); Lzari.Release(); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } else { CMemFile memfile; memfile.Attach(g_pData + bytereads, g_sendhead.length[i]); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } } } catch (...) { } } void DataToArray( CArray<CStringArray, CStringArray>*pArrayOfString1, CArray<CStringArray, CStringArray>*pArrayOfString2, CArray<CStringArray, CStringArray>*pArrayOfString3, CArray<CStringArray, CStringArray>*pArrayOfString4, CArray<CStringArray, CStringArray>*pArrayOfString5, int datapos) { try { CArray<CStringArray, CStringArray>*parray[5] = { pArrayOfString1, pArrayOfString2, pArrayOfString3, pArrayOfString4, pArrayOfString5 }; DWORD bytereads = 0; for (int i = 0; i < 5; i++) { parray[i]->RemoveAll(); if (g_sendhead.length[i] == 0) continue; if (g_sendhead.code[i]) { BYTE *lpszOut = NULL; int nOutSize = 0; LZARI Lzari; #ifdef VC60 Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize); #else Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize); #endif CMemFile memfile; memfile.Attach(lpszOut, nOutSize); Lzari.Release(); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } else { CMemFile memfile; memfile.Attach(g_pData + bytereads, g_sendhead.length[i]); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } } } catch (...) { } } void DataToArray( CArray<CStringArray, CStringArray>*pArrayOfString1, CArray<CStringArray, CStringArray>*pArrayOfString2, CArray<CStringArray, CStringArray>*pArrayOfString3, CArray<CStringArray, CStringArray>*pArrayOfString4, CArray<CStringArray, CStringArray>*pArrayOfString5, CArray<CStringArray, CStringArray>*pArrayOfString6, int datapos) { try { CArray<CStringArray, CStringArray>*parray[6] = { pArrayOfString1, pArrayOfString2, pArrayOfString3, pArrayOfString4, pArrayOfString5, pArrayOfString6 }; DWORD bytereads = 0; for (int i = 0; i < 6; i++) { parray[i]->RemoveAll(); if (g_sendhead.length[i] == 0)continue; if (g_sendhead.code[i]) { BYTE *lpszOut = NULL; int nOutSize = 0; LZARI Lzari; #ifdef VC60 Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize); #else Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize); #endif CMemFile memfile; memfile.Attach(lpszOut, nOutSize); Lzari.Release(); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } else { CMemFile memfile; memfile.Attach(g_pData + bytereads, g_sendhead.length[i]); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } } } catch (...) { } } void DataToArray( CArray<CStringArray, CStringArray>*pArrayOfString1, CArray<CStringArray, CStringArray>*pArrayOfString2, CArray<CStringArray, CStringArray>*pArrayOfString3, CArray<CStringArray, CStringArray>*pArrayOfString4, CArray<CStringArray, CStringArray>*pArrayOfString5, CArray<CStringArray, CStringArray>*pArrayOfString6, CArray<CStringArray, CStringArray>*pArrayOfString7, int datapos) { try { CArray<CStringArray, CStringArray>*parray[7] = { pArrayOfString1, pArrayOfString2, pArrayOfString3, pArrayOfString4, pArrayOfString5, pArrayOfString6, pArrayOfString7 }; DWORD bytereads = 0; for (int i = 0; i < 7; i++) { parray[i]->RemoveAll(); if (g_sendhead.length[i] == 0)continue; if (g_sendhead.code[i]) { BYTE *lpszOut = NULL; int nOutSize = 0; LZARI Lzari; #ifdef VC60 Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize); #else Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize); #endif CMemFile memfile; memfile.Attach(lpszOut, nOutSize); Lzari.Release(); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } else { CMemFile memfile; memfile.Attach(g_pData + bytereads, g_sendhead.length[i]); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } } } catch (...) { } } void DataToArray( CArray<CStringArray, CStringArray>*pArrayOfString1, CArray<CStringArray, CStringArray>*pArrayOfString2, CArray<CStringArray, CStringArray>*pArrayOfString3, CArray<CStringArray, CStringArray>*pArrayOfString4, CArray<CStringArray, CStringArray>*pArrayOfString5, CArray<CStringArray, CStringArray>*pArrayOfString6, CArray<CStringArray, CStringArray>*pArrayOfString7, CArray<CStringArray, CStringArray>*pArrayOfString8, int datapos) { try { CArray<CStringArray, CStringArray>*parray[8] = { pArrayOfString1, pArrayOfString2, pArrayOfString3, pArrayOfString4, pArrayOfString5, pArrayOfString6, pArrayOfString7, pArrayOfString8 }; DWORD bytereads = 0; for (int i = 0; i < 8; i++) { parray[i]->RemoveAll(); if (g_sendhead.length[i] == 0)continue; if (g_sendhead.code[i]) { BYTE *lpszOut = NULL; int nOutSize = 0; LZARI Lzari; #ifdef VC60 Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize); #else Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize); #endif CMemFile memfile; memfile.Attach(lpszOut, nOutSize); Lzari.Release(); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } else { CMemFile memfile; memfile.Attach(g_pData + bytereads, g_sendhead.length[i]); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } } } catch (...) { } } void DataToArray( CArray<CStringArray, CStringArray>*pArrayOfString1, CArray<CStringArray, CStringArray>*pArrayOfString2, CArray<CStringArray, CStringArray>*pArrayOfString3, CArray<CStringArray, CStringArray>*pArrayOfString4, CArray<CStringArray, CStringArray>*pArrayOfString5, CArray<CStringArray, CStringArray>*pArrayOfString6, CArray<CStringArray, CStringArray>*pArrayOfString7, CArray<CStringArray, CStringArray>*pArrayOfString8, CArray<CStringArray, CStringArray>*pArrayOfString9, CArray<CStringArray, CStringArray>*pArrayOfString10, int datapos) { try { CArray<CStringArray, CStringArray>*parray[10] = { pArrayOfString1, pArrayOfString2, pArrayOfString3, pArrayOfString4, pArrayOfString5, pArrayOfString6, pArrayOfString7, pArrayOfString8, pArrayOfString9, pArrayOfString10 }; DWORD bytereads = 0; for (int i = 0; i < 10; i++) { parray[i]->RemoveAll(); if (g_sendhead.length[i] == 0)continue; if (g_sendhead.code[i]) { BYTE *lpszOut = NULL; int nOutSize = 0; LZARI Lzari; #ifdef VC60 Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize); #else Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize); #endif CMemFile memfile; memfile.Attach(lpszOut, nOutSize); Lzari.Release(); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } else { CMemFile memfile; memfile.Attach(g_pData + bytereads, g_sendhead.length[i]); bytereads += g_sendhead.length[i]; CArchive ar(&memfile, CArchive::load); parray[i]->SetSize(g_sendhead.count[i]); for (int ii = 0; ii < parray[i]->GetSize(); ii++) { parray[i]->ElementAt(ii).Serialize(ar); } ar.Close(); memfile.Detach(); } } } catch (...) { } } ////////////////////////////////////////////////////////////////////////// // Image�汾; BOOL LoadImageFromFile(IN Image** pImg, IN CString strPath) { if ( !PathFileExists(strPath) ) return FALSE; if ( *pImg ) delete *pImg; *pImg = NULL; #ifdef UNICODE *pImg = Image::FromFile(strPath); #else BSTR strtmp = _bstr_t(strPath); *pImg = Image::FromFile(strtmp); SysFreeString(strtmp); #endif return TRUE; } BOOL LoadImageFromBuf(IN Image** pImg, IN CString strPath) { if ( !PathFileExists(strPath) ) return FALSE; if ( *pImg ) delete *pImg; *pImg = NULL; CFile fp; CFileException e; BOOL bRet = FALSE; if ( fp.Open(strPath, CFile::modeRead, &e)) { DWORD dwLength = (DWORD)fp.GetLength(); BYTE *pData = new BYTE[dwLength]; fp.Read(pData,dwLength); fp.Close(); bRet = LoadImageFromBuf(pImg, pData, dwLength); if( pData ) delete []pData; } return bRet; } BOOL LoadImageFromBuf(IN Image** pImg, IN BYTE* pBuffer, IN CONST DWORD& nBufLen) { if ( pBuffer == NULL ) return FALSE; if ( *pImg ) delete *pImg; *pImg = NULL; HGLOBAL hMemery = GlobalAlloc(GMEM_MOVEABLE, nBufLen); if ( hMemery == NULL ) return FALSE; BYTE *pMem = (BYTE*)GlobalLock(hMemery); memcpy(pMem, pBuffer, nBufLen); IStream *pstream = NULL; CreateStreamOnHGlobal(hMemery, TRUE, &pstream); *pImg = Image::FromStream(pstream); GlobalUnlock(hMemery); pstream->Release(); return TRUE; } ////////////////////////////////////////////////////////////////////////// // Bitmap�汾; BOOL LoadImageFromFile(IN Bitmap** pImg, IN CString strPath) { if ( !PathFileExists(strPath) ) return FALSE; if ( *pImg ) delete *pImg; *pImg = NULL; #ifdef UNICODE *pImg = Image::FromFile(strPath); #else BSTR strtmp = _bstr_t(strPath); *pImg = Bitmap::FromFile(strtmp); SysFreeString(strtmp); #endif return TRUE; } BOOL LoadImageFromBuf(IN Bitmap** pImg, IN CString strPath) { if ( !PathFileExists(strPath) ) return FALSE; if ( *pImg ) delete *pImg; *pImg = NULL; CFile fp; CFileException e; BOOL bRet = FALSE; if ( fp.Open(strPath, CFile::modeRead, &e)) { DWORD dwLength = (DWORD)fp.GetLength(); BYTE *pData = new BYTE[dwLength]; fp.Read(pData,dwLength); fp.Close(); bRet = LoadImageFromBuf(pImg, pData, dwLength); if( pData ) delete []pData; } return bRet; } BOOL LoadImageFromBuf(IN Bitmap** pImg, IN BYTE* pBuffer, IN CONST DWORD& nBufLen) { if ( pBuffer == NULL ) return FALSE; if ( *pImg ) delete *pImg; *pImg = NULL; HGLOBAL hMemery = GlobalAlloc(GMEM_MOVEABLE, nBufLen); if ( hMemery == NULL ) return FALSE; BYTE *pMem = (BYTE*)GlobalLock(hMemery); memcpy(pMem, pBuffer, nBufLen); IStream *pstream = NULL; CreateStreamOnHGlobal(hMemery, TRUE, &pstream); *pImg = Bitmap::FromStream(pstream); GlobalUnlock(hMemery); pstream->Release(); return TRUE; } ////////////////////////////////////////////////////////////////////////// void LoadImageFromRes(Image **img, LPCTSTR lpszResourceName, LPCTSTR ResourceType) { try { HGLOBAL hGlobal = NULL; HRSRC hSource = NULL; LPVOID lpVoid = NULL; int nSize = 0; BOOL bResult = FALSE; hSource = FindResource(NULL, lpszResourceName, ResourceType); if (hSource == NULL)return; hGlobal = LoadResource(NULL, hSource); if (hGlobal == NULL)return; lpVoid = LockResource(hGlobal); if (lpVoid == NULL)return; nSize = (UINT)SizeofResource(NULL, hSource); LoadImageFromBuf(img, (BYTE*)hGlobal, nSize); UnlockResource(hGlobal); // 16Bit Windows Needs This FreeResource(hGlobal); // 16Bit Windows Needs This (32Bit - Automatic Release) } catch (...) { } } int GetOrientation(Image *image) { try { if (image) { UINT totalBufferSize; UINT numProperties; image->GetPropertySize(&totalBufferSize, &numProperties); // Allocate the buffer that will receive the property items. PropertyItem* pAllItems = (PropertyItem*)malloc(totalBufferSize); // Fill the buffer. image->GetAllPropertyItems(totalBufferSize, numProperties, pAllItems); // Print the id data member of each property item. for (UINT j = 0; j < numProperties; ++j) { if (PropertyTagOrientation == pAllItems[j].id) { short* ptrLong = (short*)(pAllItems[j].value); int ret = (int)*ptrLong; free(pAllItems); return ret; } } free(pAllItems); } } catch (...) { } return 1; } int GetEncoderClsid(const WCHAR* format, CLSID* pClsid) { UINT num = 0; // number of image encoders UINT size = 0; // size of the image encoder array in bytes ImageCodecInfo* pImageCodecInfo = NULL; GetImageEncodersSize(&num, &size); if (size == 0) return -1; // Failure pImageCodecInfo = (ImageCodecInfo*)(malloc(size)); if (pImageCodecInfo == NULL) return -1; // Failure GetImageEncoders(num, size, pImageCodecInfo); for (UINT j = 0; j < num; ++j) { if (wcscmp(pImageCodecInfo[j].MimeType, format) == 0) { *pClsid = pImageCodecInfo[j].Clsid; free(pImageCodecInfo); return j; // Success } } free(pImageCodecInfo); return -1; // FailureFailure } void SaveImageToFile(Image *img, CString path) { try { if (img == NULL)return; CLSID encoderClsid; BSTR bstr = path.AllocSysString(); path.MakeLower(); if (path.Right(3) == "bmp") { GetEncoderClsid(L"image/bmp", &encoderClsid); img->Save(bstr, &encoderClsid, NULL); } else if (path.Right(3) == "png") { GetEncoderClsid(L"image/png", &encoderClsid); img->Save(bstr, &encoderClsid, NULL); } else// if(path.Right (3)=="jpg") { GetEncoderClsid(L"image/jpeg", &encoderClsid); EncoderParameters encoderParameters; ULONG quality; encoderParameters.Count = 1; encoderParameters.Parameter[0].Guid = EncoderQuality; encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues = 1; // Save the image as a JPEG with quality level 100. quality = 100; encoderParameters.Parameter[0].Value = &quality; img->Save(bstr, &encoderClsid, &encoderParameters); } SysFreeString(bstr); } catch (...) { } } void SaveImageToFile2(Image *img, CString path, ULONG quality) { try { if (img == NULL)return; CLSID encoderClsid; BSTR bstr = path.AllocSysString(); path.MakeLower(); if (path.Right(3) == "bmp") { GetEncoderClsid(L"image/bmp", &encoderClsid); img->Save(bstr, &encoderClsid, NULL); } else if (path.Right(3) == "png") { GetEncoderClsid(L"image/png", &encoderClsid); img->Save(bstr, &encoderClsid, NULL); } else// if(path.Right (3)=="jpg") { GetEncoderClsid(L"image/jpeg", &encoderClsid); EncoderParameters encoderParameters; encoderParameters.Count = 1; encoderParameters.Parameter[0].Guid = EncoderQuality; encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues = 1; // Save the image as a JPEG with quality level 100. encoderParameters.Parameter[0].Value = &quality; img->Save(bstr, &encoderClsid, &encoderParameters); } SysFreeString(bstr); } catch (...) { } } /************************************************************************/ /* ������IsWaiter2[8/10/2016 IT]; /* ������; /* ������; /* [IN] id��������; /* [IN] name��ְԱ��; /* [IN] waiterarray����������Ϣ; /* [IN] bWait1�������Ƿ���Ӱʦ; /* [IN] bWait2�������Ƿ�ױʦ/����ʦ1; /* [IN] fscale1��������Ӱʦ1���; /* [IN] fscale2�����ػ�ױʦ/����ʦ1���; /* [IN] bCheckDate���Ƿ�Ҫ���ʱ��; /* [IN] date1����ʼʱ��; /* [IN] date2������ʱ��; /* ���أ�void; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ void IsWaiter2(CString id, CString name, CArray<CStringArray, CStringArray>*waiterarray, BOOL &bWait1, BOOL &bWait2, float &fscale1, float &fscale2, BOOL bCheckDate, CString date1, CString date2) { for (int i = 0; i < waiterarray->GetSize(); i++) { if (id == waiterarray->ElementAt(i).ElementAt(0)) { if (bCheckDate) { if (waiterarray->ElementAt(i).ElementAt(21) < date1 || waiterarray->ElementAt(i).ElementAt(21) > date2 || waiterarray->ElementAt(i).ElementAt(22) != "OK") //if ( waiterarray->ElementAt(i).ElementAt(21) > date2 || waiterarray->ElementAt(i).ElementAt(22) != "OK") { bWait1 = bWait2 = 0; return; } } if (name == waiterarray->ElementAt(i).ElementAt(1)) { bWait1 = 1; fscale1 = atof(waiterarray->ElementAt(i).ElementAt(5)) / 100.0; if (fscale1 == 0)fscale1 = 1; } else if (name == waiterarray->ElementAt(i).ElementAt(2)) { bWait1 = 1; fscale1 = atof(waiterarray->ElementAt(i).ElementAt(6)) / 100.0; } else if (name == waiterarray->ElementAt(i).ElementAt(3)) { bWait1 = 1; fscale1 = atof(waiterarray->ElementAt(i).ElementAt(7)) / 100.0; } else if (name == waiterarray->ElementAt(i).ElementAt(4)) { bWait1 = 1; fscale1 = atof(waiterarray->ElementAt(i).ElementAt(8)) / 100.0; } /////////////////////////////////////////////////////////////////////// if (name == waiterarray->ElementAt(i).ElementAt(9)) { bWait2 = 1; fscale2 = atof(waiterarray->ElementAt(i).ElementAt(13)) / 100.0; if (fscale2 == 0)fscale2 = 1; } else if (name == waiterarray->ElementAt(i).ElementAt(10)) { bWait2 = 1; fscale2 = atof(waiterarray->ElementAt(i).ElementAt(14)) / 100.0; } else if (name == waiterarray->ElementAt(i).ElementAt(11)) { bWait2 = 1; fscale2 = atof(waiterarray->ElementAt(i).ElementAt(15)) / 100.0; } else if (name == waiterarray->ElementAt(i).ElementAt(12)) { bWait2 = 1; fscale2 = atof(waiterarray->ElementAt(i).ElementAt(16)) / 100.0; } return; } } return; } void IsWaiter3(CString id, CString name, CArray<CStringArray, CStringArray>*waiterarray, BOOL &bWait1, BOOL &bWait2, float &fscale1, float &fscale2) { bWait1 = bWait2 = 0; for (int i = 0; i < waiterarray->GetSize(); i++) { if (id == waiterarray->ElementAt(i).ElementAt(0)) { if (name == waiterarray->ElementAt(i).ElementAt(17)) { bWait1 = 1; fscale1 = atof(waiterarray->ElementAt(i).ElementAt(19)) / 100.0; if (fscale1 == 0)fscale1 = 1; } /////////////////////////////////////////////////////////////////////// if (name == waiterarray->ElementAt(i).ElementAt(18)) { bWait2 = 1; fscale2 = atof(waiterarray->ElementAt(i).ElementAt(20)) / 100.0; } return; } } return; } //------------------------------------------------------------------------------ // Remark by Jeff; // ������CheckPhoneType // �������ж��ֻ��������ĸ���Ӫ�̵�; // ������ // phoneno: ���жϵ��ֻ���; // // ���أ�����0��ʾ�ƶ�; 1��ʾ��ͨ; 2��ʾ����; 3��ʾС��ͨ; -1��ʾδ֪��; // // ע�⣺ // �ƶ�: // 139, 138, 137, 136, 135, 134, 159, 158, 152, 151, 150, 157, 188, 187, 144 // ��ͨ: // 130, 131, 132, 155, 156, 186, 185 // ���� : // 133, 153, 189, 180, 181, 173 //------------------------------------------------------------------------------ int CheckPhoneType(CString &phoneno) { if (phoneno.IsEmpty()) return -1; int i = 0; for ( i = 0; i < phoneno.GetLength(); i++) { if (phoneno.GetAt(i) < '0' || phoneno.GetAt(i) > '9')return -1; } if (phoneno.GetAt(0) == '1') { if (phoneno.GetLength() != 11) return -1; int mobile[] = { 139, 138, 137, 136, 135, 134, 159, 158, 152, 151, 150, 157, 188, 187, 144, 182, 147, 183, 184, 178 }; int unicom[] = { 130, 131, 132, 155, 156, 186, 185, 176 }; int telecom[] = { 133, 153, 189, 180, 181, 177, 173 }; int others[] = { 170 }; for (i = 0; i < sizeof(mobile) / sizeof(int); i++) { if (mobile[i] == atoi(phoneno.Left(3))) { return 0; } } for (i = 0; i < sizeof(unicom) / sizeof(int); i++) { if (unicom[i] == atoi(phoneno.Left(3))) { return 1; } } for (i = 0; i < sizeof(telecom) / sizeof(int); i++) { if (telecom[i] == atoi(phoneno.Left(3))) { return 2; } } for (i = 0; i < sizeof(others)/sizeof(int);i++) { if ( others[i] == atoi((phoneno.Left(3)))) { return 3; } } return -1; } return -1; } /************************************************************************/ /* ����:CheckDateOK ����:�ж�������Ч��; ����: IN: str Ҫ�жϵ�����; IN: bLunanr �Ƿ���ũ������; ����: ������Ч����TRUE; Ҫ��: ע��: ��:Jeff ����:2015-04-28 ����:����������Ч���ж�,ͬʱ֧��ũ������; */ /************************************************************************/ BOOL CheckDateOK(IN CString &str, IN CONST BOOL &bLunanr) { if (str.IsEmpty())return 1; CString tip; int i; CString demo = CTime::GetCurrentTime().Format("%Y-%m-%d"); if (str.GetLength() != demo.GetLength()) goto ll; //2009-01-01 if (str.GetAt(4) != '-') goto ll; if (str.GetAt(7) != '-') goto ll; for (i = 0; i < str.GetLength(); i++) { if (i == 4 || i == 7)continue; if (str.GetAt(i) < '0' || str.GetAt(i) > '9') goto ll; } #if 1 if (!bLunanr) return IsValidDate(str); else return IsValidLunanrDate(str); #else return 1; #endif ll: tip.Format("����:%s��ʽ����!\r\n����:%s", str, demo); AfxMessageBox(tip, MB_ICONSTOP); return 0; } BOOL CheckBadWords(CString str, BOOL bMsg) { CString badwords[165] = { \ "��call5.me��", \ "���ɲ�020", \ "88btt.com����400611", \ "400678165", \ "������", \ "������", \ "ʮ�˴�", \ "���㵺", \ "���������", \ "�㶫�غ�", \ "����", \ "����", \ "fa lun", \ "ǿ��", \ "dafa", \ "falun", \ "SIM���齱", \ "�չ�", \ "�տ�", \ "����", \ "���", \ "����", \ "������", \ "����", \ "����", \ "��", \ "��", \ "���Ԫ", \ "��ҩ", \ "���㵺", \ "��ͻ", \ "��ͻ��˹̹��˹���˶�", \ "����", \ "����", \ "����", \ "����", \ "����", \ "����", \ "����", \ "����", \ "�� �� ��", \ "��.��.��", \ "����", \ "����", \ "����", \ "����", \ "����", \ "����", \ "����", \ "����", \ "������", \ "����", \ "����", \ "������", \ "����", \ "�Źָ�", \ "���������ʼ�", \ "��ׯ", \ "��־", \ "��־", \ "������", \ "����", \ "��ë���Ļ�", \ "��Ů", \ "�����", \ "���˵�", \ "������", \ "������", \ "����", \ "��ͽ", \ "����", \ "��������", \ "�š���", \ "��.��", \ "����", \ "��-��", \ "����", \ "����", \ "����", \ "����֮������", \ "�鶯��", \ "���ϲ�", \ "����", \ "������", \ "��ɫ�����ֻ�", \ "����֮��", \ "����", \ "��ҩ", \ "����", \ "����", \ "���", \ "�Ⱥ�", \ "ǹ֧", \ "ǿ��", \ "������", \ "����", \ "����Ѷ", \ "�������ʱ�²ο�", \ "������������", \ "������ʵ����", \ "��Ȩ", \ "������", \ "����", \ "����", \ "����", \ "ɫ��", \ "ɵB", \ "����", \ "ʮ����", \ "ʾ��", \ "�����", \ "̨*��", \ "�صȽ�", \ "����", \ "ͻ��˹̹", \ "�Ʒ�", \ "���˵�", \ "�¼ұ�", \ "����", \ "����ܲ�", \ "С����", \ "�»��ٱ�", \ "�»�����", \ "���ŷ���", \ "����", \ "��`��", \ "ѹ��", \ "����", \ "�������Ϲ�����", \ "ӡ����˹��������", \ "����", \ "����", \ "�췴", \ "������", \ "��ѹ", \ "����", \ "����", \ "���η粨", \ "�ж��߽���Լ", \ "�й�����", \ "�л����", \ "�н�", \ "���ݻ�", \ "�Է�", \ "�����˶�", \ "����", \ "����", \ "�鸾", \ "����", \ "���ϵ���", \ "�ϴ��ֹ�˾", \ "�ϴ�����", \ "����", \ "116114", \ "��������", \ "��ʢͶ��", \ "���Ź���", \ "����", \ "��Ȼ���", \ "��ӶBJL��", \ "ϴ*���Ż�", \ "�����ֲ���", \ "18266381922", \ "�ز���", \ "�������ͨ�Ƴ����Ŷ���Ʊ��ʵʱ" }; for (int i = 0; i < 165; i++) { g_temp = badwords[i]; if (str.Find(g_temp) != -1) { // AfxMessageBox("��Ϣ�����̽�ֹ�ķǷ��ַ�:("+g_temp+")ϣ�����½�!"); return 0; } } return 1; } ///Ŀ¼�Ƿ���ڵļ�飺 ֧�������ļ��� bool CheckFolderFileExist(CString &strPath) { CString path = strPath; CFile fp; if (fp.Open(path, CFile::modeRead)) { fp.Close(); return 1; } if (strPath.Right(1) != "\\") path += "\\"; path += "zaqw1234.dat"; DeleteFile(path); // ɾ��zaqw1234.dat�ļ�; if (fp.Open(path, CFile::modeCreate) == 0) return 0; fp.Close(); if (PathFileExists(path)) // Jeff ɾ���ļ�ǰ�ж��ļ��Ƿ����; ::DeleteFile(path); // ɾ��zaqw1234.dat�ļ�; return 1; } int FindArray(CStringArray *pArray, const CString &Str) { for (int i = 0; i < pArray->GetSize(); i++) { if (pArray->ElementAt(i) == Str) return i; } return -1; } void FillLength(CString &str, int length) { while (str.GetLength() < length) str += " "; } // ���Ҳ�������ʷ���ݿ���-1; int GetYearPos(int year) { for (int i = 0; i < g_hisyeararray.GetSize(); i++) { if (year == atoi(g_hisyeararray.ElementAt(i).ElementAt(0))) return i; } return -1; } /************************************************************************/ /* ������GIsHalfHZ �������ж�������ַ������һ���ַ��Ƿ��Ǻ���; ������ ���أ������һ�������ĺ���,����TRUE������FALSE; */ /************************************************************************/ BOOL GIsHalfHZ(const CString &str) { #if 0 // ��������ж�,������һ��Ӣ����ĸʱ; int len = str.GetLength(); BOOL IsHalf = FALSE; for (int i = 0; i < len; i++) { if (str.GetAt(i) < 0) IsHalf = !IsHalf; } return IsHalf; #else #if 1 INT nLength = str.GetLength(); BOOL IsHalf = FALSE; for ( INT i = 0; i < nLength; ) { if ( str.GetAt(i) < 0 ) { i += 2; if ( i > nLength ) IsHalf = TRUE; } else { i++; } } return IsHalf; #else INT nLength = str.GetLength(); INT wSize = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); WCHAR *szStr = new WCHAR[wSize]; INT nnnnn = 0; INT nCount = 0; INT convresult = MultiByteToWideChar(CP_ACP, 0, str, -1, szStr, wSize); for ( INT i = 0; i < wSize; i++ ) { if ( (szStr[i] >= 0x2E80 && szStr[i] <= 0xFE4F) || ( szStr[i] >= 0xFF00 && szStr[i] <= 0xFFEF) ) nCount++; else nnnnn++; } return !(nCount%2); #endif #endif } void WriteTitle(CString str) { g_title = str; CStdioFile fp; fp.Open(g_mainpath + "\\title.txt", CFile::modeWrite | CFile::modeCreate); fp.WriteString(str); fp.Close(); } CString GetIP(CString branch) { for (int i = 0; i < g_brancharray.GetSize(); i++) { if (g_domain == g_brancharray.ElementAt(i).ElementAt(2)) { //if(g_serverbak.Find (".ly.com")!=-1) return g_server; CString ip = g_serverbak; MyGetIPByName(ip); return ip; } if (branch == g_brancharray.ElementAt(i).ElementAt(0)) { return g_brancharray.ElementAt(i).ElementAt(1); } } return ""; } CString GetBranchIPbyId( IN LPCTSTR lpStrBranchId ) { if ( g_domain.CompareNoCase(lpStrBranchId) == 0 ) { return g_server; } CString strBranchIP = _T(""); INT nCount = g_brancharray.GetSize(); for ( int i = 0; i < nCount; i++ ) { if ( g_brancharray.ElementAt(i).ElementAt(2).CompareNoCase(lpStrBranchId) == 0 ) { strBranchIP = g_brancharray.ElementAt(i).ElementAt(1); break; } } return strBranchIP; } CString GetBranchNamebyId( IN LPCTSTR lpStrBranchId ) { if ( g_domain.CompareNoCase(lpStrBranchId) == 0 ) { return _T(""); } CString strBranchName = _T(""); INT nCount = g_brancharray.GetSize(); for ( int i = 0; i < nCount; i++ ) { if ( g_brancharray.ElementAt(i).ElementAt(2).CompareNoCase(lpStrBranchId) == 0 ) { strBranchName = g_brancharray.ElementAt(i).ElementAt(0); break; } } return strBranchName; } BOOL IsHanZi(CString str) { TBYTE ucHigh, ucLow; for (int i = 0; i < str.GetLength(); i++) { if ((TBYTE)str[i] < 0x80) { continue; } ucHigh = (TBYTE)str[i]; ucLow = (TBYTE)str[i + 1]; if (ucHigh < 0xa1 || ucLow < 0xa1) { continue; } return 1; } return 0; } int GetType(CString str) { if (IsHanZi(str))return 0; BOOL bDigit = 1; BOOL bAlpha = 1; for (int i = 0; i < str.GetLength(); i++) { if (!::isdigit(str.GetAt(i))) bDigit = 0; if (!((str.GetAt(i) <= 'z' && str.GetAt(i) >= 'a') || (str.GetAt(i) <= 'Z' && str.GetAt(i) >= 'A'))) //else if(!::isalpha ( ((unsigned char)str.GetAt (i)))) bAlpha = 0; if (bDigit == 0 && bAlpha == 0)return 0; } if (bDigit) { return 0; } else if (bAlpha) { return 2; } else return 0; } CString FilterBZ(CString &bz) { bz.Replace("'", ""); if (bz.GetLength() > 1023) { AfxMessageBox("����̫��, �ַ���������ȡ!", MB_ICONSTOP); bz = bz.Left(1023); } return bz; } // GetWidth()�ij�����CRect�ij����Dz�һ���ĵ�λֵ,��Ҫת���ʺϵı���;(һ����ͼƬ�����سߴ�,һ��DC�Ĵ�С�ߴ�) // ��ͼƬ�ߴ����豸�ߴ����ת���ʺϵı���; void RectFitDes(int width, int height, CRect &rc) { try { if (width == 0 || height == 0)return; // ͼƬ��������; float fscale = (float)width / (float)height; // �豸��������; float rcscale = ((float)rc.Width()) / ((float)rc.Height()); int rcwid = rc.Width(); int rchei = rc.Height(); int dt = 0; // Jeff.����豸�������� < ͼƬ��������;(����ͬ������,��Խ�����ֵԽС,���Դ�ʱͼƬ�ߴ� �� ��ʾ�豸�ijߴ����,Ҫ�Եø���) if (rcscale < fscale) { // Jeff.remarks // ������ʾ�豸�Ĵ�С,��ʹ֮������ͼƬ�ߴ�;(������������,Ҫ���ڻ����ͼƬ�ij�������) // ���������ַ���ʹ�� rcscale >= fscale ����ʽ������ // ----------------------------------------------- // ����1����ʾ�豸����xֵ,������������ʽx��ֵ���� // (rc.Width()+x) / rc.Height() >= width/height; // ����2����ʾ�豸��xֵ,������������ʽx��ֵ���� // (rc.Width()) / (rc.Height()-x) >= width/height; //------------------------------------------------ // ���ַ�����������ʽΪ�� // x >= rc.Height() - rcWidth()*(height/width); // �� x >= rc.Height() - rcWidth()/fscale; //------------------------------------------------ dt = (rchei - rcwid / fscale) / 2; rc.top += dt; rc.bottom -= dt; } else { dt = (rcwid - rchei*fscale) / 2; rc.left += dt; rc.right -= dt; } } catch (...) { } } BOOL IsHasRights(int pos) // Jeff,������ĺ���; { return 1; if (g_user.rights.GetLength() > pos) { BOOL ret = atoi(g_user.rights.Mid(pos, 1)); if (ret == 0)AfxMessageBox("û�����Ȩ��!", MB_ICONINFORMATION); return ret; } AfxMessageBox("û�����Ȩ��!", MB_ICONINFORMATION); return 0; } BOOL IsHasRights2(int pos)// Jeff,������ĺ���; { return 1; if (g_user.rights.GetLength() > pos) { BOOL ret = atoi(g_user.rights.Mid(pos, 1)); return ret; } return 0; } BOOL IsHasRightsnew(int pos) { if (g_user.rights.GetLength() > pos) { BOOL ret = atoi(g_user.rights.Mid(pos, 1)); if (ret == 0) AfxMessageBox("û�����Ȩ��! ����ϵͳ����Ա��ϵ!", MB_ICONINFORMATION); return ret; } AfxMessageBox("û�����Ȩ��! ����ϵͳ����Ա��ϵ!", MB_ICONINFORMATION); return 0; } BOOL IsHasRights2new(int pos) { if (g_user.rights.GetLength() > pos) { BOOL ret = atoi(g_user.rights.Mid(pos, 1)); return ret; } return 0; } BOOL IsHasRightsnew2(int pos, CString rights) { if (rights.GetLength() > pos) { BOOL ret = atoi(rights.Mid(pos, 1)); if (ret == 0)AfxMessageBox("û�����Ȩ��! ����ϵͳ����Ա��ϵ!", MB_ICONINFORMATION); return ret; } AfxMessageBox("û�����Ȩ��! ����ϵͳ����Ա��ϵ!", MB_ICONINFORMATION); return 0; } /******************************************************************************************** /* Syntax /* void FirstLetter(int nCode, CString& strLetter) /* Remarks: /* Get the first letter of pinyin according to specified Chinese character code. /* Parameters: /* nCode - the code of the chinese character. /* strLetter - a CString object that is to receive the string of the first letter. /* Return Values: /* None. /* Author: /* lixiaosan /* Create Date: /* 05-26-2006 /********************************************************************************************/ void FirstLetter(int nCode, CString& strLetter) { if (nCode >= 1601 && nCode < 1637) strLetter = _T("A"); if (nCode >= 1637 && nCode < 1833) strLetter = _T("B"); if (nCode >= 1833 && nCode < 2078) strLetter = _T("C"); if (nCode >= 2078 && nCode < 2274) strLetter = _T("D"); if (nCode >= 2274 && nCode < 2302) strLetter = _T("E"); if (nCode >= 2302 && nCode < 2433) strLetter = _T("F"); if (nCode >= 2433 && nCode < 2594) strLetter = _T("G"); if (nCode >= 2594 && nCode < 2787) strLetter = _T("H"); if (nCode >= 2787 && nCode < 3106) strLetter = _T("J"); if (nCode >= 3106 && nCode < 3212) strLetter = _T("K"); if (nCode >= 3212 && nCode < 3472) strLetter = _T("L"); if (nCode >= 3472 && nCode < 3635) strLetter = _T("M"); if (nCode >= 3635 && nCode < 3722) strLetter = _T("N"); if (nCode >= 3722 && nCode < 3730) strLetter = _T("O"); if (nCode >= 3730 && nCode < 3858) strLetter = _T("P"); if (nCode >= 3858 && nCode < 4027) strLetter = _T("Q"); if (nCode >= 4027 && nCode < 4086) strLetter = _T("R"); if (nCode >= 4086 && nCode < 4390) strLetter = _T("S"); if (nCode >= 4390 && nCode < 4558) strLetter = _T("T"); if (nCode >= 4558 && nCode < 4684) strLetter = _T("W"); if (nCode >= 4684 && nCode < 4925) strLetter = _T("X"); if (nCode >= 4925 && nCode < 5249) strLetter = _T("Y"); if (nCode >= 5249 && nCode < 5590) strLetter = _T("Z"); } /******************************************************************************************** /* Syntax /* GetFirstLetter(CString strName, CString& strFirstLetter) /* Remarks: /* Get the first letter of pinyin according to specified Chinese character. /* Parameters: /* strName - a CString object that is to be parsed. /* strFirstLetter - a CString object that is to receive the string of the first letter. /* Return Values: /* None. /* Author: /* lixiaosan /* Create Date: /* 05-26-2006 /********************************************************************************************/ void GetFirstLetter(CString strName, CString& strFirstLetter) { TBYTE ucHigh, ucLow; int nCode; CString strRet; strFirstLetter.Empty(); for (int i = 0; i < strName.GetLength(); i++) { if ((TBYTE)strName[i] < 0x80) { strRet = strName.Mid(i, 1); strRet.MakeUpper(); strFirstLetter += strRet; continue; } ucHigh = (TBYTE)strName[i]; ucLow = (TBYTE)strName[i + 1]; if (ucHigh < 0xa1 || ucLow < 0xa1) continue; else nCode = (ucHigh - 0xa0) * 100 + ucLow - 0xa0; FirstLetter(nCode, strRet); strFirstLetter += strRet; i++; } } CString newGUID() { CString str; GUID guid; CoInitialize(NULL); if (S_OK == ::CoCreateGuid(&guid)) { str.Format( "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}", guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); } CoUninitialize(); return str.Left(28); } CString GetNameFromDomain(CString domain) { for (int i = 0; i < g_brancharray.GetSize(); i++) { if (domain == g_brancharray.ElementAt(i).ElementAt(2)) { return g_brancharray.ElementAt(i).ElementAt(0); } } return ""; } void ConvertToPrice(CString &str) { if (str.Find('.') == -1)return; str.TrimRight('0'); str.TrimRight('.'); } int GetLengthEx(CString str) { wchar_t wstr[500]; int k = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, str, strlen(str), wstr, 500); return k; } inline int MultiByteLengthConvertToWideCharLength(/*LPCSTR*/LPCCH lpString) { return MultiByteToWideChar(CP_ACP, 0, lpString, -1, NULL, 0); } //�ж��ַ��Ƿ�������(0 �C 9) BOOL myisdigit(CString str) { for (int i = 0; i < str.GetLength(); i++) { if (!::isdigit(str.GetAt(i))) return 0; } return 1; } DWORD FindAppProcessID(CString path) { try { HANDLE handle = ::CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); PROCESSENTRY32 Info; Info.dwSize = sizeof(PROCESSENTRY32); path.MakeLower(); if (::Process32First(handle, &Info)) { do { CString ss = Info.szExeFile; ss.MakeLower(); if (ss.Find(path) != -1 || (!ss.CompareNoCase(path))) { ::CloseHandle(handle); return Info.th32ProcessID; } } while (::Process32Next(handle, &Info)); ::CloseHandle(handle); } return -1; } catch (...) { } } BOOL isInnerIP(DWORD a_ip) // Jeff.�ж��Ƿ�������? { BOOL bValid = 0; if ((a_ip >> 24 == 0xa) || (a_ip >> 16 == 0xc0a8) || (a_ip >> 22 == 0x2b0)) { bValid = 1; } return bValid; } void MyGetIPByName2(CString &name) { CString strIP = name; name.Empty(); DWORD dwServerIP = 0; HOSTENT *host = gethostbyname(strIP); struct in_addr addr; if (host != NULL) { for (int i = 0; host->h_addr_list[i] != NULL; i++) { memset(&addr, 0, sizeof(addr)); memcpy(&addr.S_un.S_addr, host->h_addr_list[i], host->h_length); dwServerIP = ntohl(addr.S_un.S_addr); BYTE* pIP = (BYTE*)&dwServerIP; name.Format(_T("%d.%d.%d.%d"), pIP[3], pIP[2], pIP[1], pIP[0]); } } } void MyGetIPByName(CString &name) // Jeff.���ݼ�������ƻ�ȡIP��ַ; { g_serverarray.RemoveAll(); CString strIP = name; name.Empty(); DWORD dwServerIP = 0; HOSTENT *host = gethostbyname(strIP); // Jeff.���б���������������; struct in_addr addr; if (host != NULL) { // Jeff.��������������������IP��ַ; for (int i = 0; host->h_addr_list[i] != NULL; i++) { memset(&addr, 0, sizeof(addr)); memcpy(&addr.S_un.S_addr, host->h_addr_list[i], host->h_length); dwServerIP = ntohl(addr.S_un.S_addr); BYTE* pIP = (BYTE*)&dwServerIP; name.Format(_T("%d.%d.%d.%d"), pIP[3], pIP[2], pIP[1], pIP[0]); g_serverarray.Add(name); } } while (g_serverarray.GetSize() > 1) { CString name; BOOL bFind = 0; for (int i = 0; i < g_serverarray.GetSize(); i++) { DWORD dwServerIP = inet_addr(g_serverarray.ElementAt(i)); dwServerIP = htonl(dwServerIP);//���˲���ȷ if (isInnerIP(dwServerIP) == 0) { g_serverarray.RemoveAt(i); bFind = 1; break; } } if (bFind == 0) { break; } } } int IsExistFolder(char *szPath)//���ж��ļ��к��ļ��Ĵ���; { if ((_access(szPath, 0)) != -1) { if ((_access(szPath, 2)) != -1) { return 1; } } else { return -1; } } CString GetW(CString str) { int x = atoi(str); if (x > 9999) { str.Format("%d", x); str = str.Right(5); str = str.Left(1); return str; } return ""; } CString GetK(CString str) { int x = atoi(str); if (x > 999) { str.Format("%d", x); str = str.Right(4); str = str.Left(1); return str; } return ""; } CString GetB(CString str) { int x = atoi(str); if (x > 99) { str.Format("%d", x); str = str.Right(3); str = str.Left(1); return str; } return ""; } CString GetS(CString str) { int x = atoi(str); if (x > 9) { str.Format("%d", x); str = str.Right(2); str = str.Left(1); return str; } return ""; } CString GetG(CString str) { int x = atoi(str); if (x > 0) { str.Format("%d", x); str = str.Right(1); return str; } return ""; } CString GetHMoney(CString str) { if (str.IsEmpty())return ""; if (str == "0")return "��"; if (atoi(str) < 1 || atoi(str) > 9)return ""; CString ret[] = { "Ҽ", "��", "��", "��", "��", "½", "��", "��", "��" }; return ret[atoi(str) - 1]; } BOOL CheckDateOK2(CString str) { if (str.IsEmpty())return 0; CString tip; int i; CString demo = CTime::GetCurrentTime().Format("%Y-%m-%d"); if (str.GetLength() != demo.GetLength()) goto ll; //2009-01-01 if (str.GetAt(4) != '-') goto ll; if (str.GetAt(7) != '-') goto ll; for (i = 0; i < str.GetLength(); i++) { if (i == 4 || i == 7)continue; if (str.GetAt(i) < '0' || str.GetAt(i) > '9') goto ll; } return 1; ll: return 0; } CString GetDomainFromBranch(CString branch) { if (branch.IsEmpty())return ""; for (int i = 0; i < g_brancharray.GetSize(); i++) { if (branch == g_brancharray.ElementAt(i).ElementAt(0)) { return g_brancharray.ElementAt(i).ElementAt(2); } } return ""; } CString GetBranchPhotoPath(CString branch) { if (branch.IsEmpty())return ""; for (int i = 0; i < g_brancharray.GetSize() - 1; i++) { if (branch == g_brancharray.ElementAt(i).ElementAt(0)) { return "\\" + g_brancharray.ElementAt(i).ElementAt(2); } } return ""; } CTime GetTmFromStr(CString date) { try { CTime tm(atoi(date.Mid(0, 4)), atoi(date.Mid(5, 2)), atoi(date.Mid(8, 2)), 0, 0, 0); CString ss; ss.Format("%d-%d-%d", tm.GetYear(), tm.GetMonth(), tm.GetDay()); return tm; } catch (...) { date = "1980-01-01"; CTime tm(atoi(date.Mid(0, 4)), atoi(date.Mid(5, 2)), atoi(date.Mid(8, 2)), 0, 0, 0); return tm; } } //--------------------------------------------------------------------- // add by Jeff 2014.10.24 // ������ȫ�ֺ���lyfzCopyFileEx // �������ļ����ơ� // ������ // lpExistingFileName����Ҫ������Դ�ļ���; // lpNewFileName�� ��Ҫ������Ŀ���ļ���; // bFailIfExists�� ���Ŀ���Ѿ����ڣ���������True����������������Ŀ�꣨false�� // ���أ���CopyFile����һ��; //--------------------------------------------------------------------- BOOL lyfzCopyFileEx(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, const BOOL &bFailIfExists) { // 1.����Ǹ���ѡ��; if (!bFailIfExists) return CopyFile(lpExistingFileName, lpNewFileName, bFailIfExists); // 2.������Ǹ���ѡ��; TCHAR szNewFileName[_MAX_PATH] = { 0 }; TCHAR szDrive[_MAX_DRIVE] = { 0 }; TCHAR szDir[_MAX_DIR] = { 0 }; TCHAR szFna[_MAX_FNAME] = { 0 }; TCHAR szExt[_MAX_EXT] = { 0 }; sprintf(szNewFileName, "%s", lpNewFileName); _tsplitpath(szNewFileName, szDrive, szDir, szFna, szExt); int nIndex = 1; while (PathFileExists(szNewFileName)) { sprintf(szNewFileName, "%s%s%s (%d)%s", szDrive, szDir, szFna, nIndex++, szExt); } return CopyFile(lpExistingFileName, szNewFileName, bFailIfExists); } //--------------------------------------------------------------------- // add by Jeff 2014.10.24 // ������ȫ�ֺ���lyfzImportImage,���ֽڰ汾����UNICODE // ����������ͼƬ�� // ������ // lpDestDirectory�� �ļ������Ŀ��Ŀ¼; // strArrayOfImage�� Ҫ�����ͼƬ�ļ�����; // bFailIfExists�� ���Ŀ���Ѿ����ڣ���������True����������������Ŀ�꣨false�� // ���أ� // // ˵��:�ڵ���lyfzImportImageǰ����Ҫ�Դ��ݵIJ���������Ч����֤ // 1.��֤�β�lpDestDirectory��Ӧ��ʵ���Ƿ�����Ч��Ŀ¼��������Ŀ¼�ķǷ��ַ����ڣ� // 2.��֤�β�strArrayOfImage��Ӧ��ʵ�������Ƿ����0; // ���У��û��ͨ��,Ӧ�þܾ���lyfzImportImage���Է�ֹ��������� //--------------------------------------------------------------------- void lyfzImportImage(LPCTSTR lpDestDirectory, CStringArray &strArrayOfImage, const BOOL &bFailIfExists) { // ���ݸ�lyfzCreateDirectory�IJ����淶��; int nlen = strlen(lpDestDirectory); TCHAR szNewFileName[_MAX_PATH] = { 0 }; TCHAR szTempDirectory[_MAX_PATH] = { 0 }; if (lpDestDirectory[nlen - 1] != '\\') sprintf(szTempDirectory, "%s\\", lpDestDirectory); else sprintf(szTempDirectory, "%s", lpDestDirectory); // ��Ŀ¼����Ŀ¼�����ڴ���; lyfzCreateDirectory(szTempDirectory); // ��������; CString strImage; INT_PTR nSize = strArrayOfImage.GetSize(); for (INT_PTR i = 0; i < nSize; i++) { strImage = strArrayOfImage.ElementAt(i); strImage = strImage.Mid(strImage.ReverseFind('\\') + 1); //strImage = strImage.Left(strImage.ReverseFind('.')); sprintf(szNewFileName, "%s%s", szTempDirectory, strImage); lyfzCopyFileEx(szNewFileName, strArrayOfImage.ElementAt(i), bFailIfExists); } } //--------------------------------------------------------------------- // add by Jeff 2014.10.25 // ������ȫ�ֺ���lyfzCreateDirectory,���ֽڰ汾����UNICODE // ����������Ŀ¼����Ŀ¼�ļ���; // ������ // lpDestDirectory��Ŀ¼,������"E:\lyfzdb\����\"��ʽ,Ŀ¼��������"\",�������һ����Ŀ¼�������� // ����ʹ��ϵͳ_tsplitpath���ָ�Ŀ¼,�����ᱣ�����һ��"\"б��; // ���أ��ɹ���������TRUE; //--------------------------------------------------------------------- BOOL lyfzCreateDirectory(LPCTSTR lpDestDirectory) { BOOL bExists = FALSE; TCHAR szNewFileName[_MAX_PATH] = { 0 }; TCHAR szDrive[_MAX_DRIVE] = { 0 }; TCHAR szDir[_MAX_DIR] = { 0 }; TCHAR szFna[_MAX_FNAME] = { 0 }; TCHAR szExt[_MAX_EXT] = { 0 }; int nIndex = 0; do { bExists = PathFileExists(lpDestDirectory); if (!bExists) { memset(szDrive, 0, _MAX_DRIVE); memset(szDir, 0, _MAX_DIR); memset(szFna, 0, _MAX_FNAME); memset(szExt, 0, _MAX_EXT); lyfzSplitpath(lpDestDirectory, szDrive, szDir, ++nIndex); sprintf(szNewFileName, _T("%s%s"), szDrive, szDir); CreateDirectory(szNewFileName, NULL); //if (FALSE == CreateDirectory(szNewFileName, NULL)) //{ //ShowSystemErrorInfo(CString("����Ŀ¼������"), GetLastError()); //return FALSE; // continue; //} } } while (!bExists); return TRUE; } //--------------------------------------------------------------------- // add by Jeff 2014.10.24 // ������ȫ�ֺ���tSplitpath,���ֽڰ汾����UNICODE // ��������ϵͳWindows C++���п⺯��_tsplitpath�� // ������ // // ���أ� //--------------------------------------------------------------------- void lyfzSplitpath(const char *path, char *drive, char *dir, const int &nTimes) { int nlen = strlen(path); int i = 0; int npoint = 0; // '.' int nsprit = 0; // '\\' int ncolon = 0; // ':' int ntimes = -1; while (nlen > i++) { if (path[i] == ':') ncolon = i; else if (path[i] == '\\') { if (nTimes == ntimes++) break; nsprit = i; } } memcpy(drive, path, ncolon + 1); memcpy(dir, &path[ncolon + 1], nsprit - ncolon); } //--------------------------------------------------------------------- // Jeff add 2014.06.23; // ������ShowErrorInfo // ������ // ����: // lpszFunction��������; // dwError��������; // ���أ� //--------------------------------------------------------------------- void ShowSystemErrorInfo(CString &strDescription, const DWORD &dwError) { #if 0 LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL); // Display the error message and exit the process CString strDisplay; strDisplay.Format("ʧ�ܴ�����=%d,Windows�ڲ�����:%s", dwError, lpMsgBuf); strDescription += strDisplay; AfxMessageBox(strDescription); LocalFree(lpMsgBuf); #endif LPVOID lpMsgBuf; BOOL fOk = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL); if (!fOk) { // Is it a network-related error? HMODULE hDll = LoadLibraryEx(TEXT("netmsg.dll"), NULL, DONT_RESOLVE_DLL_REFERENCES); if (hDll != NULL) { FormatMessage( FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, hDll, dwError, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), (LPTSTR)&lpMsgBuf, 0, NULL); FreeLibrary(hDll); } } if (lpMsgBuf != NULL) { CString strDisplay; strDisplay.Format("%s.������=%d,Windows����:%s", strDescription, dwError, (LPCTSTR)LocalLock(lpMsgBuf)); //WriteLogin(strDisplay); AfxMessageBox(strDisplay); LocalFree(lpMsgBuf); } else { //WriteLogin(strDescription); AfxMessageBox("δ֪������"); } } /************************************************************************/ /* ������WriteTextLog[7/28/2016 IT]; /* ������д�ı���־; /* ������; /* [IN] ��; /* ���أ�void; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ void WriteTextLog(const TCHAR *format, ...) { try { // ��������־·��; TCHAR szlogpath[MAX_PATH] = {0}; static TCHAR szModulePath[MAX_PATH] = {0}; static TCHAR szFna[_MAX_DIR] = { 0 }; if ( szModulePath[0] == _T('\0') ) { TCHAR szDrive[_MAX_DRIVE] = { 0 }; TCHAR szDir[_MAX_DIR] = { 0 }; TCHAR szExt[_MAX_DIR] = { 0 }; ::GetModuleFileName(NULL, szModulePath, sizeof(szModulePath) / sizeof(TCHAR)); _splitpath(szModulePath, szDrive, szDir, szFna, szExt); strcpy(szModulePath, szDrive); strcat(szModulePath, szDir); } sprintf(szlogpath, _T("%s�ͻ�����־.txt"), szModulePath); // ���ļ�; CStdioFile fp; if (PathFileExists(szlogpath)) { if ( !fp.Open(szlogpath, CFile::modeWrite) ) { return; } fp.SeekToEnd(); } else { if ( !fp.Open(szlogpath, CFile::modeCreate | CFile::modeWrite) ) return; } // ��ʽ��ǰ������������; TCHAR* old_locale = _tcsdup(_tsetlocale(LC_CTYPE, NULL)); _tsetlocale(LC_CTYPE, _T("chs"));//�趨����; // ��ʽ����־����; va_list args = NULL; int len = 0; static TCHAR buffer[8192] = {0}; va_start( args, format ); /*len = printf( format, args ) + 1;// VC6.0��printf���ڰ�ȫ����������; if ( len == 0 ) { TCHAR *pErr = strerror(errno); OutputDebugString(pErr); } buffer = (TCHAR*)malloc( len * sizeof(TCHAR) ); if ( buffer == NULL ) { _tsetlocale(LC_CTYPE, old_locale); free(old_locale);//��ԭ�����趨; fp.Close(); return; }*/ memset(buffer, 0, 8192); vsprintf( buffer, format, args ); // C4996 // Note: vsprintf is deprecated; consider using vsprintf_s instead // ����־�������뵽�ļ���; fp.WriteString( CTime::GetCurrentTime().Format(_T("%Y-%m-%d %H:%M:%S ")) ); fp.WriteString(buffer); fp.WriteString(_T("\n")); // �ر��ļ����ͷ���Դ�����û�ԭ��������; //free( buffer ); _tsetlocale(LC_CTYPE, old_locale); free(old_locale);//��ԭ�����趨; fp.Close(); } catch (CException *e) { e->ReportError(); e->Delete(); } } //--------------------------------------------------------------------- // add by Jeff 2014.10.27 // ������ȫ�ֺ���IsDirectoryLegitimate,���ֽڰ汾����UNICODE // �������ж�һ��Ŀ¼·���ַ������Ƿ����ںϷ��ġ��ɴ�����Ŀ¼·���� // ������strDirectory ����֤��·���ַ���; // // ���أ��Ϸ�·������TRUE; //--------------------------------------------------------------------- BOOL IsDirectoryLegitimate(const CString &strDirectory) { if (strDirectory.Find('/') != -1 || strDirectory.Find('\\') != -1 || strDirectory.Find(':') != -1 || strDirectory.Find('*') != -1 || strDirectory.Find('?') != -1 || strDirectory.Find('\"') != -1 || strDirectory.Find('>') != -1 || strDirectory.Find('<') != -1 || strDirectory.Find('|') != -1 ) return FALSE; return TRUE; } //---------------------------------------------------------------------- // remark by Jeff 2014.11.08 // ������ExportCutImageToFile // �����������ü�ͼƬ��ָ��Ŀ¼; // ������ // lpOrderCutImageInfo:�����ŵIJü���Ƭ��Ϣ; // lpSrcDirectory:ԭͼƬ·��; // lpOrderCutImageInfo��ʽ����Ƭ��|�ü�����|ԭƬ��|ԭƬ��|�ü�left|�ü�top|�ü�bottom|�ü�rigth // 225:5X7,1440,900,88,0,1352,900;228:5X7,1440,900,88,0,1352,900;224:5X7,1440,900,88,0,1352,900;227:10��,1440,900,56,0,1384,900;229:10��ˮ��,1440,900,570,232,870,671; // lpSaveDirectory:������Ƭ�ı���·��; // ���أ��� //---------------------------------------------------------------------- void ExportCutImageToFile(LPCCH lpOrderCutImageInfo, LPCCH lpSrcDirectory, LPCCH lpSaveDirectory) { if (FALSE == lyfzCreateDirectory(lpSaveDirectory)) return; CStringArray saSrcPhoto; GetCountOfOrderFolderPhotoFile(lpSrcDirectory, saSrcPhoto); CString strImageName; // ��Ƭ��; CString strCutScheme; // �ü�����; CRect rtCut; // Ҫ�ü�������; CString strTemp; CString strImageInfo(lpOrderCutImageInfo); int nIndex = -1; do { // 225:5X7,1440,900,88,0,1352,900; nIndex = strImageInfo.Find(';'); strTemp = strImageInfo.Left(nIndex); strImageInfo = strImageInfo.Mid(nIndex + 1); int SrcImageWid; int SrcImageHei; int ntempIndex = -1; if (nIndex != -1) { if (FALSE == AnalysisImagInfo(saSrcPhoto,lpSrcDirectory, lpSaveDirectory, strTemp, strImageName, strCutScheme, rtCut)) continue; } else { if (strImageInfo.IsEmpty()) break; AnalysisImagInfo(saSrcPhoto,lpSrcDirectory, lpSaveDirectory, strImageInfo, strImageName, strCutScheme, rtCut); break; } } while (nIndex != -1); } //---------------------------------------------------------------------- // remark by Jeff 2014.11.08 // ������AnalysisImagInfo // �����������ü�ͼƬ��ָ��Ŀ¼; // ������ // lpOrderCutImageInfo:�����ŵIJü���Ƭ��Ϣ; // lpSrcDirectory:ԭͼƬ·��; // lpOrderCutImageInfo��ʽ����Ƭ��|�ü�����|ԭƬ��|ԭƬ��|�ü�left|�ü�top|�ü�bottom|�ü�rigth // 225:5X7,1440,900,88,0,1352,900; // lpSaveDirectory:������Ƭ�ı���·��; // ���أ��� // // ˵����δ��ͼƬ������С,ֱ����ԭƬ�ϲü����á� //---------------------------------------------------------------------- BOOL AnalysisImagInfo(CStringArray &saSrcPhoto, LPCCH lpSrcDirectory, LPCCH lpSaveDirectory, CString &strImageInfo, CString &strImageName, CString &strCutScheme, CRect &rtCut) { int ntempIndex = -1; strImageName = strImageInfo.Left(3); // �ü���Ƭ��; strImageInfo.Delete(0, 4); CString strSrcImagePath; BOOL bExist = FALSE; for (int i = 0; i < saSrcPhoto.GetSize(); i++) { CString strTemp = saSrcPhoto.ElementAt(i); strSrcImagePath = strTemp; _splitpath((LPCTSTR)saSrcPhoto.ElementAt(i), NULL, NULL, strTemp.GetBuffer(0), NULL); strTemp.ReleaseBuffer(); if ( strTemp == strImageName) { bExist = TRUE; //saSrcPhoto.RemoveAt(i); break; } } if (FALSE == bExist) return FALSE; ntempIndex = strImageInfo.Find(','); strCutScheme = strImageInfo.Left(ntempIndex); // �ü�����; strImageInfo.Delete(0, ntempIndex + 1); // �ü�ԭͼ��; ntempIndex = strImageInfo.Find(','); LONG SrcImageWid = _ttol(strImageInfo.Left(ntempIndex)); strImageInfo.Delete(0, ntempIndex + 1); // �ü�ԭͼ��; ntempIndex = strImageInfo.Find(','); LONG SrcImageHei = _ttol(strImageInfo.Left(ntempIndex)); strImageInfo.Delete(0, ntempIndex + 1); // left����ֵ; ntempIndex = strImageInfo.Find(','); rtCut.left = _ttol(strImageInfo.Left(ntempIndex)); strImageInfo.Delete(0, ntempIndex + 1); // top����; ntempIndex = strImageInfo.Find(','); rtCut.top = _ttol(strImageInfo.Left(ntempIndex)); strImageInfo.Delete(0, ntempIndex + 1); // right����; ntempIndex = strImageInfo.Find(','); rtCut.right = _ttol(strImageInfo.Left(ntempIndex)); strImageInfo.Delete(0, ntempIndex + 1); // bottom����; rtCut.bottom = _ttol(strImageInfo.Left(ntempIndex)); // �����ü���Ƭ��ָ��Ŀ¼; // 1.����ԭͼ; Image *SrcImage = NULL; //if (FALSE == PathFileExists(CString(lpSrcDirectory + strImageName + _T(".jpg")))) if (FALSE == PathFileExists(strSrcImagePath)) { AfxMessageBox(_T("��ƬԴ�ļ�������")); return FALSE; } //LoadImageFromBuf(&SrcImage, CString(lpSrcDirectory + strImageName + _T(".jpg"))); LoadImageFromBuf(&SrcImage, strSrcImagePath); if (SrcImage == NULL) { AfxMessageBox(_T("����ԴͼƬʧ��")); return FALSE; } int orientation = GetOrientation(SrcImage); if (orientation == 8) SrcImage->RotateFlip(Rotate270FlipNone); else if (orientation == 6) SrcImage->RotateFlip(Rotate90FlipNone); if (SrcImage->GetWidth() == 0) return FALSE; float scale = 1.0; scale *= (float)SrcImage->GetWidth() / (float)SrcImageWid; rtCut.left *= scale; rtCut.right *= scale; rtCut.top *= scale; rtCut.bottom *= scale; #if 0 // ������ԭͼ�ϻ��ü�����; Graphics graph(SrcImage); Pen blackPen(Color(255, 255, 0, 0), 1); graph.DrawRectangle(&blackPen, rtCut.left, rtCut.top, rtCut.Width(), rtCut.Height()); SaveImageToFile(SrcImage, CString(lpSaveDirectory + strImageName + _T(".jpg"))); delete SrcImage; #else // ֱ�ӱ���ü����ͼƬ; Bitmap bp(rtCut.Width(), rtCut.Height()); Graphics *graphic = Graphics::FromImage(&bp); graphic->Clear(Color(255, 255, 255, 255)); graphic->SetInterpolationMode(InterpolationModeHighQualityBicubic); graphic->SetSmoothingMode(SmoothingModeHighQuality);//SmoothingModeHighSpeed graphic->SetPixelOffsetMode(PixelOffsetModeHighQuality); graphic->SetCompositingMode(CompositingModeSourceOver); graphic->SetCompositingQuality(CompositingQualityHighQuality); graphic->SetTextRenderingHint(TextRenderingHintAntiAliasGridFit); graphic->DrawImage(SrcImage, RectF(0, 0, rtCut.Width(), rtCut.Height()), rtCut.left, rtCut.top, rtCut.Width(), rtCut.Height(), UnitPixel); delete SrcImage; delete graphic; //delete graphic; //CString strSave; //strSave.Format("%s%s:%s.jpg", lpSaveDirectory,strImageName,strCutScheme); //SaveImageToFile(&bp, strSave); SaveImageToFile(&bp, CString(lpSaveDirectory + strImageName + _T("��") + strCutScheme + _T(".jpg"))); #endif return TRUE; } // ��Ƭ����jpg��raw��cr2��NEF ���ֳ��ú� //-------------------------------------------------------------------------------- // Remark by Jeff 2014.11.10 // ������GetCountOfOrderFolderPhotoFile // ��������ȡ�����ļ�����������Ƭ�ļ�,����"m"��"s"��ͷ��Сͼ; // ������pOrderFolder:�����ļ�·��; // ���أ� // //-------------------------------------------------------------------------------- int GetCountOfOrderFolderPhotoFile( const TCHAR *pOrderFolder, CStringArray &StrPhotoArray) { CStringArray StrSubFoloderArray; using namespace helper_coffs; ffsco o; o.dirs(1); // Jeff.1:������Ŀ¼; o.find(LPCTSTR(pOrderFolder), LPCTSTR(_T("*.*"))); // ���ܴ���m��s��ͷ������ͼ,��Ҫ���˵�; if (o.count() == 0) return 0; // ��ȡ��Ŀ¼��; ffsco::typeT coo; ffsco::typeT::iterator it; coo = o.co_dir(); for (it = coo.begin(); it != coo.end(); it++) { if (FindArray(&StrSubFoloderArray, (*it).c_str()) == -1) StrSubFoloderArray.Add((*it).c_str()); } int nIndex = -1; CString strOrderNumberImage; // ��ȡ��Ŀ¼�µ��ļ���; //CStringArray StrPhotoArray; for (int n = 0; n < StrSubFoloderArray.GetSize(); n++) { ffsco op; op.dirs(0); op.find(LPCTSTR(StrSubFoloderArray.ElementAt(n)), LPCTSTR(_T("*.jpg"))); ffsco::typeT coo; ffsco::typeT::iterator itp; coo = op.co_file(); for (itp = coo.begin(); itp != coo.end(); itp++) { strOrderNumberImage = (*itp).c_str(); nIndex = strOrderNumberImage.ReverseFind('\\'); strOrderNumberImage = strOrderNumberImage.Right(strOrderNumberImage.GetLength() - nIndex -1); if (strOrderNumberImage.Left(1) != _T("m") && strOrderNumberImage.Left(1) != _T("s")) { StrPhotoArray.Add((*itp).c_str()); } } } return 0; } //--------------------------------------------------------------------- // Jeff add 2015.03.26; // ������GetFileNameFromFullPath // ��������ȫ·���л�ȡ�ļ����� // ����: // lpFullPath��ȫ·��; // ���أ� //--------------------------------------------------------------------- VOID GetFileNameFromFullPath(CONST CString &strFullPath, CString &strRet) { // ��������ջ����·��������; if (strFullPath.IsEmpty() || !PathFileExists(strFullPath)) return; INT nIndex = strFullPath.ReverseFind(_T('\\')); } BOOL LoadMicroShareLibrary() { if (g_hlyfzMicroShareDLL == NULL) g_hlyfzMicroShareDLL = LoadLibrary(_T("lyfzMicroShare.dll")); if (g_hlyfzMicroShareDLL == NULL) { AfxMessageBox(_T("��������ģ��ʧ�ܣ�")); return FALSE; } g_lyfzCreateShare = (lyfzCreateShare)::GetProcAddress(g_hlyfzMicroShareDLL, "lyfzCreateShare"); if (!g_lyfzCreateShare) { FreeLibrary(g_hlyfzMicroShareDLL); g_hlyfzMicroShareDLL = NULL; AfxMessageBox(_T("���ص��뵼��ģ��ӿ�ʧ�ܣ�")); return FALSE; } return TRUE; } void FreeMicroShareLibrary() { if (g_hlyfzMicroShareDLL) FreeLibrary(g_hlyfzMicroShareDLL); g_hlyfzMicroShareDLL = NULL; g_lyfzCreateShare = NULL; } BOOL OpenShareDirectory() { // ��ȡremotecfg.dat; if (strcmp(g_szModulePath, _T("")) == 0) return FALSE; TCHAR szdbcfgFile[MAX_PATH] = { _T("") }; sprintf(szdbcfgFile, _T("%s%s"), g_szModulePath, _T("dbconfig.dat")); // û�ҵ��ļ�; if (!PathFileExists(szdbcfgFile)) return FALSE; // ���ļ�,��ȡ����; CFile cf; CFileException e; if (!cf.Open(szdbcfgFile, CFile::modeRead, &e)) { // ���ļ�ʧ��; e.ReportError(); return FALSE; } DBSAVE dbcfg; // ���STRemoteInfo�ṹ; ZeroMemory(&dbcfg, sizeof(DBSAVE)); INT nCount = cf.Read(&dbcfg, sizeof(DBSAVE)); if (nCount != sizeof(DBSAVE)) { cf.Close(); return FALSE; } // �����Դ; cf.Close(); // ��������; TCHAR szHost[51] = {0}; for (int i = 0; i < 50; i++) { if (dbcfg.server[i]) szHost[i] = 500 - dbcfg.server[i];// = 500 - dbcfg.server[i]; if (dbcfg.user[i]) dbcfg.user[i] = 500 - dbcfg.user[i]; if (dbcfg.psw[i]) dbcfg.psw[i] = 500 - dbcfg.psw[i]; } CString strHost = _T(""); strHost.Format(_T("%s"),szHost); strHost.TrimLeft(); strHost.TrimRight("."); strHost.TrimRight(); if (strHost.Find(".ly.com") == -1 && strHost.Find("192.168.") == -1) MyGetIPByName(strHost); // ���Դ���Ŀ¼; TCHAR szShareOriginal[MAX_PATH] = {_T("")}; TCHAR szShareEarly[MAX_PATH] = { _T("") }; TCHAR szShareFurther[MAX_PATH] = { _T("") }; TCHAR szShareDesign[MAX_PATH] = { _T("") }; sprintf(szShareOriginal, _T("\\\\%s\\%s"), strHost, _T("�ͻ�ԭƬ(��������)$")); sprintf(szShareEarly, _T("\\\\%s\\%s"), strHost, _T("�õ�Ƭ(��������)$")); sprintf(szShareFurther, _T("\\\\%s\\%s"), strHost, _T("���õ�Ƭ(��������)$")); sprintf(szShareDesign, _T("\\\\%s\\%s"), strHost, _T("��ƺõ�Ƭ(��������)$")); if (!PathFileExists(szShareOriginal) || !PathFileExists(szShareEarly) || !PathFileExists(szShareFurther) || !PathFileExists(szShareDesign) ) return FALSE; return TRUE; } BOOL IsValidDate(LPCTSTR lpDate) // �жϹ���; { if (lpDate == NULL || _tcscmp(lpDate, _T("")) == 0) return FALSE; CString strDate = lpDate; if (strDate.IsEmpty()) return FALSE; // �ж����ںϷ���; static int nYear = 0; static int nMonth = 0; static int nDay = 0; nYear = nMonth = nDay = 0; nYear = _ttoi(strDate.Left(4)); nMonth = _ttoi(strDate.Mid(5, 2)); nDay = _ttoi(strDate.Mid(8, 2)); CONST static INT nNormalMonth[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; CONST static INT nLeapMonth[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if ((nDay <= 0) || (nDay > 31) || (nMonth <= 0) || (nMonth > 12)) return FALSE; if ((nYear % 400 == 0) || (nYear % 4 == 0 && nYear % 100 != 0)) { if (nDay > nLeapMonth[nMonth - 1]) return FALSE; } else { if (nDay > nNormalMonth[nMonth - 1]) return FALSE; } return TRUE; } BOOL IsValidLunanrDate(LPCTSTR lpDate) // �ж�ũ��; { if (lpDate == NULL || _tcscmp(lpDate, _T("")) == 0) return FALSE; CString strDate = lpDate; if (strDate.IsEmpty()) return FALSE; static int lunar_year, lunar_month, lunar_day; lunar_year = lunar_month = lunar_day = 0; lunar_year = _ttoi(strDate.Left(4)); lunar_month = _ttoi(strDate.Mid(5, 2)); lunar_day = _ttoi(strDate.Mid(8, 2)); //Խ���飬���Խ�磬������Ч����; if (lunar_year <= BEGIN_YEAR || lunar_year > BEGIN_YEAR + NUMBER_YEAR - 1) return FALSE; if (lunar_month < 1 || lunar_month > 12) return FALSE; // 1.ũ�����Ƿ�������; int nYearIndex = lunar_year - BEGIN_YEAR; int leap_month = (LUNAR_YEARS[nYearIndex] >> 20) & 0xF; // 2.�·ݴ�С������; int month_day = 0; if ((LUNAR_YEARS[nYearIndex] >> (7 + 13 - lunar_month)) & 0x1) month_day = 30; else month_day = 29; if (lunar_day < 0 || lunar_day > month_day) return FALSE; return TRUE; } //************************************// // [����]: IsExistNumInString // [����]: ����Ƿ������� // [����]: // str �ִ� // [����]: 1�����֣�0û�� //************************************// int IsExistNumInString(const char* str) { if(str == NULL) return 0; //�ַ�0~9 ��Ӧ�� ascii��48~57 for(int i=0; i<strlen(str); i++) { if(str[i] >= 48 && str[i] <= 57) return 1; } return 0; } /************************************************************************/ /* ����:SaveImg2newfile ����:��Image��������Ϊ������ʽ���ļ�; ����: IN: pImg GDI+ Image����ָ��,��Ҫ�����ͼ�����; IN: lpnewfile ������ʽ�����ļ���(jpg,bmp,png,jpeg); IN: uQuality ����Ϊ���ļ�ʱ��ͼ������ֵ; ����: ע��:Image::Save ���ļ�����,�Ḳ�Ǵ��ڵ��ļ�; */ /************************************************************************/ BOOL SaveImg2newfile(IN Image* pImg, IN CString strNewfile, IN ULONG uQuality) { if (pImg == NULL) return FALSE; // ��Ҫ�ж�·���Ƿ����,�����ڴ���Ŀ¼; int nIndex = strNewfile.ReverseFind(_T('\\')); if (nIndex == -1) return FALSE; if (!PathFileExists(strNewfile.Left(nIndex))) { // ����ļ��в�����,����; CreateDirectory(strNewfile.Left(nIndex), NULL); } nIndex = strNewfile.ReverseFind(_T('.')); if (nIndex == -1) return FALSE; Status stat = GenericError; CLSID encoderClsid = { 0 }; BSTR newfile = strNewfile.AllocSysString(); strNewfile = strNewfile.Mid(nIndex + 1); if (strNewfile.CompareNoCase(_T("bmp")) == 0) { GetEncoderClsid(L"image/bmp", &encoderClsid); stat = pImg->Save(newfile, &encoderClsid, NULL); } else if (strNewfile.CompareNoCase(_T("png")) == 0) { GetEncoderClsid(L"image/png", &encoderClsid); stat = pImg->Save(newfile, &encoderClsid, NULL); } else// if ( strNewfile.CompareNoCase(_T("jpeg")) == 0 ) { GetEncoderClsid(L"image/jpeg", &encoderClsid); EncoderParameters encoderParameters; encoderParameters.Count = 1; encoderParameters.Parameter[0].Guid = EncoderQuality; encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong; encoderParameters.Parameter[0].NumberOfValues = 1; // Save the image as a JPEG with quality level 100. encoderParameters.Parameter[0].Value = &uQuality; stat = pImg->Save(newfile, &encoderClsid, &encoderParameters); } SysFreeString(newfile); return stat == Ok ? TRUE : FALSE; } /************************************************************************/ /* ����:ZoomImg ����:���ŵ�ָ����С��������,�������ź�ijߴ�; ����: IN: Imgrc ͼ��Ĵ�С; IN: dwDisplayPix ͼ��Ҫ��ʾ������Ĵ�С; OUT: dwZoomPix ͼ������ʾ���������ź�ijߴ�; ����: ע��:dwZoomPix�ijߴ������dwDisplayPix��; */ /************************************************************************/ int ZoomImg(IN CRect &Imgrc, IN CONST DWORD &dwDisplayPix, OUT DWORD &dwZoomPix) { double fDisplayWidth = GET_XPIX(dwDisplayPix); double fDisplayHeight = GET_YPIX(dwDisplayPix); // ��ʾ������; double fDisplayAspectRatio = fDisplayWidth / fDisplayHeight; // ͼƬ������; double fImgAspectRatio = ((double)Imgrc.Width()) / ((double)Imgrc.Height()); double fZoomWidth; double fZoomHeight; if (fDisplayAspectRatio > fImgAspectRatio) { fZoomWidth = fDisplayHeight*fImgAspectRatio; fZoomHeight = fDisplayHeight; } else { fZoomWidth = fDisplayWidth; fZoomHeight = fDisplayWidth / fImgAspectRatio; } dwZoomPix = SET_PIX((int)fZoomWidth, (int)fZoomHeight); ////////////////////////////////////////////////////////////////////////// int nRetval = 0; if ((fDisplayWidth == Imgrc.Width()) && (fDisplayHeight == Imgrc.Height())) { nRetval = ZoomNull; } else if ((fDisplayWidth > Imgrc.Width()) && (fDisplayHeight > Imgrc.Height())) { nRetval = ZoomOut; } else { nRetval = ZoomIn; } return nRetval; } int ZoomImg(IN CONST DWORD &dwImgPix, IN CONST DWORD &dwDisplayPix, OUT DWORD &dwZoomPix) { double fDisplayWidth = GET_XPIX(dwDisplayPix); double fDisplayHeight = GET_YPIX(dwDisplayPix); // ��ʾ������; double fDisplayAspectRatio = fDisplayWidth / fDisplayHeight; // ͼƬ������; double fImgAspectRatio = ((double)GET_XPIX(dwImgPix)) / ((double)GET_YPIX(dwImgPix)); double fZoomWidth; double fZoomHeight; if (fDisplayAspectRatio > fImgAspectRatio) { fZoomWidth = fDisplayHeight*fImgAspectRatio; fZoomHeight = fDisplayHeight; } else { fZoomWidth = fDisplayWidth; fZoomHeight = fDisplayWidth / fImgAspectRatio; } dwZoomPix = SET_PIX((int)fZoomWidth, (int)fZoomHeight); ////////////////////////////////////////////////////////////////////////// int nRetval = 0; if ((fDisplayWidth == GET_XPIX(dwImgPix)) && (fDisplayHeight == GET_YPIX(dwImgPix))) { nRetval = ZoomNull; } else if ((fDisplayWidth > GET_XPIX(dwImgPix)) && (fDisplayHeight > GET_YPIX(dwImgPix))) { nRetval = ZoomOut; } else { nRetval = ZoomIn; } return nRetval; } /************************************************************************/ /* ����:ImgThumbnail ����:���ɸ�������ͼ������ͼ; ����: IN Image* pImg, ԭͼָ�� IN CONST DWORD &dwDisplayPix, SET_PIX(100,76) = 100*76��С IN CString strNewfile, �µ�ͼƬ�� IN ULONG uQuality ����ͼ����0~100 ����: ע��:Ϊ�˽�׳��,strNewfile��·�������ں������ٴ��ж��Ƿ���Ч,��ֹ�ں�����û�н��о��ж�; */ /************************************************************************/ BOOL ImgThumbnail(IN Image* pImg, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality) { if (pImg == NULL) return FALSE; DWORD dwZoomPix; int retval = ZoomImg(SET_PIX(pImg->GetWidth(), pImg->GetHeight()), dwDisplayPix, dwZoomPix); if (retval == ZoomNull) { return SaveImg2newfile(pImg, strNewfile, uQuality); } // ��������ͼ; Bitmap bitmap(GET_XPIX(dwZoomPix), GET_YPIX(dwZoomPix)); Graphics *graphic = Graphics::FromImage(&bitmap); graphic->Clear(Color(255, 255, 255, 255)); graphic->SetInterpolationMode(InterpolationModeHighQualityBicubic); graphic->SetSmoothingMode(SmoothingModeHighQuality);//SmoothingModeHighSpeed graphic->SetPixelOffsetMode(PixelOffsetModeHighQuality); graphic->SetCompositingMode(CompositingModeSourceOver); graphic->SetCompositingQuality(CompositingQualityHighQuality); graphic->SetTextRenderingHint(TextRenderingHintAntiAliasGridFit); graphic->DrawImage(pImg, 0, 0, GET_XPIX(dwZoomPix), GET_YPIX(dwZoomPix)); delete graphic; // ��������ͼ; return SaveImg2newfile(&bitmap, strNewfile, uQuality); } /************************************************************************/ /* ����:ImgThumbnail ����:���ɸ�������ͼ������ͼ; ����: IN LPCTSTR lpImgpath, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality ����: ע��:Ϊ�˽�׳��,strNewfile��·�������ں������ٴ��ж��Ƿ���Ч,��ֹ�ں�����û�н��о��ж�; */ /************************************************************************/ BOOL ImgThumbnail(IN LPCTSTR lpImgpath, IN CONST DWORD &dwDisplayPix, IN CString strNewfile, IN ULONG uQuality) { if (!PathFileExists(lpImgpath)) return FALSE; #ifdef UNICODE Image Img(lpImgpath); #else BSTR strtmp = _bstr_t(lpImgpath); Image Img(strtmp); SysFreeString(strtmp); #endif DWORD dwZoomPix; int retval = ZoomImg(SET_PIX(Img.GetWidth(), Img.GetHeight()), dwDisplayPix, dwZoomPix); if (retval == ZoomNull) { return SaveImg2newfile(&Img, strNewfile, uQuality); } // ��������ͼ; Bitmap bitmap(GET_XPIX(dwZoomPix), GET_YPIX(dwZoomPix)); Graphics *graphic = Graphics::FromImage(&bitmap); graphic->Clear(Color(255, 255, 255, 255)); graphic->SetInterpolationMode(InterpolationModeHighQualityBicubic); graphic->SetSmoothingMode(SmoothingModeHighQuality);//SmoothingModeHighSpeed graphic->SetPixelOffsetMode(PixelOffsetModeHighQuality); graphic->SetCompositingMode(CompositingModeSourceOver); graphic->SetCompositingQuality(CompositingQualityHighQuality); graphic->SetTextRenderingHint(TextRenderingHintAntiAliasGridFit); graphic->DrawImage(&Img, 0, 0, GET_XPIX(dwZoomPix), GET_YPIX(dwZoomPix)); delete graphic; // ��������ͼ; return SaveImg2newfile(&bitmap, strNewfile, uQuality); } /*-----------------------------------DES���ܽ��� ģ�� begin--------------------------------------------*/ DESEncrypt g_DESEncrypt = NULL; DESDecrypt g_DESDecrypt = NULL; /*-----------------------------------DES���ܽ��� ģ�� end--------------------------------------------*/ /*-----------------------------------��ȡӲ����Ϣ ģ�� begin--------------------------------------------*/ HMODULE g_hHDSerial = NULL; GetSeiralNumberOrID g_GetSeiralNumberOrID = NULL; GetLocalMacAddr g_GetLocalMacAdd = NULL; BOOL LoadHDSerialLibrary() { if (g_hHDSerial == NULL) g_hHDSerial = LoadLibrary(_T("lyfzHDSerial.dll")); if (g_hHDSerial == NULL) { //dwError = GetLastError(); AfxMessageBox(_T("���ض�ȡӲ����Ϣģ��ʧ�ܣ�")); return FALSE; } g_GetSeiralNumberOrID = (GetSeiralNumberOrID)::GetProcAddress(g_hHDSerial, "GetSeiralNumberOrID"); g_GetLocalMacAdd = (GetLocalMacAddr)::GetProcAddress(g_hHDSerial, "GetLocalMacAddr"); g_DESEncrypt = (DESEncrypt)::GetProcAddress(g_hHDSerial, "DESEncrypt"); g_DESDecrypt = (DESDecrypt)::GetProcAddress(g_hHDSerial, "DESDecrypt"); if (!g_GetSeiralNumberOrID || !g_GetLocalMacAdd) { AfxMessageBox(_T("���ض�ȡӲ����Ϣģ��ӿ�ʧ�ܣ�")); return FALSE; } if(!g_DESEncrypt || !g_DESDecrypt) { AfxMessageBox(_T("���ؼ��ܽ��ܽӿ�ʧ�ܣ�")); return FALSE; } return TRUE; } void FreeHDSerialLibrary() { if (g_hHDSerial) FreeLibrary(g_hHDSerial); g_hHDSerial = NULL; g_GetSeiralNumberOrID = NULL; g_GetLocalMacAdd = NULL; g_DESEncrypt = NULL; g_DESDecrypt = NULL; } /*-----------------------------------��ȡӲ����Ϣ ģ�� end--------------------------------------------*/ #ifdef USE_KERNEL_DLL /************************************************************************/ /* ������CreateIMGProcess[3/1/2016 IT]; /* ����������lyfzIMGProcess.dllģ��ʵ�����; /* ������; /* ���أ��ɹ����ؾ��ֵ,����NULL; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ ImgEnvInterface* CreateIMGProcess( ) { //���ض�̬��; DWORD dwError = 0; HMODULE hKernelDll = ( HMODULE )LoadLibrary( _T("lyfzIMGProcess.dll") ); if ( hKernelDll ) { //��ȡ�����ӿڵĺ��� CREATEIMGPROCESS pInstance = (CREATEIMGPROCESS)GetProcAddress( hKernelDll, "CreateIMGProcess" ); if ( pInstance ) { //�����ӿ� ImgEnvInterface * pIMGProcess = pInstance( ); //���ؽӿ� return pIMGProcess; } else { dwError = GetLastError(); } } else { dwError = GetLastError(); } if ( ERROR_SUCCESS != dwError ) {// ����ʱ��������; CString strError = _T(""); strError.Format(_T("����lyfzIMGProcess.dllʱ������������=%d"), dwError); WriteTextLog(strError); } return NULL; } ImgEnvInterface *g_pIMGProcess = NULL; /************************************************************************/ /* ������GetOrderpathByImgType[3/1/2016 IT]; /* ������������������Ƭ���ͣ�ԭƬ������Ƭ������Ƭ�����Ƭ������ȡȫ����������Ƭ����·��; /* ������; /* [IN] nImgType����Ƭ���ͣ�1 = ԭƬ��2 = ����Ƭ��3 = ����Ƭ��4 = ���Ƭ��5~8����Ƭ��; /* [IN] lpBranchId���ֵ�����; /* [OUT] AryOrderpath��Ҫ���ص����ж�������Ƭ����Ŀ¼; /* ���أ��ɹ���ȡĿ¼����TRUE; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ BOOL GetOrderpathByImgType(IN CONST INT& nImgType, IN LPCTSTR lpBranchId, OUT CStringArray& AryOrderpath) { if ( lpBranchId == NULL || lpBranchId[0] == '\0' || !_tcsstr(lpBranchId, _T(".ly.com"))) { OutputDebugString(lpBranchId); OutputDebugString(_T("\n�ֵ�������Ч��\n")); return FALSE; } if ( nImgType > DBImgtype || nImgType < OImgtype ) { OutputDebugString(_T("\n����Ƭ���Ͳ����ڣ�\n")); return FALSE; } if ( g_pIMGProcess == NULL ) return FALSE; CString str; HGLOBAL hMemery; DWORD dwMemSize = 0; hMemery = g_pIMGProcess->GetBranchAllOrderDirectory(nImgType, lpBranchId, dwMemSize); if ( hMemery ) { BYTE *pData = (BYTE*)GlobalLock(hMemery); if ( pData == NULL ) { GlobalUnlock(hMemery); GlobalFree(hMemery); return FALSE; } CMemFile mf; mf.Attach(pData, dwMemSize); CArchive ar(&mf, CArchive::load); AryOrderpath.Serialize(ar); ar.Close(); mf.Detach(); GlobalUnlock(hMemery); GlobalFree(hMemery); return TRUE; } return FALSE; } /************************************************************************/ /* ������GetOrderpathByOrderNum[3/1/2016 IT]; /* ���������ݷֵ���������Ƭ���͡�����������ȡ������ȫ������Ŀ¼; /* ������; /* [IN] nImgType����Ƭ���ͣ�1 = ԭƬ��2 = ����Ƭ��3 = ����Ƭ��4 = ���Ƭ��5~8����Ƭ��; /* [IN] lpBranchId���ֵ�����; /* [IN] lpOrderNum��������; /* [OUT] AryOrderpath������ָ����������ƬĿ¼�����ʹ�ö�Ŀ¼������������ܴ���1��; /* ���أ�void; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ BOOL GetOrderpathByOrderNum(IN CONST INT& nImgType, IN LPCTSTR lpBranchId, IN LPCTSTR lpOrderNum, OUT CStringArray& AryOrderpath) { if ( lpBranchId == NULL || lpBranchId[0] == '\0' || !_tcsstr(lpBranchId, _T(".ly.com"))) { OutputDebugString(lpBranchId); OutputDebugString(_T("\n�ֵ�������Ч��\n")); return FALSE; } if ( nImgType > DBImgtype || nImgType < OImgtype ) { OutputDebugString(_T("\n����Ƭ���Ͳ����ڣ�\n")); return FALSE; } if ( g_pIMGProcess == NULL ) return FALSE; CString str; HGLOBAL hMemery; DWORD dwMemSize = 0; hMemery = g_pIMGProcess->GetOrderAllShareDirectory(nImgType, lpBranchId, lpOrderNum, dwMemSize); if ( hMemery ) { BYTE *pData = (BYTE*)GlobalLock(hMemery); if ( pData == NULL ) { GlobalUnlock(hMemery); GlobalFree(hMemery); return FALSE; } CMemFile mf; mf.Attach(pData, dwMemSize); CArchive ar(&mf, CArchive::load); AryOrderpath.Serialize(ar); ar.Close(); mf.Detach(); GlobalUnlock(hMemery); GlobalFree(hMemery); return TRUE; } return FALSE; } /************************************************************************/ /* ������GetScenerypathByOrderNum[3/1/2016 IT]; /* ��������ȡָ��������������ȫ������Ŀ¼; /* ������; /* [IN] nImgType����Ƭ���ͣ�1 = ԭƬ��2 = ����Ƭ��3 = ����Ƭ��4 = ���Ƭ��5~8����Ƭ��; /* [IN] lpBranchId���ֵ�����; /* [IN] lpOrderNum��������; /* [IN] lpScenery��������; /* [OUT] AryScenerypath������ָ����������ƬĿ¼�����ʹ�ö�Ŀ¼������������ܴ���1��; /* ���أ�void; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ BOOL GetScenerypathByOrderNum(IN CONST INT& nImgType, IN LPCTSTR lpBranchId, IN LPCTSTR lpOrderNum, IN LPCTSTR lpScenery, OUT CStringArray& AryScenerypath) { if ( lpBranchId == NULL || lpBranchId[0] == '\0' || !_tcsstr(lpBranchId, _T(".ly.com"))) { OutputDebugString(lpBranchId); OutputDebugString(_T("\n�ֵ�������Ч��\n")); return FALSE; } if ( nImgType > DBImgtype || nImgType < OImgtype ) { OutputDebugString(_T("\n����Ƭ���Ͳ����ڣ�\n")); return FALSE; } if ( g_pIMGProcess == NULL ) return FALSE; CString str; HGLOBAL hMemery; DWORD dwMemSize = 0; hMemery = g_pIMGProcess->GetSceneryAllShareDirectory(nImgType, lpBranchId, lpOrderNum, lpScenery, dwMemSize); if ( hMemery ) { BYTE *pData = (BYTE*)GlobalLock(hMemery); if ( pData == NULL ) { GlobalUnlock(hMemery); GlobalFree(hMemery); return FALSE; } CMemFile mf; mf.Attach(pData, dwMemSize); CArchive ar(&mf, CArchive::load); AryScenerypath.Serialize(ar); ar.Close(); mf.Detach(); GlobalUnlock(hMemery); GlobalFree(hMemery); return TRUE; } return FALSE; } /************************************************************************/ /* ������GetOrderImgpath[3/1/2016 IT]; /* ��������ȡָ�������ŵ�ȫ����Ƭ·��; /* ������; /* [IN] nImgType����Ƭ���ͣ�1 = ԭƬ��2 = ����Ƭ��3 = ����Ƭ��4 = ���Ƭ��5~8����Ƭ��; /* [IN] lpBranchId���ֵ�����; /* [IN] lpOrderNum��������; /* [OUT] AryImgpath������ָ��������ȫ����Ƭ·��; /* ���أ�void; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ BOOL GetOrderImgpath(IN CONST INT& nImgType, IN LPCTSTR lpBranchId, IN LPCTSTR lpOrderNum, OUT CStringArray& AryImgpath) { if ( lpBranchId == NULL || lpBranchId[0] == '\0' || !_tcsstr(lpBranchId, _T(".ly.com"))) { OutputDebugString(lpBranchId); OutputDebugString(_T("\n�ֵ�������Ч��\n")); return FALSE; } if ( nImgType > DBImgtype || nImgType < OImgtype ) { OutputDebugString(_T("\n����Ƭ���Ͳ����ڣ�\n")); return FALSE; } if ( g_pIMGProcess == NULL ) return FALSE; CString str; DWORD dwMemSize = 0; ImgLoadOrderpathInterface *pOrderLoader = NULL; g_pIMGProcess->QueryInterface(IID_ImgLoadOrderpathInterface,(void**)&pOrderLoader); if ( pOrderLoader ) { HGLOBAL hMemery = pOrderLoader->LoadOrderImages( nImgType, lpBranchId, lpOrderNum, _T("*.jpg|*.jpeg"), dwMemSize); if ( hMemery ) { BYTE *pData = (BYTE*)GlobalLock(hMemery); if ( pData == NULL ) { GlobalUnlock(hMemery); GlobalFree(hMemery); return FALSE; } CMemFile mf; mf.Attach(pData, dwMemSize); CArchive ar(&mf, CArchive::load); AryImgpath.Serialize(ar); ar.Close(); mf.Detach(); GlobalUnlock(hMemery); GlobalFree(hMemery); } pOrderLoader->Release(); return TRUE; } return FALSE; } /************************************************************************/ /* ������GetOrderImgpathEx[3/1/2016 IT]; /* ��������ȡָ��������ȫ����Ƭ·��; /* ������; /* [IN] nImgType����Ƭ���ͣ�1 = ԭƬ��2 = ����Ƭ��3 = ����Ƭ��4 = ���Ƭ��5~8����Ƭ��; /* [IN] lpBranchId���ֵ�����; /* [IN] lpOrderNum��������; /* [IN] bLoadInSubfolder���Ƿ���ض���Ŀ¼�µ���Ŀ¼; /* [IN] lpLoadExt��Ҫ���ص���Ƭ��չ��; /* [IN] lpWithExt��Ҫ���ӵ���Ƭ��չ��; /* [IN] AryLoadExtImgpath��ָ��������չ������Ƭ·��; /* [IN] AryWithExtImgpath��ָ��������չ������Ƭ·��; /* [IN] AryOrderDirectory��ָ�������ŵ���Ƭ����Ŀ¼����Ŀ¼�¿��ܴ���1��; /* ���أ�void; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ BOOL GetOrderImgpathEx(IN CONST INT& nImgType, IN LPCTSTR lpBranchId, IN LPCTSTR lpOrderNum, IN BOOL bLoadInSubfolder, IN LPCTSTR lpLoadExt, IN LPCTSTR lpWithExt, OUT CStringArray& AryLoadExtImgpath, OUT CStringArray& AryWithExtImgpath, OUT CStringArray& AryOrderDirectory ) { if ( lpBranchId == NULL || lpBranchId[0] == '\0' || !_tcsstr(lpBranchId, _T(".ly.com"))) { OutputDebugString(lpBranchId); OutputDebugString(_T("\n�ֵ�������Ч��\n")); return FALSE; } if ( nImgType > DBImgtype || nImgType < OImgtype ) { OutputDebugString(_T("\n����Ƭ���Ͳ����ڣ�\n")); return FALSE; } if ( g_pIMGProcess == NULL ) return FALSE; DWORD dwReturnSize = 0; ImgLoadOrderpathExInterface *pOrderLoader = NULL; g_pIMGProcess->QueryInterface(IID_ImgLoadOrderpathExInterface,(void**)&pOrderLoader); if ( pOrderLoader ) { pOrderLoader->Release(); HGLOBAL hMemery = pOrderLoader->LoadOrderImagesEx(nImgType, lpBranchId, lpOrderNum, TRUE, lpLoadExt, lpWithExt, dwReturnSize); if ( hMemery ) { BYTE* pMemery = (BYTE*)GlobalLock(hMemery); if ( pMemery == NULL ) { GlobalUnlock(hMemery); GlobalFree(hMemery); return FALSE; } DWORD dwSize = 0; DWORD dw1 = 0,dw2 = 0,dw3 = 0; CMemFile memfile[3]; memcpy(&dw1, pMemery + dwSize, sizeof(DWORD)); dwSize += sizeof(DWORD); memfile[0].Attach(pMemery+dwSize, dw1); dwSize += dw1; memcpy(&dw2, pMemery + dwSize, sizeof(DWORD)); dwSize += sizeof(DWORD); memfile[1].Attach(pMemery+dwSize, dw2); dwSize += dw2; memcpy(&dw3, pMemery + dwSize, sizeof(DWORD)); dwSize += sizeof(DWORD); memfile[2].Attach(pMemery+dwSize, dw3); dwSize += dw3; CArchive a1(&memfile[0],CArchive::load); CArchive a2(&memfile[1],CArchive::load); CArchive a3(&memfile[2],CArchive::load); AryLoadExtImgpath.Serialize(a1); AryWithExtImgpath.Serialize(a2); AryOrderDirectory.Serialize(a3); a1.Close(); a2.Close(); a3.Close(); memfile[0].Detach(); memfile[1].Detach(); memfile[2].Detach(); if (hMemery) { GlobalUnlock(hMemery); GlobalFree(hMemery); } return TRUE; } } return FALSE; } /************************************************************************/ /* ������GetOrderImgpath[3/1/2016 IT]; /* ��������ȡָ�������ŵ�ȫ����Ƭ·��; /* ������; /* [IN] nImgType����Ƭ���ͣ�1 = ԭƬ��2 = ����Ƭ��3 = ����Ƭ��4 = ���Ƭ��5~8����Ƭ��; /* [IN] lpBranchId���ֵ�����; /* [IN] lpOrderNum��������; /* [IN] lpScenery������������ϵ��; /* [OUT] AryImgpath������ָ��������ȫ����Ƭ·��; /* ���أ�void; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ BOOL GetSceneryImgpath(IN CONST INT& nImgType, IN LPCTSTR lpBranchId, IN LPCTSTR lpOrderNum, IN LPCTSTR lpScenery, OUT CStringArray& AryImgpath) { if ( lpBranchId == NULL || lpBranchId[0] == '\0' || !_tcsstr(lpBranchId, _T(".ly.com"))) { OutputDebugString(lpBranchId); OutputDebugString(_T("\n�ֵ�������Ч��\n")); return FALSE; } if ( nImgType > DBImgtype || nImgType < OImgtype ) { OutputDebugString(_T("\n����Ƭ���Ͳ����ڣ�\n")); return FALSE; } if ( g_pIMGProcess == NULL ) return FALSE; CString str; DWORD dwMemSize = 0; ImgLoadOrderpathInterface *pOrderLoader = NULL; g_pIMGProcess->QueryInterface(IID_ImgLoadOrderpathInterface,(void**)&pOrderLoader); if ( pOrderLoader ) { HGLOBAL hMemery = pOrderLoader->LoadSceneryImages( nImgType, lpBranchId, lpOrderNum, lpScenery, _T("*.jpg|*.jpeg"), dwMemSize); if ( hMemery ) { BYTE *pData = (BYTE*)GlobalLock(hMemery); if ( pData == NULL ) { GlobalUnlock(hMemery); GlobalFree(hMemery); return FALSE; } CMemFile mf; mf.Attach(pData, dwMemSize); CArchive ar(&mf, CArchive::load); AryImgpath.Serialize(ar); ar.Close(); mf.Detach(); GlobalUnlock(hMemery); GlobalFree(hMemery); } pOrderLoader->Release(); return TRUE; } return FALSE; } /************************************************************************/ /* ������GetOrderImgpathEx[3/1/2016 IT]; /* ��������ȡָ��������ȫ����Ƭ·��; /* ������; /* [IN] nImgType����Ƭ���ͣ�1 = ԭƬ��2 = ����Ƭ��3 = ����Ƭ��4 = ���Ƭ��5~8����Ƭ��; /* [IN] lpBranchId���ֵ�����; /* [IN] lpOrderNum��������; /* [IN] bLoadInSubfolder���Ƿ���ض���Ŀ¼�µ���Ŀ¼; /* [IN] lpLoadExt��Ҫ���ص���Ƭ��չ��; /* [IN] lpWithExt��Ҫ���ӵ���Ƭ��չ��; /* [IN] AryLoadExtImgpath��ָ��������չ������Ƭ·��; /* [IN] AryWithExtImgpath��ָ��������չ������Ƭ·��; /* [IN] AryOrderDirectory��ָ�������ŵ���Ƭ����Ŀ¼����Ŀ¼�¿��ܴ���1��; /* ���أ�void; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ BOOL GetSceneryImgpathEx(IN CONST INT& nImgType, IN LPCTSTR lpBranchId, IN LPCTSTR lpOrderNum, IN LPCTSTR lpScenery, IN LPCTSTR lpLoadExt, IN LPCTSTR lpWithExt, OUT CStringArray& AryLoadExtImgpath, OUT CStringArray& AryWithExtImgpath, OUT CStringArray& AryOrderDirectory ) { if ( lpBranchId == NULL || lpBranchId[0] == '\0' || !_tcsstr(lpBranchId, _T(".ly.com"))) { OutputDebugString(lpBranchId); OutputDebugString(_T("\n�ֵ�������Ч��\n")); return FALSE; } if ( nImgType > DBImgtype || nImgType < OImgtype ) { OutputDebugString(_T("\n����Ƭ���Ͳ����ڣ�\n")); return FALSE; } if ( g_pIMGProcess == NULL ) return FALSE; DWORD dwReturnSize = 0; ImgLoadOrderpathExInterface *pOrderLoader = NULL; g_pIMGProcess->QueryInterface(IID_ImgLoadOrderpathExInterface,(void**)&pOrderLoader); if ( pOrderLoader ) { pOrderLoader->Release(); HGLOBAL hMemery = pOrderLoader->LoadSceneryImagesEx(nImgType, lpBranchId, lpOrderNum, lpScenery, lpLoadExt, lpWithExt, dwReturnSize); if ( hMemery ) { BYTE* pMemery = (BYTE*)GlobalLock(hMemery); if ( pMemery == NULL ) { GlobalUnlock(hMemery); GlobalFree(hMemery); return FALSE; } DWORD dwSize = 0; DWORD dw1 = 0,dw2 = 0,dw3 = 0; CMemFile memfile[3]; memcpy(&dw1, pMemery + dwSize, sizeof(DWORD)); dwSize += sizeof(DWORD); memfile[0].Attach(pMemery+dwSize, dw1); dwSize += dw1; memcpy(&dw2, pMemery + dwSize, sizeof(DWORD)); dwSize += sizeof(DWORD); memfile[1].Attach(pMemery+dwSize, dw2); dwSize += dw2; memcpy(&dw3, pMemery + dwSize, sizeof(DWORD)); dwSize += sizeof(DWORD); memfile[2].Attach(pMemery+dwSize, dw3); dwSize += dw3; CArchive a1(&memfile[0],CArchive::load); CArchive a2(&memfile[1],CArchive::load); CArchive a3(&memfile[2],CArchive::load); AryLoadExtImgpath.Serialize(a1); AryWithExtImgpath.Serialize(a2); AryOrderDirectory.Serialize(a3); a1.Close(); a2.Close(); a3.Close(); memfile[0].Detach(); memfile[1].Detach(); memfile[2].Detach(); if (hMemery) { GlobalUnlock(hMemery); GlobalFree(hMemery); } return TRUE; } } return FALSE; } #endif // USE_KERNEL_DLL /************************************************************************/ /* ������IsDigitString[3/28/2016 IT]; /* ������; /* ������; /* [IN] ��; /* ���أ�����2��ʾ������, ����1��ʾ����, ����-1��ʾ��������; /* ע�⣺; /* ʾ����; /* /* �ģ�; /* ���ڣ�; /* ���ݣ�; /************************************************************************/ int IsDigitString(IN CONST CString& str) { int npt = 0; for (int i = 0; i < str.GetLength(); i++) { if (!_istdigit(str.GetAt(i))) { if ( str.GetAt(i) == _T('.') && i != 0) { if ( npt > 1) { return -1; } npt++; } else { return -1; } } } return npt ? 2 : 1; } BOOL Import2Excle(IN CListCtrl *pListCtrl, IN LPCTSTR lpExclePath, IN CONST int& nStartColumn, IN CONST int& nStartRow, IN int nEndColumn, IN int nEndRow) { if ( pListCtrl == NULL || lpExclePath == NULL || nStartColumn < 0 || nStartRow < 0 || (nEndColumn != -1 && nEndColumn <= nStartColumn) || (nEndRow != -1 && nEndRow <= nStartRow) ) { OutputDebugString(_T("������Ч\n")); return FALSE; } if ( pListCtrl->GetItemCount() - nStartRow <= 0 || (nEndRow != -1 && nEndRow >= pListCtrl->GetItemCount())) { OutputDebugString(_T("�����õ���\n")); return FALSE; } // CListCtrl��ͷ��Ϣ; CHeaderCtrl* pHeaderCtrl = pListCtrl->GetHeaderCtrl(); if( !pHeaderCtrl ) { OutputDebugString(_T("��ȡCListCtrl��ͷʧ��\n")); return FALSE; } if ( nStartColumn >= pHeaderCtrl->GetItemCount() || ( nEndColumn != -1 && nEndColumn >= pHeaderCtrl->GetItemCount()) ) { OutputDebugString(_T("��ѡ�г�����Χ\n")); return FALSE; } if ( nEndRow == -1 ) { nEndRow = pListCtrl->GetItemCount(); } if ( nEndColumn == -1 ) { nEndColumn = pHeaderCtrl->GetItemCount(); } // ��ȡ��ͷ�ֶ���Ϣ; LVCOLUMN lv; TCHAR szText[MAX_PATH]; lv.mask = LVCF_TEXT; lv.cchTextMax = MAX_PATH; lv.pszText = szText; int i = 0, j = 0; BasicExcel e; e.New(3); e.RenameWorksheet((size_t)0, L"����1"); BasicExcelWorksheet* sheet1 = e.GetWorksheet(L"����1"); for( i = nStartColumn, j = 0; i < nEndColumn; i++) { pListCtrl->GetColumn(i, &lv); sheet1->Cell(0,j++)->SetWString(lv.pszText); } // ��ȡ��������; int nRet; CString str; int nCurRow = 1, nCurColumn; for ( i = nStartRow; i < nEndRow; i++, nCurRow++ ) { nCurColumn = 0; for ( j = nStartColumn; j < nEndColumn; j++) { #if 0 str = pListCtrl->GetItemText(i, j); // �ж������������ַ���; nRet = IsDigitString(str); if ( nRet == 1 ) { nRet = atol(str); if ( nRet != -1 && !str.IsEmpty() && str.GetLength() < 6 ) // 6λ���Ȳ�תΪ����; sheet1->Cell(nCurRow,nCurColumn++)->SetInteger(nRet); else sheet1->Cell(nCurRow,nCurColumn++)->SetWString(str); } else if ( nRet == 2 ) { sheet1->Cell(nCurRow,nCurColumn++)->SetInteger(atof(str)); } else { sheet1->Cell(nCurRow,nCurColumn++)->SetWString(str); } #else str = pListCtrl->GetItemText(i, j); sheet1->Cell(nCurRow,nCurColumn++)->SetWString(str); #endif } } e.SaveAs(lpExclePath); return TRUE; } BOOL Import2Xls(IN CListCtrl *pListCtrl, IN LPCTSTR lpExclePath, IN CONST int& nStartColumn, IN CONST int& nStartRow, IN int nEndColumn, IN int nEndRow) { if ( pListCtrl == NULL || lpExclePath == NULL || nStartColumn < 0 || nStartRow < 0 || (nEndColumn != -1 && nEndColumn <= nStartColumn) || (nEndRow != -1 && nEndRow <= nStartRow) ) { OutputDebugString(_T("������Ч\n")); return FALSE; } if ( pListCtrl->GetItemCount() - nStartRow <= 0 || (nEndRow != -1 && nEndRow >= pListCtrl->GetItemCount())) { OutputDebugString(_T("�����õ���\n")); return FALSE; } // CListCtrl��ͷ��Ϣ; CHeaderCtrl* pHeaderCtrl = pListCtrl->GetHeaderCtrl(); if( !pHeaderCtrl ) { OutputDebugString(_T("��ȡCListCtrl��ͷʧ��\n")); return FALSE; } if ( nStartColumn >= pHeaderCtrl->GetItemCount() || ( nEndColumn != -1 && nEndColumn >= pHeaderCtrl->GetItemCount()) ) { OutputDebugString(_T("��ѡ�г�����Χ\n")); return FALSE; } if ( nEndRow == -1 ) { nEndRow = pListCtrl->GetItemCount(); } if ( nEndColumn == -1 ) { nEndColumn = pHeaderCtrl->GetItemCount(); } // ��ȡ��ͷ�ֶ���Ϣ; LVCOLUMN lv; TCHAR szText[MAX_PATH]; lv.mask = LVCF_TEXT; lv.cchTextMax = MAX_PATH; lv.pszText = szText; int i = 0, j = 0; CArray<CStringArray,CStringArray> AryData; AryData.SetSize(nEndRow - nStartRow + 1); //AryData.RemoveAll(); AryData.ElementAt(0).RemoveAll(); for( i = nStartColumn, j = 0; i < nEndColumn; i++) { pListCtrl->GetColumn(i, &lv); AryData.ElementAt(0).Add(lv.pszText); } // ��ȡ��������; int nRet; CString str; int nCurRow = 1, nCurColumn; for ( i = nStartRow; i < nEndRow; i++, nCurRow++ ) { nCurColumn = 0; AryData.ElementAt(nCurRow).RemoveAll(); for ( j = nStartColumn; j < nEndColumn; j++) { AryData.ElementAt(nCurRow).Add(pListCtrl->GetItemText(i, j)); } } // ���������л����ļ���; CMemFile Mef; CArchive ar(&Mef, CArchive::store); for ( i = 0; i < AryData.GetSize(); i++ ) { AryData.ElementAt(i).Serialize(ar); } ar.Close(); DWORD fLength = Mef.GetLength(); PBYTE pData = Mef.Detach(); CFile fb; str.Format(_T("%s.dat"), lpExclePath); if (fb.Open(str, CFile::modeCreate|CFile::modeWrite)) { DWORD dwArySize = nEndRow - nStartRow + 1; fb.Write(&dwArySize, sizeof(DWORD)); fb.Write(pData,fLength); // д����������; DWORD dwFlag = 889900; fb.Write(&dwFlag,sizeof(DWORD)); // д��������; fb.Close(); } return TRUE; } TCHAR* GetGuidString() { GUID guid; static TCHAR szBuf[64] = {0}; memset(szBuf, 0, 64*sizeof(TCHAR)); CoInitialize(NULL); if (S_OK == ::CoCreateGuid(&guid)) { sprintf(szBuf, _T("{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}"), guid.Data1, guid.Data2, guid.Data3, guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7] ); } CoUninitialize(); return szBuf; }