LYFZIPManage.cpp 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656
  1. // LYFZIPManage.cpp : Defines the class behaviors for the application.
  2. //
  3. #include "stdafx.h"
  4. #include "LYFZIPManage.h"
  5. #include "ChildFrm.h"
  6. #include "LYFZIPManageDoc.h"
  7. #include "LYFZIPManageView.h"
  8. #include "Lzari.h"
  9. #include <tlhelp32.h>
  10. #include <wincrypt.h>
  11. #include <Mmsystem.h>
  12. #include "mysqldata.h"
  13. #include <afxsock.h>
  14. #define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING)
  15. #define KEYLENGTH 0x00800000
  16. #define ENCRYPT_ALGORITHM CALG_RC4
  17. #define ENCRYPT_BLOCK_SIZE 8
  18. #ifdef _DEBUG
  19. #define new DEBUG_NEW
  20. #undef THIS_FILE
  21. static char THIS_FILE[] = __FILE__;
  22. #endif
  23. //Font *g_BlackFont=NULL;
  24. CDatabase *g_curdb=NULL;
  25. CDatabase g_db;
  26. CString g_date;
  27. CString g_title;
  28. CArray<CStringArray, CStringArray>g_userarray;
  29. CArray<CStringArray, CStringArray>g_cominfoarray;
  30. CArray<DWORD,DWORD>g_lengarray;
  31. CArray<DWORD,DWORD>g_btnlengarray;
  32. CArray<BYTE*,BYTE*>g_pointerarray;
  33. DWORD g_btnleng[8];
  34. int g_btnlengpos=-1;
  35. int g_nYearpos=-1;
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CLYFZIPManageApp
  38. BOOL g_bShowOK=0;
  39. BOOL g_bStaffAchievementShow=0;
  40. USER g_user;
  41. CString g_mainpath;
  42. CString g_server;
  43. CString g_path1;
  44. CString g_path2;
  45. CString g_path3;
  46. CString g_path4;
  47. DWORD g_ncount;
  48. CFont g_titlefont;
  49. DWORD g_nSendCode=0;
  50. BOOL g_bSendOK=0;
  51. SENDHEAD g_sendhead;
  52. CArray<CStringArray, CStringArray>g_hisyeararray;
  53. extern CFont g_listctrlfont;
  54. #pragma comment(lib, "Transport.lib")
  55. #pragma comment(lib, "Winmm.lib")
  56. BEGIN_MESSAGE_MAP(CLYFZIPManageApp, CWinApp)
  57. //{{AFX_MSG_MAP(CLYFZIPManageApp)
  58. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  59. // NOTE - the ClassWizard will add and remove mapping macros here.
  60. // DO NOT EDIT what you see in these blocks of generated code!
  61. //}}AFX_MSG_MAP
  62. // Standard file based document commands
  63. ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
  64. ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
  65. END_MESSAGE_MAP()
  66. /////////////////////////////////////////////////////////////////////////////
  67. // CLYFZIPManageApp construction
  68. float g_fscalex;
  69. float g_fscaley;
  70. DEVMODE g_dm;
  71. CLYFZIPManageApp::CLYFZIPManageApp()
  72. {
  73. // TODO: add construction code here,
  74. // Place all significant initialization in InitInstance
  75. g_dm.dmSize = sizeof(DEVMODE) ;
  76. EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&g_dm);
  77. g_fscalex=(float)g_dm.dmPelsWidth/1024.0;
  78. g_fscaley=(float)g_dm.dmPelsHeight/768.0;
  79. }
  80. /////////////////////////////////////////////////////////////////////////////
  81. // The one and only CLYFZIPManageApp object
  82. CLYFZIPManageApp theApp;
  83. /////////////////////////////////////////////////////////////////////////////
  84. // CLYFZIPManageApp initialization
  85. DWORD FindAppProcessID(CString path)
  86. {
  87. try
  88. {
  89. HANDLE handle=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  90. PROCESSENTRY32 Info;
  91. Info.dwSize = sizeof(PROCESSENTRY32);
  92. path.MakeLower ();
  93. if(::Process32First(handle,&Info))
  94. {
  95. do
  96. {
  97. CString ss=Info.szExeFile;
  98. ss.MakeLower ();
  99. if(ss.Find (path)!=-1 || (!ss.CompareNoCase(path)) )
  100. {
  101. ::CloseHandle(handle);
  102. return Info.th32ProcessID;
  103. }
  104. }
  105. while(::Process32Next(handle,&Info));
  106. ::CloseHandle(handle);
  107. }
  108. return -1;
  109. }
  110. catch(...)
  111. {
  112. }
  113. }
  114. BOOL MyExecuteSQL(CDatabase *pdb, CString sql)
  115. {
  116. MyLock lock("xiaoaccessdbmsg");
  117. try
  118. {
  119. pdb->ExecuteSQL (sql);
  120. }
  121. catch(...)
  122. {
  123. return 0;
  124. }
  125. return 1;
  126. }
  127. BOOL CLYFZIPManageApp::InitInstance()
  128. {
  129. HANDLE hObject = CreateMutex(NULL,FALSE,_T("CLYFZIPManageAppxiao"));
  130. if(GetLastError() == ERROR_ALREADY_EXISTS)
  131. {
  132. return false;
  133. }
  134. char path[MAX_PATH];
  135. ::GetModuleFileName (NULL, path, MAX_PATH);
  136. g_mainpath=path;
  137. g_mainpath=g_mainpath.Left (g_mainpath.ReverseFind ('\\'));
  138. AfxEnableControlContainer();
  139. WriteLogin("开始启动");
  140. // Standard initialization
  141. // If you are not using these features and wish to reduce the size
  142. // of your final executable, you should remove from the following
  143. // the specific initialization routines you do not need.
  144. //g_listctrlfont.CreatePointFont (110, _T("System"));
  145. g_listctrlfont.CreatePointFont (110, _T("System"));
  146. #ifdef _AFXDLL
  147. Enable3dControls(); // Call this when using MFC in a shared DLL
  148. #else
  149. Enable3dControlsStatic(); // Call this when linking to MFC statically
  150. #endif
  151. CString autorunpath=g_mainpath+"\\AutoRun3.exe";
  152. ShellExecute(NULL, _T("open"), autorunpath, NULL, NULL, SW_SHOWNORMAL);
  153. BOOL bMasterDb=0;
  154. BOOL bUserDb=0;
  155. char server[50];
  156. DWORD leng=50;
  157. memset(server, 0, 50);
  158. ::GetComputerName (server, &leng);
  159. CString localname=server;
  160. Global::GetIniInfo();
  161. CDatabase g_masterdb;
  162. ll: try
  163. {
  164. CString strCon;
  165. if (Global::g_dwDBServerPort != 0)
  166. {
  167. if ( _tcscmp(Global::g_szDBAccount, _T("")) == 0 )
  168. strCon.Format(DB_SW_CONN_WITH_PORT, Global::g_szDBSource, Global::g_dwDBServerPort,_T("master"));
  169. else
  170. strCon.Format(DB_SS_CONN_WITH_PORT,Global::g_szDBSource, Global::g_dwDBServerPort, _T("master"), Global::g_szDBAccount, Global::g_szDBPassWord);
  171. }
  172. else
  173. {
  174. if ( _tcscmp(Global::g_szDBAccount, _T("")) == 0 )
  175. strCon.Format(DB_SW_CONN_WITHOUT_PORT, Global::g_szDBSource, _T("master"));
  176. else
  177. strCon.Format(DB_SS_CONN_WITHOUT_PORT,Global::g_szDBSource, _T("master"), Global::g_szDBAccount, Global::g_szDBPassWord);
  178. }
  179. g_masterdb.OpenEx(strCon,CDatabase::noOdbcDialog);
  180. bMasterDb=1;
  181. }
  182. catch(CDBException * e)
  183. {
  184. }
  185. if(bMasterDb==0)
  186. {
  187. WriteLogin("sql数据库未启动!");
  188. ::Sleep (1000);
  189. goto ll;
  190. }
  191. try
  192. {
  193. g_db.OpenEx(Global::g_szConnectString,CDatabase::noOdbcDialog);
  194. bUserDb=1;
  195. g_curdb=&g_db;
  196. g_masterdb.Close();
  197. }
  198. catch(CDBException * e)
  199. {
  200. WriteLogin("数据库连接失败-"+e->m_strError);
  201. e->Delete();
  202. ::Sleep (1000);
  203. goto ll;
  204. }
  205. SetRegistryKey(_T("LYFZ-LYFZIPManage"));
  206. LoadStdProfileSettings(); // Load standard INI file options (including MRU)
  207. // Register the application's document templates. Document templates
  208. // serve as the connection between documents, frame windows and views.
  209. g_titlefont.CreatePointFont (160, _T("宋体"));
  210. CMultiDocTemplate* pDocTemplate;
  211. pDocTemplate = new CMultiDocTemplate(
  212. IDR_MAINFRAME,
  213. NULL,
  214. RUNTIME_CLASS(CChildFrame), // custom MDI child frame
  215. RUNTIME_CLASS(CLYFZIPManageView));
  216. AddDocTemplate(pDocTemplate);
  217. // create main MDI Frame window
  218. CMainFrame* pMainFrame = new CMainFrame;
  219. if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
  220. {
  221. WriteLogin("窗口初始化失败");
  222. return FALSE;
  223. }
  224. m_pMainWnd = pMainFrame;
  225. m_pMainWnd->SetWindowText ("利亚方舟域名管理系统");
  226. m_pMainWnd->UpdateWindow();
  227. // SetDialogBkColor(RGB(204,204,204),RGB(0,0,0));
  228. return TRUE;
  229. }
  230. /////////////////////////////////////////////////////////////////////////////
  231. // CAboutDlg dialog used for App About
  232. class CAboutDlg : public CDialog
  233. {
  234. public:
  235. CAboutDlg();
  236. // Dialog Data
  237. //{{AFX_DATA(CAboutDlg)
  238. enum { IDD = IDD_ABOUTBOX };
  239. //}}AFX_DATA
  240. // ClassWizard generated virtual function overrides
  241. //{{AFX_VIRTUAL(CAboutDlg)
  242. protected:
  243. virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
  244. //}}AFX_VIRTUAL
  245. // Implementation
  246. protected:
  247. //{{AFX_MSG(CAboutDlg)
  248. // No message handlers
  249. //}}AFX_MSG
  250. DECLARE_MESSAGE_MAP()
  251. };
  252. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  253. {
  254. //{{AFX_DATA_INIT(CAboutDlg)
  255. //}}AFX_DATA_INIT
  256. }
  257. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  258. {
  259. CDialog::DoDataExchange(pDX);
  260. //{{AFX_DATA_MAP(CAboutDlg)
  261. //}}AFX_DATA_MAP
  262. }
  263. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  264. //{{AFX_MSG_MAP(CAboutDlg)
  265. // No message handlers
  266. //}}AFX_MSG_MAP
  267. END_MESSAGE_MAP()
  268. // App command to run the dialog
  269. void CLYFZIPManageApp::OnAppAbout()
  270. {
  271. CAboutDlg aboutDlg;
  272. aboutDlg.DoModal();
  273. }
  274. /////////////////////////////////////////////////////////////////////////////
  275. // CLYFZIPManageApp message handlers
  276. CString newGUID()
  277. {
  278. CString str;
  279. GUID guid;
  280. CoInitialize(NULL);
  281. if (S_OK == ::CoCreateGuid(&guid))
  282. {
  283. str.Format (
  284. "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
  285. guid.Data1,
  286. guid.Data2,
  287. guid.Data3,
  288. guid.Data4[0], guid.Data4[1],
  289. guid.Data4[2], guid.Data4[3],
  290. guid.Data4[4], guid.Data4[5],
  291. guid.Data4[6], guid.Data4[7]);
  292. }
  293. CoUninitialize();
  294. return str.Left (28);
  295. }
  296. void ConvertToPrice(CString &str)
  297. {
  298. if(str.Find ('.')==-1)return;
  299. str.TrimRight ('0');
  300. str.TrimRight ('.');
  301. }
  302. void DataToArray(CArray<CStringArray, CStringArray>*pArrayOfString)
  303. {
  304. try
  305. {
  306. pArrayOfString->RemoveAll();
  307. if (g_nLeng == 0)
  308. {
  309. return;
  310. }
  311. // 1.code[0]数组:用作发送时,存储着操作指令;用作接收时,存储着接收数据大小???;
  312. if (g_sendhead.code[0])
  313. {
  314. // 1.1.将g_pData全局变量里保存的数据进行解压,并存储在lpszOut数组里;
  315. BYTE *lpszOut = NULL;
  316. int nOutSize = 0;
  317. LZARI Lzari;
  318. #if defined(VC70) || defined(VC60)
  319. Lzari.UnCompress(g_pData, g_nLeng, lpszOut, nOutSize);
  320. #else
  321. Lzari.UnCompress(g_pData, g_nLeng, (const BYTE*&)lpszOut, nOutSize);
  322. #endif
  323. // 1.2.将解压后的数据lpszOut附加到内存文件里;
  324. CMemFile memfile;
  325. memfile.Attach(lpszOut, nOutSize);
  326. // 1.3.将内存文件序列化保存到CArchive对象里;
  327. CArchive ar(&memfile, CArchive::load);
  328. pArrayOfString->SetSize(g_sendhead.count[0]);
  329. // 1.4.将CArchive对象里的数据,序列化到指定的CArray对象里;
  330. for (int ii = 0; ii < pArrayOfString->GetSize(); ii++)
  331. {
  332. pArrayOfString->ElementAt(ii).Serialize(ar);
  333. }
  334. // 1.5.完成数据的导出任务,释放内存;
  335. ar.Close();
  336. Lzari.Release();
  337. memfile.Detach();
  338. }
  339. else
  340. {
  341. CMemFile memfile;
  342. memfile.Attach(g_pData, g_nLeng);
  343. CArchive ar(&memfile, CArchive::load);
  344. pArrayOfString->SetSize(g_sendhead.count[0]);
  345. for (int ii = 0; ii < pArrayOfString->GetSize(); ii++)
  346. {
  347. pArrayOfString->ElementAt(ii).Serialize(ar);
  348. }
  349. ar.Close();
  350. memfile.Detach();
  351. }
  352. }
  353. catch (...)
  354. {
  355. }
  356. }
  357. void DataToArray(
  358. CArray<CStringArray, CStringArray>*pArrayOfString1,
  359. CArray<CStringArray, CStringArray>*pArrayOfString2)
  360. {
  361. try
  362. {
  363. CArray<CStringArray, CStringArray>*parray[2] = { pArrayOfString1, pArrayOfString2 };
  364. DWORD bytereads = 0;
  365. for (int i = 0; i < 2; i++)
  366. {
  367. parray[i]->RemoveAll();
  368. if (g_sendhead.length[i] == 0)
  369. continue;
  370. if (g_sendhead.code[i])
  371. {
  372. // 1.1.将g_pData全局变量里保存的数据进行解压,并存储在lpszOut数组里;
  373. BYTE *lpszOut = NULL;
  374. int nOutSize = 0;
  375. LZARI Lzari;
  376. #ifdef VC60
  377. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize);
  378. #else
  379. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize);
  380. #endif
  381. // 1.2.将解压后的数据lpszOut附加到内存文件里;
  382. CMemFile memfile;
  383. memfile.Attach(lpszOut, nOutSize);
  384. // 1.3.将内存文件序列化保存到CArchive对象里;
  385. bytereads += g_sendhead.length[i];
  386. CArchive ar(&memfile, CArchive::load);
  387. parray[i]->SetSize(g_sendhead.count[i]);
  388. // 1.4.将CArchive对象里的数据,序列化到指定的CArray对象里;
  389. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  390. {
  391. parray[i]->ElementAt(ii).Serialize(ar);
  392. }
  393. // 1.5.完成数据的导出任务,释放内存;
  394. ar.Close();
  395. Lzari.Release();
  396. memfile.Detach();
  397. }
  398. else
  399. {
  400. CMemFile memfile;
  401. memfile.Attach(g_pData + bytereads, g_sendhead.length[i]);
  402. bytereads += g_sendhead.length[i];
  403. CArchive ar(&memfile, CArchive::load);
  404. parray[i]->SetSize(g_sendhead.count[i]);
  405. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  406. {
  407. parray[i]->ElementAt(ii).Serialize(ar);
  408. }
  409. ar.Close();
  410. memfile.Detach();
  411. }
  412. }
  413. }
  414. catch (...)
  415. {
  416. }
  417. }
  418. void DataToArray(
  419. CArray<CStringArray, CStringArray>*pArrayOfString1,
  420. CArray<CStringArray, CStringArray>*pArrayOfString2,
  421. CArray<CStringArray, CStringArray>*pArrayOfString3)
  422. {
  423. try
  424. {
  425. CArray<CStringArray, CStringArray>*parray[3] = { pArrayOfString1, pArrayOfString2, pArrayOfString3 };
  426. DWORD bytereads = 0;
  427. for (int i = 0; i < 3; i++)
  428. {
  429. parray[i]->RemoveAll(); if (g_sendhead.length[i] == 0)continue;
  430. if (g_sendhead.code[i])
  431. {
  432. BYTE *lpszOut = NULL;
  433. int nOutSize = 0;
  434. LZARI Lzari;
  435. #ifdef VC60
  436. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize);
  437. #else
  438. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize);
  439. #endif
  440. CMemFile memfile;
  441. memfile.Attach(lpszOut, nOutSize);
  442. bytereads += g_sendhead.length[i];
  443. CArchive ar(&memfile, CArchive::load);
  444. parray[i]->SetSize(g_sendhead.count[i]);
  445. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  446. {
  447. parray[i]->ElementAt(ii).Serialize(ar);
  448. }
  449. ar.Close();
  450. Lzari.Release();
  451. memfile.Detach();
  452. }
  453. else
  454. {
  455. CMemFile memfile;
  456. memfile.Attach(g_pData + bytereads, g_sendhead.length[i]);
  457. bytereads += g_sendhead.length[i];
  458. CArchive ar(&memfile, CArchive::load);
  459. parray[i]->SetSize(g_sendhead.count[i]);
  460. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  461. {
  462. parray[i]->ElementAt(ii).Serialize(ar);
  463. }
  464. ar.Close();
  465. memfile.Detach();
  466. }
  467. }
  468. }
  469. catch (...)
  470. {
  471. }
  472. }
  473. void DataToArray(
  474. CArray<CStringArray, CStringArray>*pArrayOfString1,
  475. CArray<CStringArray, CStringArray>*pArrayOfString2,
  476. CArray<CStringArray, CStringArray>*pArrayOfString3,
  477. CArray<CStringArray, CStringArray>*pArrayOfString4)
  478. {
  479. try
  480. {
  481. CArray<CStringArray, CStringArray>*parray[4] =
  482. {
  483. pArrayOfString1,
  484. pArrayOfString2,
  485. pArrayOfString3,
  486. pArrayOfString4
  487. };
  488. DWORD bytereads = 0;
  489. for (int i = 0; i < 4; i++)
  490. {
  491. parray[i]->RemoveAll(); if (g_sendhead.length[i] == 0)continue;
  492. if (g_sendhead.code[i])
  493. {
  494. BYTE *lpszOut = NULL;
  495. int nOutSize = 0;
  496. LZARI Lzari;
  497. #ifdef VC60
  498. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize);
  499. #else
  500. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize);
  501. #endif
  502. CMemFile memfile;
  503. memfile.Attach(lpszOut, nOutSize);
  504. bytereads += g_sendhead.length[i];
  505. CArchive ar(&memfile, CArchive::load);
  506. parray[i]->SetSize(g_sendhead.count[i]);
  507. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  508. {
  509. parray[i]->ElementAt(ii).Serialize(ar);
  510. }
  511. ar.Close();
  512. Lzari.Release();
  513. memfile.Detach();
  514. }
  515. else
  516. {
  517. CMemFile memfile;
  518. memfile.Attach(g_pData + bytereads, g_sendhead.length[i]);
  519. bytereads += g_sendhead.length[i];
  520. CArchive ar(&memfile, CArchive::load);
  521. parray[i]->SetSize(g_sendhead.count[i]);
  522. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  523. {
  524. parray[i]->ElementAt(ii).Serialize(ar);
  525. }
  526. ar.Close();
  527. memfile.Detach();
  528. }
  529. }
  530. }
  531. catch (...)
  532. {
  533. }
  534. }
  535. void DataToArray(
  536. CArray<CStringArray, CStringArray>*pArrayOfString1,
  537. CArray<CStringArray, CStringArray>*pArrayOfString2,
  538. CArray<CStringArray, CStringArray>*pArrayOfString3,
  539. CArray<CStringArray, CStringArray>*pArrayOfString4,
  540. CArray<CStringArray, CStringArray>*pArrayOfString5)
  541. {
  542. try
  543. {
  544. CArray<CStringArray, CStringArray>*parray[5] =
  545. {
  546. pArrayOfString1,
  547. pArrayOfString2,
  548. pArrayOfString3,
  549. pArrayOfString4,
  550. pArrayOfString5
  551. };
  552. DWORD bytereads = 0;
  553. for (int i = 0; i < 5; i++)
  554. {
  555. parray[i]->RemoveAll();
  556. if (g_sendhead.length[i] == 0)
  557. continue;
  558. if (g_sendhead.code[i])
  559. {
  560. BYTE *lpszOut = NULL;
  561. int nOutSize = 0;
  562. LZARI Lzari;
  563. #ifdef VC60
  564. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize);
  565. #else
  566. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize);
  567. #endif
  568. CMemFile memfile;
  569. memfile.Attach(lpszOut, nOutSize);
  570. bytereads += g_sendhead.length[i];
  571. CArchive ar(&memfile, CArchive::load);
  572. parray[i]->SetSize(g_sendhead.count[i]);
  573. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  574. {
  575. parray[i]->ElementAt(ii).Serialize(ar);
  576. }
  577. ar.Close();
  578. Lzari.Release();
  579. memfile.Detach();
  580. }
  581. else
  582. {
  583. CMemFile memfile;
  584. memfile.Attach(g_pData + bytereads, g_sendhead.length[i]);
  585. bytereads += g_sendhead.length[i];
  586. CArchive ar(&memfile, CArchive::load);
  587. parray[i]->SetSize(g_sendhead.count[i]);
  588. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  589. {
  590. parray[i]->ElementAt(ii).Serialize(ar);
  591. }
  592. ar.Close();
  593. memfile.Detach();
  594. }
  595. }
  596. }
  597. catch (...)
  598. {
  599. }
  600. }
  601. void DataToArray(
  602. CArray<CStringArray, CStringArray>*pArrayOfString1,
  603. CArray<CStringArray, CStringArray>*pArrayOfString2,
  604. CArray<CStringArray, CStringArray>*pArrayOfString3,
  605. CArray<CStringArray, CStringArray>*pArrayOfString4,
  606. CArray<CStringArray, CStringArray>*pArrayOfString5,
  607. CArray<CStringArray, CStringArray>*pArrayOfString6)
  608. {
  609. try
  610. {
  611. CArray<CStringArray, CStringArray>*parray[6] =
  612. {
  613. pArrayOfString1,
  614. pArrayOfString2,
  615. pArrayOfString3,
  616. pArrayOfString4,
  617. pArrayOfString5,
  618. pArrayOfString6
  619. };
  620. DWORD bytereads = 0;
  621. for (int i = 0; i < 6; i++)
  622. {
  623. parray[i]->RemoveAll();
  624. if (g_sendhead.length[i] == 0)continue;
  625. if (g_sendhead.code[i])
  626. {
  627. BYTE *lpszOut = NULL;
  628. int nOutSize = 0;
  629. LZARI Lzari;
  630. #ifdef VC60
  631. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize);
  632. #else
  633. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize);
  634. #endif
  635. CMemFile memfile;
  636. memfile.Attach(lpszOut, nOutSize);
  637. bytereads += g_sendhead.length[i];
  638. CArchive ar(&memfile, CArchive::load);
  639. parray[i]->SetSize(g_sendhead.count[i]);
  640. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  641. {
  642. parray[i]->ElementAt(ii).Serialize(ar);
  643. }
  644. ar.Close();
  645. Lzari.Release();
  646. memfile.Detach();
  647. }
  648. else
  649. {
  650. CMemFile memfile;
  651. memfile.Attach(g_pData + bytereads, g_sendhead.length[i]);
  652. bytereads += g_sendhead.length[i];
  653. CArchive ar(&memfile, CArchive::load);
  654. parray[i]->SetSize(g_sendhead.count[i]);
  655. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  656. {
  657. parray[i]->ElementAt(ii).Serialize(ar);
  658. }
  659. ar.Close();
  660. memfile.Detach();
  661. }
  662. }
  663. }
  664. catch (...)
  665. {
  666. }
  667. }
  668. void DataToArray(
  669. CArray<CStringArray, CStringArray>*pArrayOfString1,
  670. CArray<CStringArray, CStringArray>*pArrayOfString2,
  671. CArray<CStringArray, CStringArray>*pArrayOfString3,
  672. CArray<CStringArray, CStringArray>*pArrayOfString4,
  673. CArray<CStringArray, CStringArray>*pArrayOfString5,
  674. CArray<CStringArray, CStringArray>*pArrayOfString6,
  675. CArray<CStringArray, CStringArray>*pArrayOfString7)
  676. {
  677. try
  678. {
  679. CArray<CStringArray, CStringArray>*parray[7] =
  680. {
  681. pArrayOfString1,
  682. pArrayOfString2,
  683. pArrayOfString3,
  684. pArrayOfString4,
  685. pArrayOfString5,
  686. pArrayOfString6,
  687. pArrayOfString7
  688. };
  689. DWORD bytereads = 0;
  690. for (int i = 0; i < 7; i++)
  691. {
  692. parray[i]->RemoveAll();
  693. if (g_sendhead.length[i] == 0)continue;
  694. if (g_sendhead.code[i])
  695. {
  696. BYTE *lpszOut = NULL;
  697. int nOutSize = 0;
  698. LZARI Lzari;
  699. #ifdef VC60
  700. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize);
  701. #else
  702. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize);
  703. #endif
  704. CMemFile memfile;
  705. memfile.Attach(lpszOut, nOutSize);
  706. bytereads += g_sendhead.length[i];
  707. CArchive ar(&memfile, CArchive::load);
  708. parray[i]->SetSize(g_sendhead.count[i]);
  709. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  710. {
  711. parray[i]->ElementAt(ii).Serialize(ar);
  712. }
  713. ar.Close();
  714. Lzari.Release();
  715. memfile.Detach();
  716. }
  717. else
  718. {
  719. CMemFile memfile;
  720. memfile.Attach(g_pData + bytereads, g_sendhead.length[i]);
  721. bytereads += g_sendhead.length[i];
  722. CArchive ar(&memfile, CArchive::load);
  723. parray[i]->SetSize(g_sendhead.count[i]);
  724. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  725. {
  726. parray[i]->ElementAt(ii).Serialize(ar);
  727. }
  728. ar.Close();
  729. memfile.Detach();
  730. }
  731. }
  732. }
  733. catch (...)
  734. {
  735. }
  736. }
  737. void DataToArray(
  738. CArray<CStringArray, CStringArray>*pArrayOfString1,
  739. CArray<CStringArray, CStringArray>*pArrayOfString2,
  740. CArray<CStringArray, CStringArray>*pArrayOfString3,
  741. CArray<CStringArray, CStringArray>*pArrayOfString4,
  742. CArray<CStringArray, CStringArray>*pArrayOfString5,
  743. CArray<CStringArray, CStringArray>*pArrayOfString6,
  744. CArray<CStringArray, CStringArray>*pArrayOfString7,
  745. CArray<CStringArray, CStringArray>*pArrayOfString8)
  746. {
  747. try
  748. {
  749. CArray<CStringArray, CStringArray>*parray[8] =
  750. {
  751. pArrayOfString1,
  752. pArrayOfString2,
  753. pArrayOfString3,
  754. pArrayOfString4,
  755. pArrayOfString5,
  756. pArrayOfString6,
  757. pArrayOfString7,
  758. pArrayOfString8
  759. };
  760. DWORD bytereads = 0;
  761. for (int i = 0; i < 8; i++)
  762. {
  763. parray[i]->RemoveAll();
  764. if (g_sendhead.length[i] == 0)continue;
  765. if (g_sendhead.code[i])
  766. {
  767. BYTE *lpszOut = NULL;
  768. int nOutSize = 0;
  769. LZARI Lzari;
  770. #ifdef VC60
  771. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize);
  772. #else
  773. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize);
  774. #endif
  775. CMemFile memfile;
  776. memfile.Attach(lpszOut, nOutSize);
  777. bytereads += g_sendhead.length[i];
  778. CArchive ar(&memfile, CArchive::load);
  779. parray[i]->SetSize(g_sendhead.count[i]);
  780. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  781. {
  782. parray[i]->ElementAt(ii).Serialize(ar);
  783. }
  784. ar.Close();
  785. Lzari.Release();
  786. memfile.Detach();
  787. }
  788. else
  789. {
  790. CMemFile memfile;
  791. memfile.Attach(g_pData + bytereads, g_sendhead.length[i]);
  792. bytereads += g_sendhead.length[i];
  793. CArchive ar(&memfile, CArchive::load);
  794. parray[i]->SetSize(g_sendhead.count[i]);
  795. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  796. {
  797. parray[i]->ElementAt(ii).Serialize(ar);
  798. }
  799. ar.Close();
  800. memfile.Detach();
  801. }
  802. }
  803. }
  804. catch (...)
  805. {
  806. }
  807. }
  808. void DataToArray(
  809. CArray<CStringArray, CStringArray>*pArrayOfString1,
  810. CArray<CStringArray, CStringArray>*pArrayOfString2,
  811. CArray<CStringArray, CStringArray>*pArrayOfString3,
  812. CArray<CStringArray, CStringArray>*pArrayOfString4,
  813. CArray<CStringArray, CStringArray>*pArrayOfString5,
  814. CArray<CStringArray, CStringArray>*pArrayOfString6,
  815. CArray<CStringArray, CStringArray>*pArrayOfString7,
  816. CArray<CStringArray, CStringArray>*pArrayOfString8,
  817. CArray<CStringArray, CStringArray>*pArrayOfString9,
  818. CArray<CStringArray, CStringArray>*pArrayOfString10)
  819. {
  820. try
  821. {
  822. CArray<CStringArray, CStringArray>*parray[10] =
  823. {
  824. pArrayOfString1,
  825. pArrayOfString2,
  826. pArrayOfString3,
  827. pArrayOfString4,
  828. pArrayOfString5,
  829. pArrayOfString6,
  830. pArrayOfString7,
  831. pArrayOfString8,
  832. pArrayOfString9,
  833. pArrayOfString10
  834. };
  835. DWORD bytereads = 0;
  836. for (int i = 0; i < 10; i++)
  837. {
  838. parray[i]->RemoveAll();
  839. if (g_sendhead.length[i] == 0)continue;
  840. if (g_sendhead.code[i])
  841. {
  842. BYTE *lpszOut = NULL;
  843. int nOutSize = 0;
  844. LZARI Lzari;
  845. #ifdef VC60
  846. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], lpszOut, nOutSize);
  847. #else
  848. Lzari.UnCompress(g_pData + bytereads, g_sendhead.length[i], (const BYTE*&)lpszOut, nOutSize);
  849. #endif
  850. CMemFile memfile;
  851. memfile.Attach(lpszOut, nOutSize);
  852. bytereads += g_sendhead.length[i];
  853. CArchive ar(&memfile, CArchive::load);
  854. parray[i]->SetSize(g_sendhead.count[i]);
  855. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  856. {
  857. parray[i]->ElementAt(ii).Serialize(ar);
  858. }
  859. ar.Close();
  860. Lzari.Release();
  861. memfile.Detach();
  862. }
  863. else
  864. {
  865. CMemFile memfile;
  866. memfile.Attach(g_pData + bytereads, g_sendhead.length[i]);
  867. bytereads += g_sendhead.length[i];
  868. CArchive ar(&memfile, CArchive::load);
  869. parray[i]->SetSize(g_sendhead.count[i]);
  870. for (int ii = 0; ii < parray[i]->GetSize(); ii++)
  871. {
  872. parray[i]->ElementAt(ii).Serialize(ar);
  873. }
  874. ar.Close();
  875. memfile.Detach();
  876. }
  877. }
  878. }
  879. catch (...)
  880. {
  881. }
  882. }
  883. BOOL IsHasRights(int pos)
  884. {return 1;
  885. if(g_user.rights.GetLength ()>pos)
  886. {
  887. BOOL ret=atoi(g_user.rights.Mid (pos,1));
  888. if(ret==0)AfxMessageBox("没有相关权限!", MB_ICONINFORMATION);
  889. return ret;
  890. }
  891. AfxMessageBox("没有相关权限!", MB_ICONINFORMATION);
  892. return 0;
  893. }
  894. BOOL IsHasRights2(int pos)
  895. {return 1;
  896. if(g_user.rights.GetLength ()>pos)
  897. {
  898. BOOL ret=atoi(g_user.rights.Mid (pos,1));
  899. return ret;
  900. }
  901. return 0;
  902. }
  903. BOOL IsHasRightsnew(int pos)
  904. {
  905. if(g_user.rights.GetLength ()>pos)
  906. {
  907. BOOL ret=atoi(g_user.rights.Mid (pos,1));
  908. if(ret==0)AfxMessageBox("没有相关权限!", MB_ICONINFORMATION);
  909. return ret;
  910. }
  911. AfxMessageBox("没有相关权限!", MB_ICONINFORMATION);
  912. return 0;
  913. }
  914. BOOL IsHasRights2new(int pos)
  915. {
  916. if(g_user.rights.GetLength ()>pos)
  917. {
  918. BOOL ret=atoi(g_user.rights.Mid (pos,1));
  919. return ret;
  920. }
  921. return 0;
  922. }
  923. int CLYFZIPManageApp::ExitInstance()
  924. {
  925. g_db.Close ();
  926. return CWinApp::ExitInstance();
  927. }
  928. /********************************************************************************************
  929. /* Syntax
  930. /* void FirstLetter(int nCode, CString& strLetter)
  931. /* Remarks:
  932. /* Get the first letter of pinyin according to specified Chinese character code.
  933. /* Parameters:
  934. /* nCode - the code of the chinese character.
  935. /* strLetter - a CString object that is to receive the string of the first letter.
  936. /* Return Values:
  937. /* None.
  938. /* Author:
  939. /* lixiaosan
  940. /* Create Date:
  941. /* 05-26-2006
  942. /********************************************************************************************/
  943. void FirstLetter(int nCode, CString& strLetter)
  944. {
  945. if(nCode >= 1601 && nCode < 1637) strLetter = _T("A");
  946. if(nCode >= 1637 && nCode < 1833) strLetter = _T("B");
  947. if(nCode >= 1833 && nCode < 2078) strLetter = _T("C");
  948. if(nCode >= 2078 && nCode < 2274) strLetter = _T("D");
  949. if(nCode >= 2274 && nCode < 2302) strLetter = _T("E");
  950. if(nCode >= 2302 && nCode < 2433) strLetter = _T("F");
  951. if(nCode >= 2433 && nCode < 2594) strLetter = _T("G");
  952. if(nCode >= 2594 && nCode < 2787) strLetter = _T("H");
  953. if(nCode >= 2787 && nCode < 3106) strLetter = _T("J");
  954. if(nCode >= 3106 && nCode < 3212) strLetter = _T("K");
  955. if(nCode >= 3212 && nCode < 3472) strLetter = _T("L");
  956. if(nCode >= 3472 && nCode < 3635) strLetter = _T("M");
  957. if(nCode >= 3635 && nCode < 3722) strLetter = _T("N");
  958. if(nCode >= 3722 && nCode < 3730) strLetter = _T("O");
  959. if(nCode >= 3730 && nCode < 3858) strLetter = _T("P");
  960. if(nCode >= 3858 && nCode < 4027) strLetter = _T("Q");
  961. if(nCode >= 4027 && nCode < 4086) strLetter = _T("R");
  962. if(nCode >= 4086 && nCode < 4390) strLetter = _T("S");
  963. if(nCode >= 4390 && nCode < 4558) strLetter = _T("T");
  964. if(nCode >= 4558 && nCode < 4684) strLetter = _T("W");
  965. if(nCode >= 4684 && nCode < 4925) strLetter = _T("X");
  966. if(nCode >= 4925 && nCode < 5249) strLetter = _T("Y");
  967. if(nCode >= 5249 && nCode < 5590) strLetter = _T("Z");
  968. }
  969. /********************************************************************************************
  970. /* Syntax
  971. /* GetFirstLetter(CString strName, CString& strFirstLetter)
  972. /* Remarks:
  973. /* Get the first letter of pinyin according to specified Chinese character.
  974. /* Parameters:
  975. /* strName - a CString object that is to be parsed.
  976. /* strFirstLetter - a CString object that is to receive the string of the first letter.
  977. /* Return Values:
  978. /* None.
  979. /* Author:
  980. /* lixiaosan
  981. /* Create Date:
  982. /* 05-26-2006
  983. /********************************************************************************************/
  984. void GetFirstLetter(CString strName, CString& strFirstLetter)
  985. {
  986. TBYTE ucHigh, ucLow;
  987. int nCode;
  988. CString strRet;
  989. strFirstLetter.Empty();
  990. for (int i=0; i<strName.GetLength(); i++)
  991. {
  992. if ( (TBYTE)strName[i] < 0x80 )
  993. {
  994. strRet=strName.Mid (i,1);
  995. strRet.MakeUpper ();
  996. strFirstLetter += strRet;
  997. continue;
  998. }
  999. ucHigh = (TBYTE)strName[i];
  1000. ucLow = (TBYTE)strName[i+1];
  1001. if ( ucHigh < 0xa1 || ucLow < 0xa1)
  1002. continue;
  1003. else
  1004. // Treat code by section-position as an int type parameter,
  1005. // so make following change to nCode.
  1006. nCode = (ucHigh - 0xa0) * 100 + ucLow - 0xa0;
  1007. FirstLetter(nCode, strRet);
  1008. strFirstLetter += strRet;
  1009. i++;
  1010. }
  1011. }
  1012. void LoadImageFromBuf(Bitmap **img, BYTE *pData, DWORD leng)
  1013. {
  1014. try
  1015. {
  1016. if(pData==NULL)return;
  1017. if(*img)delete *img;
  1018. *img=NULL;
  1019. // Allocate global memory on which to create stream
  1020. HGLOBAL m_hMem = GlobalAlloc(GMEM_MOVEABLE, leng);
  1021. if(m_hMem==NULL)return;
  1022. BYTE* pmem = (BYTE*)GlobalLock(m_hMem);
  1023. memcpy(pmem,pData,leng);
  1024. IStream* pstm;
  1025. CreateStreamOnHGlobal(m_hMem,TRUE,&pstm);
  1026. // load from stream
  1027. *img=Gdiplus::Bitmap::FromStream(pstm);
  1028. // free/release stuff
  1029. GlobalUnlock(m_hMem);
  1030. pstm->Release();
  1031. }
  1032. catch(...)
  1033. {
  1034. }
  1035. }
  1036. void LoadImageFromBuf(Image **img, BYTE *pData, DWORD leng)
  1037. {
  1038. try
  1039. {
  1040. if(pData==NULL)return;
  1041. if(*img)delete *img;
  1042. *img=NULL;
  1043. // Allocate global memory on which to create stream
  1044. HGLOBAL m_hMem = GlobalAlloc(GMEM_MOVEABLE, leng);
  1045. if(m_hMem==NULL)return;
  1046. BYTE* pmem = (BYTE*)GlobalLock(m_hMem);
  1047. memcpy(pmem,pData,leng);
  1048. IStream* pstm;
  1049. CreateStreamOnHGlobal(m_hMem,TRUE,&pstm);
  1050. // load from stream
  1051. *img=Gdiplus::Image::FromStream(pstm);
  1052. // free/release stuff
  1053. GlobalUnlock(m_hMem);
  1054. pstm->Release();
  1055. }
  1056. catch(...)
  1057. {
  1058. }
  1059. }
  1060. void LoadImageFromBuf(Image **img, CString path)
  1061. {
  1062. try
  1063. {
  1064. CFile fp;
  1065. if(fp.Open (path, CFile::modeRead))
  1066. {
  1067. DWORD leng=fp.GetLength ();
  1068. BYTE *pData=new BYTE[leng];
  1069. fp.Read (pData, leng);
  1070. fp.Close ();
  1071. LoadImageFromBuf(img, pData, leng);
  1072. delete []pData;
  1073. }
  1074. }
  1075. catch(...)
  1076. {
  1077. }
  1078. }
  1079. void LoadImageFromBuf(Bitmap **img, CString path)
  1080. {
  1081. try
  1082. {
  1083. CFile fp;
  1084. if(fp.Open (path, CFile::modeRead))
  1085. {
  1086. DWORD leng=fp.GetLength ();
  1087. BYTE *pData=new BYTE[leng];
  1088. fp.Read (pData, leng);
  1089. fp.Close ();
  1090. LoadImageFromBuf(img, pData, leng);
  1091. delete []pData;
  1092. }
  1093. }
  1094. catch(...)
  1095. {
  1096. }
  1097. }
  1098. int GetType(CString str)
  1099. {
  1100. BOOL bDigit=1;
  1101. BOOL bAlpha=1;
  1102. for(int i=0; i<str.GetLength (); i++)
  1103. {
  1104. // if(!::isdigit (str.GetAt (i)))
  1105. if(! ((str.GetAt (i)<=0 && str.GetAt (i)>=9) ))
  1106. bDigit=0;
  1107. if(! ((str.GetAt (i)<='z' && str.GetAt (i)>='a') || (str.GetAt (i)<='Z' && str.GetAt (i)>='A')))
  1108. //else if(!::isalpha ( ((unsigned char)str.GetAt (i))))
  1109. bAlpha=0;
  1110. if(bDigit==0 && bAlpha==0)return 0;
  1111. }
  1112. if(bDigit)
  1113. {
  1114. return 1;
  1115. }
  1116. else if(bAlpha)
  1117. {
  1118. return 2;
  1119. }
  1120. else
  1121. return 0;
  1122. }
  1123. void LoadImageFromRes(Image **img, LPCTSTR lpszResourceName, LPCTSTR ResourceType)
  1124. {
  1125. try
  1126. {
  1127. HGLOBAL hGlobal = NULL;
  1128. HRSRC hSource = NULL;
  1129. LPVOID lpVoid = NULL;
  1130. int nSize = 0;
  1131. BOOL bResult=FALSE;
  1132. hSource = FindResource(NULL, lpszResourceName, ResourceType);
  1133. if(hSource == NULL)return;
  1134. hGlobal = LoadResource(NULL, hSource);
  1135. if(hGlobal == NULL)return;
  1136. lpVoid = LockResource(hGlobal);
  1137. if(lpVoid == NULL)return;
  1138. nSize = (UINT)SizeofResource(NULL, hSource);
  1139. LoadImageFromBuf(img, (BYTE*)hGlobal, nSize);
  1140. UnlockResource(hGlobal); // 16Bit Windows Needs This
  1141. FreeResource(hGlobal); // 16Bit Windows Needs This (32Bit - Automatic Release)
  1142. }
  1143. catch(...)
  1144. {
  1145. }
  1146. }
  1147. CString FilterBZ(CString &bz)
  1148. {
  1149. bz.Replace ("'", "");
  1150. /* int i=bz.GetLength ()-1;
  1151. char c;
  1152. for(;i>=0;i--)
  1153. {
  1154. c=bz.GetAt (i);
  1155. if(c<32)// && c!=10 && c!=13)
  1156. bz.Delete (i);
  1157. }*/
  1158. if(bz.GetLength ()>1023)
  1159. {
  1160. AfxMessageBox("文字太长, 字符串将被截取!", MB_ICONSTOP);
  1161. bz=bz.Left (1023);
  1162. }
  1163. return bz;
  1164. }
  1165. BOOL GIsHalfHZ(const CString &str)
  1166. {
  1167. int len=str.GetLength();
  1168. BOOL IsHalf=FALSE;
  1169. for(int i=0;i<len;i++)
  1170. {
  1171. if(str.GetAt(i) < 0) IsHalf=!IsHalf;
  1172. }
  1173. return IsHalf;
  1174. }
  1175. void RectFitDes(int width, int height, CRect &rc)
  1176. {
  1177. try
  1178. {
  1179. if(width==0 || height==0)return;
  1180. float fscale=(float)width/(float)height;
  1181. float rcscale=((float)rc.Width ())/((float)rc.Height ());
  1182. int rcwid=rc.Width ();
  1183. int rchei=rc.Height ();
  1184. int dt=0;
  1185. if(rcscale<fscale)
  1186. {
  1187. dt=(rchei-rcwid/fscale)/2;
  1188. rc.top+=dt;
  1189. rc.bottom-=dt;
  1190. }
  1191. else
  1192. {
  1193. dt=(rcwid-rchei*fscale)/2;
  1194. rc.left +=dt;
  1195. rc.right-=dt;
  1196. }
  1197. }
  1198. catch(...)
  1199. {
  1200. }
  1201. }
  1202. int GetPos(DWORD leng)
  1203. {
  1204. if(g_lengarray.GetSize()==0)
  1205. {
  1206. g_sendhead.bsql=0;
  1207. g_sendhead.code[0]=105;
  1208. g_sendhead.tabcount=1;
  1209. g_pMainWnd->ProcessChatMessageRequest2(1);if(g_bSendOK==0)return -1;
  1210. DWORD leng;
  1211. DWORD readbytes=0;
  1212. memcpy(&leng, g_pData+readbytes, sizeof(DWORD));
  1213. readbytes+=sizeof(DWORD);
  1214. {
  1215. CMemFile memfile;
  1216. memfile.Attach (g_pData+readbytes, leng);
  1217. readbytes+=leng;
  1218. CArchive ar(&memfile, CArchive::load);
  1219. g_lengarray.Serialize (ar);
  1220. ar.Close();
  1221. memfile.Detach ();
  1222. }
  1223. memcpy(&leng, g_pData+readbytes, sizeof(DWORD));
  1224. readbytes+=sizeof(DWORD);
  1225. {
  1226. CMemFile memfile;
  1227. memfile.Attach (g_pData+readbytes, leng);
  1228. readbytes+=leng;
  1229. CArchive ar(&memfile, CArchive::load);
  1230. g_btnlengarray.Serialize (ar);
  1231. ar.Close();
  1232. memfile.Detach ();
  1233. }
  1234. memcpy(&leng, g_pData+readbytes, sizeof(DWORD));
  1235. readbytes+=sizeof(DWORD);
  1236. int count=leng/sizeof(RESDATA2);
  1237. for(int i=0; i<count; i++)
  1238. {
  1239. BYTE *pData=new BYTE[sizeof(RESDATA2)];
  1240. memcpy(pData, g_pData+readbytes, sizeof(RESDATA2));
  1241. readbytes+=sizeof(RESDATA2);
  1242. g_pointerarray.Add(pData);
  1243. /* RESDATA2 *pRes=(RESDATA2*)pData;
  1244. CString str;
  1245. str.Format ("%d", pRes->nPicBmpCount [0]);
  1246. AfxMessageBox(str);
  1247. str.Format ("%d", pRes->nPicBmpCount [1]);
  1248. AfxMessageBox(str);
  1249. str.Format ("%d", pRes->nPicBmpCount [2]);
  1250. AfxMessageBox(str);
  1251. str.Format ("%d", pRes->nPicBmpCount [3]);
  1252. AfxMessageBox(str);
  1253. str.Format ("%d", pRes->nPicBmpCount [4]);
  1254. AfxMessageBox(str);
  1255. str.Format ("%d", pRes->nPicBmpCount [5]);
  1256. AfxMessageBox(str);*/
  1257. }
  1258. }
  1259. for(int i=0; i<g_lengarray.GetSize (); i++)
  1260. {
  1261. if(leng==g_lengarray.ElementAt (i))
  1262. {
  1263. return i;
  1264. }
  1265. }
  1266. return -1;
  1267. }
  1268. extern RESDATA2 g_resdata2;
  1269. BOOL LoadLia(CString path, BYTE **pData, BYTE **pDataBegin, Image **pBk, HWND hwnd)
  1270. {
  1271. return 0;
  1272. }
  1273. BOOL CheckDateOK(CString str)
  1274. {
  1275. if(str.IsEmpty ())return 1;
  1276. CString tip;
  1277. int i;
  1278. CString demo=CTime::GetCurrentTime ().Format ("%Y-%m-%d");
  1279. if(str.GetLength ()!=demo.GetLength ())
  1280. goto ll;
  1281. //2009-01-01
  1282. if(str.GetAt (4)!='-')
  1283. goto ll;
  1284. if(str.GetAt (7)!='-')
  1285. goto ll;
  1286. for( i=0; i<str.GetLength (); i++)
  1287. {
  1288. if(i==4 || i==7)continue;
  1289. if(str.GetAt (i)<'0' || str.GetAt (i)>'9')
  1290. goto ll;
  1291. }
  1292. return 1;
  1293. ll:
  1294. tip.Format ("日期:%s格式错误!\r\n样板:%s", str, demo);
  1295. AfxMessageBox(tip, MB_ICONSTOP);
  1296. return 0;
  1297. }
  1298. int GetOrientation(Image *image)
  1299. {
  1300. if(image )
  1301. {
  1302. UINT totalBufferSize;
  1303. UINT numProperties;
  1304. image->GetPropertySize(&totalBufferSize, &numProperties);
  1305. // Allocate the buffer that will receive the property items.
  1306. PropertyItem* pAllItems = (PropertyItem*)malloc(totalBufferSize);
  1307. // Fill the buffer.
  1308. image->GetAllPropertyItems(totalBufferSize, numProperties, pAllItems);
  1309. // Print the id data member of each property item.
  1310. for(UINT j = 0; j < numProperties; ++j)
  1311. {
  1312. if(PropertyTagOrientation==pAllItems[j].id)
  1313. {
  1314. short* ptrLong = (short*)(pAllItems[j].value);
  1315. int ret=(int)*ptrLong;
  1316. free(pAllItems);
  1317. return ret;
  1318. //str.Format("%d", *ptrLong);
  1319. //MessageBox(str);
  1320. }
  1321. }
  1322. free(pAllItems);
  1323. }
  1324. return 1;
  1325. }
  1326. int CLYFZIPManageApp::DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt)
  1327. {
  1328. // TODO: Add your specialized code here and/or call the base class
  1329. return CWinApp::DoMessageBox(lpszPrompt, nType, nIDPrompt);
  1330. }
  1331. void WriteLogin(CString str)
  1332. {
  1333. CStdioFile fp;
  1334. CString path=g_mainpath+"\\域名平台日志.txt";
  1335. if(::PathFileExists (path))
  1336. {
  1337. fp.Open (path, CFile::modeWrite);
  1338. int length=fp.GetLength ();
  1339. if(length>1024*1024)
  1340. {
  1341. fp.Close ();
  1342. ::DeleteFile (path);
  1343. return;
  1344. }
  1345. fp.SeekToEnd ();
  1346. }
  1347. else
  1348. fp.Open (path, CFile::modeCreate|CFile::modeWrite);
  1349. fp.WriteString (CTime::GetCurrentTime ().Format ("%Y-%m-%d %H:%M:%S")+" "+str+"\r\n" );
  1350. fp.Close ();
  1351. }
  1352. void WriteLogin2(CString str)
  1353. {
  1354. CStdioFile fp;
  1355. CString path=g_mainpath+"\\域名平台日志2.txt";
  1356. if(::PathFileExists (path))
  1357. {
  1358. fp.Open (path, CFile::modeWrite);
  1359. int length=fp.GetLength ();
  1360. if(length>1024*1024)
  1361. {
  1362. fp.Close ();
  1363. ::DeleteFile (path);
  1364. return;
  1365. }
  1366. fp.SeekToEnd ();
  1367. }
  1368. else
  1369. fp.Open (path, CFile::modeCreate|CFile::modeWrite);
  1370. fp.WriteString (CTime::GetCurrentTime ().Format ("%Y-%m-%d %H:%M:%S")+" "+str+"\r\n" );
  1371. fp.Close ();
  1372. }
  1373. BOOL EncryptFile2(BYTE *buffer, DWORD leng, PCHAR szPassword)
  1374. {
  1375. try
  1376. {
  1377. HCRYPTPROV hCryptProv;
  1378. HCRYPTKEY hKey;
  1379. HCRYPTHASH hHash;
  1380. PBYTE pbBuffer;
  1381. DWORD dwBlockLen;
  1382. DWORD dwBufferLen;
  1383. DWORD dwCount;
  1384. //以下获得一个CSP句柄
  1385. if(CryptAcquireContext(
  1386. &hCryptProv,
  1387. NULL, //NULL表示使用默认密钥容器,默认密钥容器名为用户登陆名
  1388. NULL,
  1389. PROV_RSA_FULL,
  1390. 0))
  1391. {
  1392. printf("A cryptographic provider has been acquired. \n");
  1393. }
  1394. else//密钥容器不存在
  1395. {
  1396. if(CryptAcquireContext(
  1397. &hCryptProv,
  1398. NULL,
  1399. NULL,
  1400. PROV_RSA_FULL,
  1401. CRYPT_NEWKEYSET))//创建密钥容器
  1402. {
  1403. //创建密钥容器成功,并得到CSP句柄
  1404. printf("A new key container has been created.\n");
  1405. }
  1406. else
  1407. {
  1408. return 0;
  1409. }
  1410. }
  1411. //--------------------------------------------------------------------
  1412. // 创建一个会话密钥(session key)
  1413. // 会话密钥也叫对称密钥,用于对称加密算法。
  1414. // (注: 一个Session是指从调用函数CryptAcquireContext到调用函数
  1415. // CryptReleaseContext 期间的阶段。)
  1416. //--------------------------------------------------------------------
  1417. // Create a hash object.
  1418. if(CryptCreateHash(
  1419. hCryptProv,
  1420. CALG_MD5,
  1421. 0,
  1422. 0,
  1423. &hHash))
  1424. {
  1425. printf("A hash object has been created. \n");
  1426. }
  1427. else
  1428. {
  1429. return 0;
  1430. }
  1431. //--------------------------------------------------------------------
  1432. // 用输入的密码产生一个散列
  1433. if(CryptHashData(
  1434. hHash,
  1435. (BYTE *)szPassword,
  1436. strlen(szPassword),
  1437. 0))
  1438. {
  1439. printf("The password has been added to the hash. \n");
  1440. }
  1441. else
  1442. {
  1443. return 0;
  1444. }
  1445. //--------------------------------------------------------------------
  1446. // 通过散列生成会话密钥(session key)
  1447. if(CryptDeriveKey(
  1448. hCryptProv,
  1449. ENCRYPT_ALGORITHM,
  1450. hHash,
  1451. KEYLENGTH,
  1452. &hKey))
  1453. {
  1454. printf("An encryption key is derived from the password hash. \n");
  1455. }
  1456. else
  1457. {
  1458. return 0;
  1459. }
  1460. //--------------------------------------------------------------------
  1461. // Destroy the hash object.
  1462. CryptDestroyHash(hHash);
  1463. hHash = NULL;
  1464. //--------------------------------------------------------------------
  1465. // The session key is now ready.
  1466. //--------------------------------------------------------------------
  1467. // 因为加密算法是按ENCRYPT_BLOCK_SIZE 大小的块加密的,所以被加密的
  1468. // 数据长度必须是ENCRYPT_BLOCK_SIZE 的整数倍。下面计算一次加密的
  1469. // 数据长度。
  1470. dwBlockLen = 1000 - 1000 % ENCRYPT_BLOCK_SIZE;
  1471. //--------------------------------------------------------------------
  1472. // Determine the block size. If a block cipher is used,
  1473. // it must have room for an extra block.
  1474. if(ENCRYPT_BLOCK_SIZE > 1)
  1475. dwBufferLen = dwBlockLen + ENCRYPT_BLOCK_SIZE;
  1476. else
  1477. dwBufferLen = dwBlockLen;
  1478. dwCount=dwBufferLen;
  1479. //--------------------------------------------------------------------
  1480. // In a do loop, encrypt the source file and write to the source file.
  1481. int count;
  1482. // if(leng%dwBlockLen==0)
  1483. count=leng/dwBufferLen;
  1484. // else
  1485. // count=leng/dwBlockLen+1;
  1486. int i = 0;
  1487. for( i=0; i<count; i++)
  1488. {
  1489. pbBuffer=buffer+i*dwBufferLen;
  1490. // 加密数据
  1491. if(!CryptEncrypt(
  1492. hKey, //密钥
  1493. 0, //如果数据同时进行散列和加密,这里传入一个散列对象
  1494. 0, //如果是最后一个被加密的块,输入TRUE.如果不是输入FALSE.
  1495. //这里通过判断是否到文件尾来决定是否为最后一块。
  1496. 0, //保留
  1497. pbBuffer, //输入被加密数据,输出加密后的数据
  1498. &dwCount, //输入被加密数据实际长度,输出加密后数据长度
  1499. dwBufferLen)) //pbBuffer的大小。
  1500. {
  1501. return 0;
  1502. }
  1503. }
  1504. if(leng%dwBlockLen)
  1505. {
  1506. pbBuffer=buffer+i*dwBufferLen;
  1507. dwCount=leng-i*dwBufferLen;
  1508. if(!CryptEncrypt(
  1509. hKey, //密钥
  1510. 0, //如果数据同时进行散列和加密,这里传入一个散列对象
  1511. TRUE, //如果是最后一个被加密的块,输入TRUE.如果不是输入FALSE.
  1512. //这里通过判断是否到文件尾来决定是否为最后一块。
  1513. 0, //保留
  1514. pbBuffer, //输入被加密数据,输出加密后的数据
  1515. &dwCount, //输入被加密数据实际长度,输出加密后数据长度
  1516. dwBufferLen)) //pbBuffer的大小。
  1517. {
  1518. return 0;
  1519. }
  1520. }
  1521. //--------------------------------------------------------------------
  1522. // Destroy session key.
  1523. if(hKey)
  1524. CryptDestroyKey(hKey);
  1525. //--------------------------------------------------------------------
  1526. // Destroy hash object.
  1527. if(hHash)
  1528. CryptDestroyHash(hHash);
  1529. //--------------------------------------------------------------------
  1530. // Release provider handle.
  1531. if(hCryptProv)
  1532. CryptReleaseContext(hCryptProv, 0);
  1533. return(TRUE);
  1534. }
  1535. catch(...)
  1536. {
  1537. }
  1538. }