ChoosePhotoSkin2.cpp 107 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303
  1. // ChoosePhotoSkin2.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ChoosePhotoSkin2.h"
  5. #include "YLGL.h"
  6. #include "./helper/ffsco.h"
  7. #include ".\MenuBarXP\MenuXP.h"
  8. #include "ChoosePhotoSkin3.h"
  9. #include "ShowPic22.h"
  10. #include "ClientRequirement.h"
  11. #include "MyLock.h"
  12. #include "ComparePhoto.h"
  13. #include "ReplaceDesignNo.h"
  14. #include "Login2.h"
  15. #include "TimeOutDlg.h"
  16. #include "ShowEffect.h"
  17. #include "SelBrunDevice.h"
  18. #include "ProductChooseFilter.h"
  19. #include "NewFolderDlg.h"
  20. #include "NetShareInfo.h"
  21. #include "ShowMsg3.h"
  22. using namespace helper_coffs;
  23. #ifdef _DEBUG
  24. //#define new DEBUG_NEW (如果出现new时传多个参数会出错)
  25. #undef THIS_FILE
  26. static char THIS_FILE[] = __FILE__;
  27. #endif
  28. using namespace helper_coffs;
  29. extern int GetOrientation(Image *image);
  30. extern HCURSOR g_cursorhand;
  31. /////////////////////////////////////////////////////////////////////////////
  32. // ChoosePhotoSkin2 message handlers
  33. extern void SizeToContent(HWND hwnd, Image *img);
  34. //mode
  35. //0 全部
  36. //1 选中
  37. //2 未选
  38. //3 删除
  39. //4 入册
  40. //5 入底
  41. /////////////////////////////////////////////////////////////////////////////
  42. // ChoosePhotoSkin2 dialog IDC_EDITzs
  43. ChoosePhotoSkin2::ChoosePhotoSkin2(CWnd* pParent /*=NULL*/) : ChoosePhotoBase(ChoosePhotoSkin2::IDD, pParent)
  44. {
  45. m_time4 = g_date;
  46. g_pMainWnd->GetSkin();
  47. m_strStatusOfChoosePhoto = _T("未选");
  48. m_pCurrSelFolder = NULL;
  49. m_OpenFolder = NULL;
  50. m_pFolderImg = NULL;
  51. m_Runingmode = 0;
  52. m_bHide = atoi(g_cominfoarray.ElementAt(0).ElementAt(59));
  53. }
  54. ChoosePhotoSkin2::ChoosePhotoSkin2(DWORD id, CWnd* pParent) : ChoosePhotoBase(id, pParent)
  55. {
  56. m_time4 = g_date;
  57. g_pMainWnd->GetSkin();
  58. m_strStatusOfChoosePhoto = _T("未选");
  59. m_pCurrSelFolder = NULL;
  60. m_OpenFolder = NULL;
  61. m_pFolderImg = NULL;
  62. m_Runingmode = 0;
  63. m_bHide = atoi(g_cominfoarray.ElementAt(0).ElementAt(59));
  64. }
  65. void ChoosePhotoSkin2::DoDataExchange(CDataExchange* pDX)
  66. {
  67. CDialog::DoDataExchange(pDX);
  68. //{{AFX_DATA_MAP(ChoosePhotoSkin2)
  69. DDX_Control(pDX, IDC_COMBO1, m_combo1);
  70. DDX_Control(pDX, IDC_LIST3, m_List3);
  71. DDX_Control(pDX, IDC_LIST2, m_List2);
  72. DDX_Control(pDX, IDC_LIST1, m_List1);
  73. DDX_Text(pDX, IDC_EDITname1, m_name1);
  74. DDX_Text(pDX, IDC_EDITname2, m_name2);
  75. DDX_Text(pDX, IDC_EDITtime4, m_time4);
  76. DDX_Text(pDX, IDC_EDITwaiter3, m_waiter3);
  77. DDX_Text(pDX, IDC_EDITzs, m_takezs);
  78. DDX_Text(pDX, IDC_EDITzs2, m_taoxizs);
  79. DDX_Text(pDX, IDC_EDITzs3, m_choosezs);
  80. DDX_Text(pDX, IDC_EDITmoney3, m_money3);
  81. DDX_Text(pDX, IDC_EDITid, m_strOrderNumber);
  82. DDX_Text(pDX, IDC_EDITbz3, m_bz3);
  83. //}}AFX_DATA_MAP}
  84. }
  85. BEGIN_MESSAGE_MAP(ChoosePhotoSkin2, CDialog)
  86. //{{AFX_MSG_MAP(ChoosePhotoSkin2)
  87. ON_WM_PAINT()
  88. ON_WM_DESTROY()
  89. ON_WM_ERASEBKGND()
  90. ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
  91. ON_WM_CLOSE()
  92. ON_NOTIFY(NM_RCLICK, IDC_LIST1, OnRclickList1)
  93. ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
  94. ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1)
  95. ON_WM_TIMER()
  96. //}}AFX_MSG_MAP
  97. ON_MESSAGE(WM_USER + 1101, OnBtnClick)
  98. ON_COMMAND_RANGE(IDM_MENUsp1 - 1, IDM_MENUsp1 + 200, OnCommandMenu)
  99. ON_COMMAND(IDM_NEWFOLDER, OnNewFolder)
  100. ON_COMMAND(IDM_DELFOLDER, OnDelFolder)
  101. ON_COMMAND(IDM_OPENFOLDER, OnOpenFolder)
  102. ON_COMMAND(IDM_RETURNMAINDIR, OnReturnMainDir)
  103. ON_MESSAGE(WM_USER + 200, UpdateTakeZS)
  104. END_MESSAGE_MAP()
  105. /////////////////////////////////////////////////////////////////////////////
  106. // ChoosePhotoSkin2 message handlers
  107. BOOL ChoosePhotoSkin2::OnInitDialog() //初始化选片*看设计
  108. {
  109. ChoosePhotoBase::OnInitDialog();
  110. //加载相片和文件夹icon;
  111. LoadImageFromRes(&m_pHideImg, MAKEINTRESOURCE(IDR_JPG5), _T("JPG"));
  112. if(m_pHideImg == NULL)
  113. {
  114. MessageBox(_T("加载图标失败"));
  115. return FALSE;
  116. }
  117. LoadImageFromRes(&m_pFolderImg, MAKEINTRESOURCE(IDR_JPG14), _T("JPG"));
  118. if(m_pFolderImg == NULL)
  119. {
  120. MessageBox(_T("加载图标失败"));
  121. return FALSE;
  122. }
  123. // 1.加载lia皮肤信息;
  124. g_bInSkin = 1;
  125. m_ticks = ::GetTickCount();
  126. if (g_cursorhand == NULL)
  127. g_cursorhand = AfxGetApp()->LoadCursor(IDC_CURSORHAND);
  128. BYTE *pData = NULL;
  129. BYTE *pDataBegin;
  130. //printf("Jeff:loadLia路径:%s\n\n",g_mainpath+"\\skin\\"+m_liapath);//Jeff Printf;
  131. if (!LoadLia(g_mainpath + _T("\\skin\\") + m_liapath, &pData, &pDataBegin, &m_pBk, m_hWnd))
  132. {
  133. EndDialog(0);
  134. return false;
  135. }
  136. //初始化按钮和位置
  137. //printf("Jeff:g_resdata2.nPicCount=%d\n\n",g_resdata2.nPicCount); // Jeff Printf,这个nPicCount好像一直是15;
  138. for (int i = 0; i < g_resdata2.nPicCount; i++)
  139. {
  140. g_resdata2.rect[i].left *= g_fscalex;
  141. g_resdata2.rect[i].right *= g_fscalex;
  142. g_resdata2.rect[i].top *= g_fscaley;
  143. g_resdata2.rect[i].bottom *= g_fscaley;
  144. if (i == 8)
  145. g_resdata2.rect[i] = g_resdata2.rect[2];
  146. else if (i == 9)
  147. g_resdata2.rect[i] = g_resdata2.rect[3];
  148. else if (i == 10)
  149. g_resdata2.rect[i] = g_resdata2.rect[1];
  150. if (g_resdata2.nPicBmpCount[i])
  151. {
  152. MyBmpButton2 *pic = new MyBmpButton2;
  153. m_picarray.Add((DWORD)pic);
  154. CRect rc = g_resdata2.rect[i];
  155. CString str;
  156. str.Format(_T("%d"), i + 1);
  157. pic->Create(str, WS_CHILD | WS_VISIBLE | BS_OWNERDRAW, rc, this, i + 100);
  158. pic->m_bmpcount = g_resdata2.nPicBmpCount[i];
  159. pic->ReadBmp(&pData, NULL, this);
  160. #ifdef SZWNS_VERSION//深圳维纳斯
  161. if(i==3 && m_mode2==0)
  162. {
  163. Image *img=NULL;
  164. LoadImageFromRes(&img, MAKEINTRESOURCE(IDR_JPG6), _T("JPG"));
  165. delete pic->m_bmp;
  166. pic->m_bmp=img->Clone();
  167. delete img;
  168. img=NULL;
  169. LoadImageFromRes(&img, MAKEINTRESOURCE(IDR_JPG7), _T("JPG"));
  170. delete pic->m_bmpfocus;
  171. pic->m_bmpfocus=img->Clone();
  172. delete img;
  173. img=NULL;
  174. LoadImageFromRes(&img, MAKEINTRESOURCE(IDR_JPG8), _T("JPG"));
  175. delete pic->m_bmpfocused;
  176. pic->m_bmpfocused=img->Clone();
  177. delete img;
  178. }
  179. #endif//SZWNS_VERSION
  180. }
  181. else
  182. m_picarray.Add(NULL);
  183. m_rcarray.Add(g_resdata2.rect[i]);
  184. }
  185. delete[]pDataBegin;
  186. //初始化按钮位置;
  187. if (atoi(g_cominfoarray.ElementAt(0).ElementAt(86)))
  188. {
  189. ((MyBmpButton2*)m_picarray.ElementAt(3))->ShowWindow(SW_HIDE);
  190. CRect rc, rc2;
  191. ((MyBmpButton2*)m_picarray.ElementAt(3))->GetWindowRect(rc);
  192. ((MyBmpButton2*)m_picarray.ElementAt(1))->GetWindowRect(rc2);
  193. int dtx = rc.right - rc2.right;
  194. ScreenToClient(rc2);
  195. rc2.left += dtx;
  196. rc2.right += dtx;
  197. ((MyBmpButton2*)m_picarray.ElementAt(1))->MoveWindow(rc2);
  198. ((MyBmpButton2*)m_picarray.ElementAt(0))->GetWindowRect(rc2);
  199. ScreenToClient(rc2);
  200. rc2.left += dtx;
  201. rc2.right += dtx;
  202. ((MyBmpButton2*)m_picarray.ElementAt(0))->MoveWindow(rc2);
  203. }
  204. if (1)//m_mode2==0)
  205. {
  206. ((MyBmpButton2*)m_picarray.ElementAt(7))->ShowWindow(SW_HIDE);
  207. ((MyBmpButton2*)m_picarray.ElementAt(8))->ShowWindow(SW_HIDE);
  208. ((MyBmpButton2*)m_picarray.ElementAt(9))->ShowWindow(SW_HIDE);
  209. ((MyBmpButton2*)m_picarray.ElementAt(10))->ShowWindow(SW_HIDE);
  210. ((MyBmpButton2*)m_picarray.ElementAt(11))->ShowWindow(SW_HIDE);
  211. }
  212. else
  213. {
  214. ((MyBmpButton2*)m_picarray.ElementAt(7))->EnableWindow(0);
  215. ((MyBmpButton2*)m_picarray.ElementAt(0))->ShowWindow(SW_HIDE);
  216. ((MyBmpButton2*)m_picarray.ElementAt(1))->ShowWindow(SW_HIDE);
  217. ((MyBmpButton2*)m_picarray.ElementAt(2))->ShowWindow(SW_HIDE);
  218. ((MyBmpButton2*)m_picarray.ElementAt(3))->ShowWindow(SW_HIDE);
  219. ((MyBmpButton2*)m_picarray.ElementAt(11))->ShowWindow(SW_HIDE);
  220. if (IsHasRights2new(37) == 0)
  221. {
  222. ((MyBmpButton2*)m_picarray.ElementAt(8))->ShowWindow(SW_HIDE);
  223. ((MyBmpButton2*)m_picarray.ElementAt(9))->ShowWindow(SW_HIDE);
  224. }
  225. }
  226. {
  227. CRect rc, rc2;
  228. ((MyBmpButton2*)m_picarray.ElementAt(5))->GetWindowRect(rc);
  229. ((MyBmpButton2*)m_picarray.ElementAt(4))->GetWindowRect(rc2);
  230. int dtx = rc.right - rc2.right;
  231. rc2 = rc;
  232. // if(atoi(g_cominfoarray.ElementAt(0).ElementAt(86))==0)
  233. {
  234. float scale = 0.9;
  235. dtx *= scale;
  236. int wid = rc2.Width()*scale;
  237. int hei = rc2.Height()*scale;
  238. int dty = rc2.Height() - hei;
  239. dty /= 2;
  240. rc2.left = rc2.right - wid;
  241. rc2.top += dty;
  242. rc2.bottom = rc2.top + hei;
  243. }
  244. ScreenToClient(rc2);
  245. ((MyBmpButton2*)m_picarray.ElementAt(5))->MoveWindow(rc2);
  246. rc2.left -= dtx;
  247. rc2.right -= dtx;
  248. ((MyBmpButton2*)m_picarray.ElementAt(4))->MoveWindow(rc2);
  249. rc2.left -= dtx;
  250. rc2.right -= dtx;
  251. ((MyBmpButton2*)m_picarray.ElementAt(14))->MoveWindow(rc2);
  252. rc2.left -= dtx;
  253. rc2.right -= dtx;
  254. ((MyBmpButton2*)m_picarray.ElementAt(2))->MoveWindow(rc2);
  255. if (atoi(g_cominfoarray.ElementAt(0).ElementAt(86)) == 0)
  256. {
  257. rc2.left -= dtx;
  258. rc2.right -= dtx;
  259. ((MyBmpButton2*)m_picarray.ElementAt(3))->MoveWindow(rc2);
  260. }
  261. rc2.left -= dtx;
  262. rc2.right -= dtx;
  263. ((MyBmpButton2*)m_picarray.ElementAt(12))->MoveWindow(rc2);
  264. rc2.left -= dtx;
  265. rc2.right -= dtx;
  266. ((MyBmpButton2*)m_picarray.ElementAt(13))->MoveWindow(rc2);
  267. rc2.left -= dtx;
  268. rc2.right -= dtx;
  269. ((MyBmpButton2*)m_picarray.ElementAt(1))->MoveWindow(rc2);
  270. rc2.left -= dtx;
  271. rc2.right -= dtx;
  272. ((MyBmpButton2*)m_picarray.ElementAt(0))->MoveWindow(rc2);
  273. }
  274. #ifndef MNLS_VERSION//mnls
  275. ((MyBmpButton2*)m_picarray.ElementAt(7))->ShowWindow(SW_HIDE);
  276. ((MyBmpButton2*)m_picarray.ElementAt(7))->EnableWindow(0);
  277. Graphics graph(m_pBk);
  278. Image *img = NULL;
  279. ::LoadImageFromBuf(&img, g_mainpath + _T("\\图片\\标题-选片.jpg"));
  280. if (img)
  281. {
  282. if (img->GetWidth() == 2000)
  283. {
  284. graph.SetSmoothingMode(SmoothingModeHighQuality);
  285. graph.DrawImage(img, 0, 0);
  286. }
  287. delete img;
  288. }
  289. #endif//MNLS_VERSION
  290. //初始化列表位置;
  291. CRect listrc = m_rcarray.ElementAt(6);
  292. {
  293. CRect rc;
  294. GetClientRect(rc);
  295. rc.top = listrc.top;
  296. m_List1.MoveWindow(rc);
  297. }
  298. //创建图标列表控件;
  299. m_ImageListThumb.Create(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, ILC_COLOR24, 0, 1);
  300. m_List1.SetImageList(&m_ImageListThumb, LVSIL_NORMAL);
  301. m_List2.InitStyle();
  302. m_List2.InsertColumn(0, _T("编号"), LVCFMT_LEFT, 45);
  303. m_List2.InsertColumn(1, _T("商品名称"), LVCFMT_LEFT, 150);
  304. m_List2.InsertColumn(2, _T("数量"), LVCFMT_LEFT, 45);
  305. m_List3.InitStyle();
  306. m_List3.InsertColumn(0, _T("autoid"), LVCFMT_LEFT, 0);
  307. m_List3.InsertColumn(1, _T("编号"), LVCFMT_LEFT, 45);
  308. m_List3.InsertColumn(2, _T("商品名称"), LVCFMT_LEFT, 150);
  309. m_List3.InsertColumn(3, _T("价格"), LVCFMT_LEFT, 45);
  310. m_List3.InsertColumn(4, _T("数量"), LVCFMT_LEFT, 45);
  311. #ifdef LKAY_VERSION
  312. m_List3.InsertColumn(5,_T("P数"),LVCFMT_LEFT,55);
  313. m_List3.InsertColumn(6,_T("张数"),LVCFMT_LEFT,55);
  314. m_List3.InsertColumn(7,_T("照片编号"),LVCFMT_LEFT,365);
  315. #else
  316. m_List3.InsertColumn(5, _T("照片编号"), LVCFMT_LEFT, 365);
  317. // 2015.11.13 保存列表添加多一列商品备注选项;
  318. m_List3.InsertColumn(6, _T("备注"), LVCFMT_LEFT, 300);
  319. #endif//LKAY_VERSION
  320. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  321. // 以上均为界面布局;
  322. // 下面的代码才是数据处理;
  323. CString path, str;
  324. {
  325. #if USE_SHARE_FLORD
  326. LoadSelectPhotos();
  327. #else
  328. //选择此次拍摄名称DLG(如:拍摄景点)
  329. GetTXName(&m_strOrderNumber, 1, m_bGrowthTX, m_seltxname);
  330. // HC:缓存,checkHC检查在本机是否存在缓存的相片;
  331. if (IsThereACacheImg()) // (一般返回0)这一步是查看C:\WINDOWS\System32\有没有lyfz的文件夹,以及该文件夹下是否有订单号文件夹和相片;
  332. m_bFromLocal = 1;
  333. //printf("Jeff:m_AllPhotoPath.GetSize()=%d\n\n",m_AllPhotoPath.GetSize());// Jeff Printf;
  334. if (m_AllPhotoPath.GetSize() == 0) // m_AllPhotoPath:查看全部相片.
  335. {
  336. if (IsPhoto2Exist())//如果订单文件夹存在;
  337. {
  338. SelBrunDevice dlg;
  339. dlg.m_mode = 0;
  340. if (dlg.DoModal() == IDOK) // m_nChoosePhotoType =0:修片; =1原片 =2:原片+修片
  341. m_nChoosePhotoType = dlg.m_sel;
  342. else
  343. m_nChoosePhotoType = 1;
  344. }
  345. else AfxMessageBox(_T("温馨提示:\r\n未找到初修片,将使用原片选片"), MB_ICONINFORMATION);
  346. CString path2 = _T("");
  347. m_path = g_path1 + _T("\\");
  348. m_path += m_strOrderNumber;
  349. m_path += _T("\\");
  350. if(!IsShareFolderExist(m_path))
  351. AfxMessageBox(_T("温馨提示:\r\n未找到") + m_path, MB_ICONINFORMATION);
  352. if (m_seltxname != "" && m_seltxname != _T("全部"))
  353. {
  354. m_path += m_seltxname;
  355. m_path += _T("\\");
  356. }
  357. if (m_nChoosePhotoType == 1) // 选片:选择修片文件夹;
  358. {
  359. m_path = g_path2 + _T("\\");
  360. m_path += m_strOrderNumber;
  361. m_path += _T("\\");
  362. if(!IsShareFolderExist(m_path))
  363. AfxMessageBox(_T("温馨提示:\r\n未找到") + m_path, MB_ICONINFORMATION);
  364. #if JEFF_TEST_ON // 成长套系选择修好的片时需要; [3/25/2015 lyfz]
  365. if (m_seltxname != "" && m_seltxname != _T("全部"))
  366. {
  367. m_path += m_seltxname;
  368. m_path += _T("\\");
  369. }
  370. #endif//JEFF_TEST_ON
  371. }
  372. //获取所有相片
  373. GetAllPhotoPath(m_path, m_AllPhotoPath);
  374. if (m_nChoosePhotoType != 2) // Jeff:如果不是只查看原片 ,只有初修片里才有多种效果;
  375. //if (m_nChoosePhotoType != 0) // Jeff:如果不是只查看原片;
  376. {//多种修好的效果
  377. CString path2;
  378. path2 = g_path2 + _T("\\");
  379. path2 += m_strOrderNumber;
  380. path2 += _T("\\"); //printf("Jeff:****paht2=%s\n\n",path2);//Jeff Printf;path2="修好的片"
  381. ffsco o;
  382. o.dirs(0);
  383. o.find(LPCSTR(path2), LPCSTR("*.jpg"));
  384. ffsco::typeT coo;
  385. ffsco::typeT::iterator it;
  386. coo = o.co_file();
  387. for (it = coo.begin(); coo.end() != it; it++)
  388. {
  389. path = (*it).c_str();
  390. if (path.GetAt(path.ReverseFind('\\') + 1) != 's' && path.GetAt(path.ReverseFind('\\') + 1) != 'm')
  391. {
  392. path.MakeLower();
  393. path2 = path.Right(path.GetLength() - path.ReverseFind('\\') - 1);
  394. if (path2.Find(_T("-")) != -1)
  395. {
  396. #if JEFF_TEST_ON
  397. if(PathFileExists(path))
  398. m_AllPhotoPath.Add(path);
  399. #else
  400. m_AllPhotoPath.Add(path);
  401. #endif//JEFF_TEST_ON
  402. }
  403. }
  404. }
  405. }
  406. }
  407. #endif//USE_SHARE_FLORD
  408. if (m_AllPhotoPath.GetSize() && atoi(g_cominfoarray.ElementAt(0).ElementAt(61)))
  409. {
  410. int size = m_AllPhotoPath.GetSize() - 1;
  411. CString sTemp;
  412. int nPos;
  413. for (int i = 0; i < size; i++)
  414. {
  415. nPos = rand() % (size - i);
  416. sTemp = m_AllPhotoPath.ElementAt(size - i);
  417. m_AllPhotoPath.SetAt(size - i, m_AllPhotoPath.ElementAt(nPos));
  418. m_AllPhotoPath.SetAt(nPos, sTemp);
  419. }
  420. }
  421. }
  422. // 开始选片;读取数据;
  423. GetData();
  424. //是否已选过;
  425. if (m_checkstatus == "OK")
  426. {
  427. if (atoi(g_cominfoarray.ElementAt(0).ElementAt(85)) && IsHasRights2new(20) == 0)
  428. {
  429. Login2 dlg;
  430. if (dlg.DoModal() != IDOK)
  431. {
  432. MyBmpButton2 *btn = ((MyBmpButton2*)m_picarray.ElementAt(4));
  433. btn->m_bmpdisable = btn->m_bmp->Clone();
  434. Graphics graph(btn->m_bmpdisable);
  435. CPoint pt1, pt2, pt3;
  436. pt1.x = 0;
  437. pt1.y = 0;
  438. pt2.x = btn->m_bmp->GetWidth();
  439. pt2.y = 0;
  440. pt3.x = 0;
  441. pt3.y = btn->m_bmp->GetHeight();
  442. //目标位置
  443. Point destinationPoints[] = {
  444. Point(pt1.x, pt1.y), // destination for upper-left point of original
  445. Point(pt2.x, pt2.y), // destination for upper-right point of original
  446. Point(pt3.x, pt3.y) }; // destination for lower-left point of original
  447. //颜色
  448. ColorMatrix colorMatrix = \
  449. {0.33f, 0.33f, 0.33f, 0.0f, 0.0f,
  450. 0.33f, 0.33f, 0.33f, 0.0f, 0.0f,
  451. 0.33f, 0.33f, 0.33f, 0.0f, 0.0f,
  452. 0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
  453. 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
  454. ImageAttributes imageAtt;
  455. imageAtt.SetColorMatrix(&colorMatrix, ColorMatrixFlagsDefault, ColorAdjustTypeBitmap);
  456. graph.DrawImage(btn->m_bmp,
  457. destinationPoints,
  458. 3,
  459. 0,
  460. 0,
  461. btn->m_bmp->GetWidth(),
  462. btn->m_bmp->GetHeight(),
  463. UnitPixel,
  464. &imageAtt);
  465. btn->EnableWindow(0);
  466. m_bCanSave = 0;
  467. // CDialog::OnCancel ();
  468. // return 1;
  469. }
  470. else if (IsHasRightsnew2(20, dlg.m_rights) == 0)
  471. {
  472. MyBmpButton2 *btn = ((MyBmpButton2*)m_picarray.ElementAt(4));
  473. btn->m_bmpdisable = btn->m_bmp->Clone();
  474. Graphics graph(btn->m_bmpdisable);
  475. CPoint pt1, pt2, pt3;
  476. pt1.x = 0;
  477. pt1.y = 0;
  478. pt2.x = btn->m_bmp->GetWidth();
  479. pt2.y = 0;
  480. pt3.x = 0;
  481. pt3.y = btn->m_bmp->GetHeight();
  482. Point destinationPoints[] = {
  483. Point(pt1.x, pt1.y), // destination for upper-left point of original
  484. Point(pt2.x, pt2.y), // destination for upper-right point of original
  485. Point(pt3.x, pt3.y) }; // destination for lower-left point of original
  486. ColorMatrix colorMatrix = \
  487. {0.33f, 0.33f, 0.33f, 0.0f, 0.0f,
  488. 0.33f, 0.33f, 0.33f, 0.0f, 0.0f,
  489. 0.33f, 0.33f, 0.33f, 0.0f, 0.0f,
  490. 0.0f, 0.0f, 0.0f, 1.0f, 0.0f,
  491. 0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
  492. ImageAttributes imageAtt;
  493. imageAtt.SetColorMatrix(&colorMatrix, ColorMatrixFlagsDefault, ColorAdjustTypeBitmap);
  494. graph.DrawImage(btn->m_bmp,
  495. destinationPoints,
  496. 3,
  497. 0,
  498. 0,
  499. btn->m_bmp->GetWidth(),
  500. btn->m_bmp->GetHeight(),
  501. UnitPixel,
  502. &imageAtt);
  503. btn->EnableWindow(0); m_bCanSave = 0;
  504. // CDialog::OnCancel ();
  505. // return 1;
  506. }
  507. }
  508. }
  509. // 记录要删除的相片;
  510. RecordDeletedPhotos(&m_delphotos, m_DelPhotoPath);
  511. // 加载文件夹;
  512. LoadFolder();
  513. //在界面上显示图片;
  514. LoadPhotos();
  515. if (atoi(g_cominfoarray.ElementAt(0).ElementAt(95)) || g_cominfoarray.ElementAt(0).ElementAt(95) == _T(""))
  516. {
  517. int timer1 = atoi(g_cominfoarray.ElementAt(0).ElementAt(96));
  518. m_timer = atoi(g_cominfoarray.ElementAt(0).ElementAt(97));
  519. if (timer1 == 0)
  520. timer1 = 60;
  521. if (m_timer == 0)
  522. m_timer = 20;
  523. SetTimer(1, timer1 * 60000, NULL);
  524. }
  525. return false;
  526. }
  527. void ChoosePhotoSkin2::OnPaint()
  528. {
  529. try
  530. {
  531. CPaintDC dc(this); // device context for painting
  532. // TODO: Add your message handler code here
  533. if (m_pBk == NULL)
  534. {
  535. return;
  536. }
  537. CRect rc;
  538. GetClientRect(rc);
  539. Graphics graph(dc.GetSafeHdc());
  540. Rect destinationRect(0, 0, rc.Width(), rc.Height());
  541. int width = m_pBk->GetWidth();
  542. int height = m_pBk->GetHeight();
  543. graph.SetSmoothingMode(SmoothingModeHighQuality);
  544. graph.DrawImage(m_pBk, destinationRect, 0, 0, width, height, UnitPixel);
  545. // Do not call CDialog::OnPaint() for painting messages
  546. }
  547. catch (...)
  548. {
  549. }
  550. }
  551. void ChoosePhotoSkin2::OnDestroy()
  552. {
  553. try
  554. {
  555. TerminateThread();
  556. if (m_pBk)delete m_pBk;
  557. MyBmpButton2 *pic = NULL;
  558. for (int i = 0; i < m_picarray.GetSize(); i++)
  559. {
  560. pic = (MyBmpButton2*)m_picarray.ElementAt(i);
  561. if (pic)
  562. {
  563. pic->DestroyWindow();
  564. delete pic;
  565. }
  566. }
  567. m_picarray.RemoveAll();
  568. if (m_selphotownd.GetSafeHwnd())
  569. {
  570. m_selphotownd.DestroyWindow();
  571. }
  572. if (m_selphotownd2.GetSafeHwnd())
  573. {
  574. m_selphotownd2.DestroyWindow();
  575. }
  576. //清除资源的路径
  577. ClearResData();
  578. ClearFolder();
  579. if(m_pHideImg)
  580. delete m_pHideImg;
  581. if(m_pFolderImg)
  582. delete m_pFolderImg;
  583. CDialog::OnDestroy();
  584. }
  585. catch (...)
  586. {
  587. }
  588. }
  589. #ifdef VC60
  590. void ChoosePhotoSkin2::OnBtnClick(WPARAM wParam, LPARAM lParam)
  591. {
  592. // WM_USER + 1101
  593. // F5按键,显示删除相片
  594. int id = lParam;
  595. id -= 99;
  596. switch (id)
  597. {
  598. case 1: // 查看全部相片按钮事件;
  599. case 2: // 查看选中的相片按钮事件;
  600. case 4: // F5查看删除的相片;
  601. {
  602. if (m_SelectCategory == id - 1 && m_SelectCategory != 1)
  603. return;
  604. m_SelectCategory = id - 1;
  605. if(INDX_SEL == m_SelectCategory)
  606. OnSelPhoto();
  607. LoadPhotos();
  608. }
  609. break;
  610. case 3://查看未选按钮事件;
  611. {
  612. m_SelectCategory = INDX_NOSEL;
  613. m_sChooseFilter = _T("");
  614. UpdateChooseZS();
  615. GetNoSelPhoto();
  616. LoadPhotos();
  617. }
  618. break;
  619. case 13: // 查看入册相片按钮事件;
  620. GetAlbumPhoto();
  621. LoadPhotos();
  622. break;
  623. case 14: // 查看入底相片按钮事件;
  624. GetDiskPhoto();
  625. LoadPhotos();
  626. break;
  627. case 15: // 效果图按钮事件;
  628. {
  629. ShowEffectDlg dlg;
  630. if(m_OpenFolder)
  631. dlg.m_pPhotopatharray = this->GetCurArray(0, m_OpenFolder);
  632. else
  633. dlg.m_pPhotopatharray = this->GetCurArray(m_SelectCategory);
  634. dlg.DoModal();
  635. }
  636. break;
  637. case 5: // 保存按钮事件;
  638. OnButton4();
  639. break;
  640. case 6: // 关闭按钮事件 ;
  641. if (m_bModify && m_bCanSave)
  642. {
  643. ShowMsg3 dlg;
  644. dlg.m_strMsg = _T("提醒, 选片修改未保存, 是否保存后再退出?");
  645. // if (AfxMessageBox(_T("提醒, 选片修改未保存, 是否保存后再退出?"), MB_YESNO | MB_ICONINFORMATION) == IDYES)
  646. if(dlg.DoModal() == IDOK)
  647. {
  648. OnButton4();
  649. if (m_bSaveFail)
  650. {
  651. AfxMessageBox(_T("连接服务器失败, 保存失败, 您可以在本机上重新进入选片恢复到选中状态!"));
  652. CDialog::OnCancel();
  653. return;
  654. }
  655. return;
  656. }
  657. else
  658. {
  659. CString savepath = _T("");
  660. savepath.Format("%s\\%s.dat", g_mainpath, m_strOrderNumber);
  661. ::DeleteFile(savepath); // 删除*.dat文件;
  662. }
  663. }
  664. CDialog::OnCancel();
  665. break;
  666. case 11:
  667. if (m_selphotownd.GetSafeHwnd() == NULL)
  668. {
  669. m_selphotownd.m_id = m_strOrderNumber;
  670. m_selphotownd.m_rc = m_rcarray.ElementAt(6);
  671. m_selphotownd.Create(IDD_DLGShowSelPhoto, this);
  672. }
  673. m_selphotownd.ShowWindow(1);
  674. break;
  675. }
  676. }
  677. #else
  678. LRESULT ChoosePhotoSkin2::OnBtnClick(WPARAM wParam, LPARAM lParam)
  679. {
  680. // WM_USER + 1101
  681. // F5按键,显示删除相片
  682. int id = lParam;
  683. id -= 99;
  684. switch (id)
  685. {
  686. case 1: // 查看全部相片按钮事件;
  687. case 2: // 查看选中的相片按钮事件;
  688. case 4: // F5查看删除的相片;
  689. {
  690. if (m_SelectCategory == id - 1 && m_SelectCategory != 1)
  691. return 0;
  692. m_SelectCategory = id - 1;
  693. if(INDX_SEL == m_SelectCategory)
  694. OnSelPhoto();
  695. LoadPhotos();
  696. }
  697. break;
  698. case 3://查看未选按钮事件;
  699. {
  700. m_SelectCategory = INDX_NOSEL;
  701. m_sChooseFilter = _T("");
  702. UpdateChooseZS();
  703. GetNoSelPhoto();
  704. LoadPhotos();
  705. }
  706. break;
  707. case 13: // 查看入册相片按钮事件;
  708. GetAlbumPhoto();
  709. LoadPhotos();
  710. break;
  711. case 14: // 查看入底相片按钮事件;
  712. GetDiskPhoto();
  713. LoadPhotos();
  714. break;
  715. case 15: // 效果图按钮事件;
  716. {
  717. ShowEffectDlg dlg;
  718. if(m_OpenFolder)
  719. dlg.m_pPhotopatharray = this->GetCurArray(0, m_OpenFolder);
  720. else
  721. dlg.m_pPhotopatharray = this->GetCurArray(m_SelectCategory);
  722. dlg.DoModal();
  723. }
  724. break;
  725. case 5: // 保存按钮事件;
  726. OnButton4();
  727. break;
  728. case 6: // 关闭按钮事件 ;
  729. if (m_bModify && m_bCanSave)
  730. {
  731. ShowMsg3 dlg;
  732. dlg.m_strMsg = _T("提醒, 选片修改未保存, 是否保存后再退出?");
  733. // if (AfxMessageBox(_T("提醒, 选片修改未保存, 是否保存后再退出?"), MB_YESNO | MB_ICONINFORMATION) == IDYES)
  734. if(dlg.DoModal() == IDOK)
  735. {
  736. OnButton4();
  737. if (m_bSaveFail)
  738. {
  739. AfxMessageBox(_T("连接服务器失败, 保存失败, 您可以在本机上重新进入选片恢复到选中状态!"));
  740. CDialog::OnCancel();
  741. return 0;
  742. }
  743. return 0;
  744. }
  745. else
  746. {
  747. CString savepath = _T("");
  748. savepath.Format("%s\\%s.dat", g_mainpath, m_strOrderNumber);
  749. ::DeleteFile(savepath); // 删除*.dat文件;
  750. }
  751. }
  752. CDialog::OnCancel();
  753. break;
  754. case 11:
  755. if (m_selphotownd.GetSafeHwnd() == NULL)
  756. {
  757. m_selphotownd.m_id = m_strOrderNumber;
  758. m_selphotownd.m_rc = m_rcarray.ElementAt(6);
  759. m_selphotownd.Create(IDD_DLGShowSelPhoto, this);
  760. }
  761. m_selphotownd.ShowWindow(1);
  762. break;
  763. }
  764. return 0;
  765. }
  766. #endif
  767. BOOL ChoosePhotoSkin2::OnEraseBkgnd(CDC* pDC)
  768. {
  769. return 1;
  770. }
  771. BEGIN_EVENTSINK_MAP(ChoosePhotoSkin2, CDialog)
  772. ON_EVENT(ChoosePhotoSkin2, 100, 150 /* FSCommand */, OnFSCommandShockwaveflash1, VTS_BSTR VTS_BSTR)
  773. END_EVENTSINK_MAP()
  774. void ChoosePhotoSkin2::OnFSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args)
  775. {
  776. }
  777. //------------------------------------------------------------------
  778. // 函数:OnDblclkList1
  779. // 描述:处理双击和回车时的图片显示效果;与函数名本身的表达意义不一致,导致歧义!
  780. // 参数:
  781. // 返回:
  782. //------------------------------------------------------------------
  783. void ChoosePhotoSkin2::OnDblclkList1()
  784. {
  785. // 1.从双击中的列表项中获取相片名;
  786. POSITION pos;
  787. pos = m_List1.GetFirstSelectedItemPosition();
  788. if (pos == NULL)
  789. return;
  790. int iItem = m_List1.GetNextSelectedItem(pos);
  791. #if JEFF_TEST_OFF
  792. // 双击列表根本就不做不到多选多击,双击只会选中一个,故GetNextSelectedItem(pos)后,pos=NULL
  793. // 但是这个函数的作用并不是跟函数名一致,有其他地方用到。
  794. #else // 这一块代码是用于处理回车键;
  795. int nFolderNum = m_vFolder.size();
  796. if(m_OpenFolder == NULL)
  797. {
  798. //双击文件夹;
  799. if(iItem < nFolderNum)
  800. {
  801. m_pCurrSelFolder = FindForderFromIndx(iItem);
  802. if(m_pCurrSelFolder)
  803. {
  804. //打开文件夹;
  805. m_OpenFolder = m_pCurrSelFolder;
  806. if(m_SelectCategory == INDX_INTOALBUM)
  807. GetAlbumPhoto();
  808. else if(m_SelectCategory == INDX_ENTRYPHASSE)
  809. GetDiskPhoto();
  810. else if(m_SelectCategory == INDX_SEL)
  811. UpdateChooseZS();
  812. else if(m_SelectCategory == INDX_NOSEL)
  813. {
  814. m_sChooseFilter = _T("");
  815. UpdateChooseZS();
  816. GetNoSelPhoto();
  817. }
  818. LoadPhotos();
  819. }
  820. return;
  821. }
  822. else
  823. {
  824. iItem = iItem - nFolderNum;
  825. }
  826. }
  827. CArray<int, int>posarray;
  828. posarray.Add(iItem);
  829. // 获取剩下的图片位置;
  830. while (pos)
  831. {
  832. int iItem = m_List1.GetNextSelectedItem(pos);
  833. posarray.Add(iItem);
  834. if (posarray.GetSize() > 3)
  835. break;
  836. }
  837. if (posarray.GetSize() >= 2)
  838. {
  839. CStringArray* pPtahArray = NULL;
  840. if(m_OpenFolder)
  841. {
  842. nFolderNum = 0;
  843. pPtahArray = GetCurArray(0, m_OpenFolder);
  844. }
  845. else
  846. pPtahArray = GetCurArray(m_SelectCategory);
  847. CComparePhoto dlg;
  848. dlg.m_path1 = pPtahArray->ElementAt(posarray.ElementAt(0) - nFolderNum);
  849. dlg.m_path2 = pPtahArray->ElementAt(posarray.ElementAt(1) - nFolderNum);
  850. if (posarray.GetSize() > 2)
  851. dlg.m_path3 = pPtahArray->ElementAt(posarray.ElementAt(2) - nFolderNum);
  852. if (posarray.GetSize() > 3)
  853. dlg.m_path4 = pPtahArray->ElementAt(posarray.ElementAt(3) - nFolderNum);
  854. dlg.DoModal();
  855. return;
  856. }
  857. #endif //JEFF_TEST_OFF
  858. m_showpichwd = NULL;
  859. // 双击小图查看大图;
  860. ShowPic22 dlg;
  861. dlg.m_pParent = this;
  862. dlg.m_nCurImgPos = iItem;
  863. CStringArray* pArray = NULL;
  864. if(m_OpenFolder)
  865. pArray = GetCurArray(m_SelectCategory, m_OpenFolder);
  866. else
  867. pArray = GetCurArray(m_SelectCategory);
  868. if(pArray == NULL)
  869. return;
  870. //100为设定使用m图
  871. if (atoi(g_cominfoarray.ElementAt(0).ElementAt(100)))
  872. {
  873. CStringArray saCurrentImagePath; // 当前列表相片;
  874. CStringArray arraymsize; // 对应的"m"相片路径;
  875. saCurrentImagePath.Copy(*pArray);
  876. for (int i = 0; i < saCurrentImagePath.GetSize(); i++)
  877. {
  878. CString str = saCurrentImagePath.ElementAt(i);
  879. CString spath = str.Left(str.ReverseFind('\\') + 1);
  880. spath += "m";
  881. spath += str.Right(str.GetLength() - str.ReverseFind('\\') - 1);
  882. if (::PathFileExists(spath))
  883. arraymsize.Add(spath);
  884. else
  885. arraymsize.Add(str);
  886. }
  887. dlg.m_AryOfImgPath = &arraymsize;
  888. dlg.m_pPathArrayBigsize = &saCurrentImagePath;
  889. dlg.DoModal();
  890. }
  891. else
  892. {
  893. dlg.m_AryOfImgPath = pArray;
  894. dlg.DoModal();
  895. }
  896. m_showpichwd = NULL;
  897. }
  898. void ChoosePhotoSkin2::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) // 双击图片列表!
  899. {
  900. OnDblclkList1();
  901. *pResult = 0;
  902. }
  903. /************************************************************************/
  904. /*
  905. 函数: GetData
  906. 描述: 选片模式
  907. 参数:
  908. 返回:
  909. 注意:
  910. */
  911. /************************************************************************/
  912. BOOL ChoosePhotoSkin2::GetData()//选片模式;
  913. {
  914. m_List2.DeleteAllItems();
  915. m_List3.DeleteAllItems();
  916. m_noarray.RemoveAll();
  917. m_no2array.RemoveAll();
  918. m_oldsparray.RemoveAll();
  919. CString filter = _T("");
  920. //选片
  921. #ifdef CHILD_VERSION
  922. filter = "id='" + m_strOrderNumber + "';id='" + m_strOrderNumber + "';;id='" + m_strOrderNumber + "'";
  923. if (m_seltxname != "" && m_seltxname != "全部")
  924. filter = "id='" + m_strOrderNumber + "' and growthtxname='" + m_seltxname + "';id='" + m_strOrderNumber + "';;id='" + m_strOrderNumber + "'";
  925. #else
  926. filter = "id='" + m_strOrderNumber + "' and kind<>'2';id='" + m_strOrderNumber + "';;id='" + m_strOrderNumber + "'";
  927. #endif //CHILD_VERSION
  928. //订单号、商品编号、商品价格、订单商品数量、商品类型、商品名称、选片选中相片名、自增id、选设计选中相片名;
  929. g_sendhead.code[0] = 50; // dindansp;
  930. g_sendhead.code[1] = 11; // dindan
  931. g_sendhead.code[2] = 4; // shangpin
  932. g_sendhead.code[3] = 182; // dindansp3
  933. g_sendhead.tabcount = 4;
  934. g_sendhead.bsql = 0;
  935. g_pMainWnd->ProcessChatMessageRequest2(filter);
  936. if (g_bSendOK == 0)
  937. return 0;
  938. CArray<CStringArray, CStringArray> sparray; //dindansp表;//订单号、商品编号、商品价格、订单商品数量、商品类型、商品名称、选片选中相片名、自增id、选设计选中相片名;
  939. DataToArray(&sparray, &g_List1array, &m_sparray, &m_oldsparray);
  940. m_SelPhotoPath.RemoveAll();
  941. CString str(_T("")), kind(_T(""));
  942. int nchoosezs = 0;
  943. int list2pos = 0;
  944. int list3pos = 0;
  945. CString savepath;
  946. savepath.Format(_T("%s\\%s.dat"), g_mainpath, m_strOrderNumber);
  947. CString stm1 = GetModifyTime2(savepath);
  948. CTime tm1 = CTime::GetCurrentTime();
  949. tm1 -= CTimeSpan(2, 0, 0, 0);
  950. CString stm2 = tm1.Format(_T("%Y%m%d"));
  951. BOOL bLoadHistory = 0;
  952. if (PathFileExists(savepath) && stm1 > stm2)
  953. {
  954. if (AfxMessageBox(_T("提醒:请谨慎操作\r\n上次选片未正常退出, 是否还原到上次选片状态?"), MB_YESNO | MB_ICONINFORMATION) == IDYES)
  955. bLoadHistory = 1;
  956. }
  957. int i = 0;
  958. if (bLoadHistory)
  959. {
  960. //还原到上次选片状态
  961. CArray<CStringArray, CStringArray> List1array;
  962. //读取数据
  963. CFile fp;
  964. fp.Open(savepath, CFile::modeRead);
  965. DWORD nMessageLen = fp.GetLength();
  966. BYTE *szChatMessage = new BYTE[nMessageLen];
  967. fp.Read(szChatMessage, nMessageLen);
  968. fp.Close();
  969. int count = 0;
  970. memcpy(&count, szChatMessage + (nMessageLen - sizeof(int)), sizeof(int));
  971. CMemFile memfile;
  972. memfile.Attach(szChatMessage, nMessageLen);
  973. CArchive ar(&memfile, CArchive::load);
  974. List1array.SetSize(count);
  975. for ( i = 0; i < List1array.GetSize(); i++)
  976. List1array.ElementAt(i).Serialize(ar);
  977. ar.Close();
  978. memfile.Detach();
  979. delete[]szChatMessage;
  980. list2pos = 0;
  981. list3pos = 0;
  982. for (i = 0; i < List1array.GetSize(); i++)
  983. {
  984. if (0)//List1array.ElementAt (i).GetSize ()==6)
  985. {
  986. kind = "0";
  987. m_List2.InsertItem(list2pos, List1array.ElementAt(i).ElementAt(1));
  988. m_List2.SetItemText(list2pos, 1, List1array.ElementAt(i).ElementAt(2));
  989. m_List2.SetItemText(list2pos, 2, List1array.ElementAt(i).ElementAt(3));
  990. m_List2.SetItemText(list2pos, 3, List1array.ElementAt(i).ElementAt(4));
  991. m_List2.SetItemText(list2pos, 4, List1array.ElementAt(i).ElementAt(5));
  992. str = List1array.ElementAt(i).ElementAt(5);
  993. list2pos++;
  994. }
  995. else
  996. {
  997. kind = "4";
  998. m_List3.InsertItem(list3pos, List1array.ElementAt(i).ElementAt(1));
  999. m_List3.SetItemText(list3pos, 1, List1array.ElementAt(i).ElementAt(2));
  1000. m_List3.SetItemText(list3pos, 2, List1array.ElementAt(i).ElementAt(3));
  1001. m_List3.SetItemText(list3pos, 3, List1array.ElementAt(i).ElementAt(4));
  1002. m_List3.SetItemText(list3pos, 4, List1array.ElementAt(i).ElementAt(5));
  1003. m_List3.SetItemText(list3pos, 5, List1array.ElementAt(i).ElementAt(6));
  1004. m_List3.SetItemText(list3pos, 6, List1array.ElementAt(i).ElementAt(9));
  1005. #ifdef LKAY_VERSION
  1006. m_List3.SetItemText(list3pos, 6, List1array.ElementAt (i).ElementAt (7));
  1007. m_List3.SetItemText(list3pos, 7, List1array.ElementAt (i).ElementAt (8));
  1008. str=List1array.ElementAt (i).ElementAt (8);
  1009. #else
  1010. str = List1array.ElementAt(i).ElementAt(6);
  1011. #endif //#ifdef LKAY_VERSION
  1012. list3pos++;
  1013. }
  1014. nchoosezs += GetZS(str);
  1015. GetPathAddToSel(str);
  1016. if (!str.IsEmpty())
  1017. {
  1018. #ifdef USE_SEP_VEB
  1019. str = SEPS_VEB + str + SEPS_VEB;
  1020. #else
  1021. str = SEPS_CMA + str + SEPS_CMA;
  1022. #endif //#ifdef USE_SEP_VEB
  1023. }
  1024. str.MakeLower();
  1025. if (kind == _T("4"))
  1026. m_no2array.Add(str);
  1027. else
  1028. m_noarray.Add(str);
  1029. }
  1030. }
  1031. else
  1032. {
  1033. for ( i = 0; i < sparray.GetSize(); i++)
  1034. {
  1035. kind = _T("4");//sparray.ElementAt (i).ElementAt (4);
  1036. if (kind == _T("4"))
  1037. {
  1038. m_List3.InsertItem(list3pos, sparray.ElementAt(i).ElementAt(7)); // dindansp表autoid;
  1039. m_List3.SetItemText(list3pos, 1, sparray.ElementAt(i).ElementAt(1)); // 商品编号;
  1040. m_List3.SetItemText(list3pos, 2, sparray.ElementAt(i).ElementAt(5)); // 商品名称;
  1041. m_List3.SetItemText(list3pos, 3, sparray.ElementAt(i).ElementAt(2)); // 商品价格;
  1042. m_List3.SetItemText(list3pos, 4, sparray.ElementAt(i).ElementAt(3)); // 商品数量;
  1043. #ifdef LKAY_VERSION
  1044. m_List3.SetItemText(list3pos, 5, sparray.ElementAt (i).ElementAt (9)); //
  1045. m_List3.SetItemText(list3pos, 6, sparray.ElementAt (i).ElementAt (10));
  1046. m_List3.SetItemText(list3pos, 7, sparray.ElementAt (i).ElementAt (6));
  1047. #else
  1048. m_List3.SetItemText(list3pos, 5, sparray.ElementAt(i).ElementAt(6)); // 选片时选中的相片名;
  1049. m_List3.SetItemText(list3pos, 6, sparray.ElementAt(i).ElementAt(9)); // 商品备注;
  1050. #endif
  1051. list3pos++;
  1052. }
  1053. else
  1054. {
  1055. OutputDebugString(_T("\n 选片 #######################m_List2####################### \n"));
  1056. m_List2.InsertItem(list2pos, sparray.ElementAt(i).ElementAt(7)); // dindansp表autoid;
  1057. m_List2.SetItemText(list2pos, 1, sparray.ElementAt(i).ElementAt(1)); // 商品编号;
  1058. m_List2.SetItemText(list2pos, 2, sparray.ElementAt(i).ElementAt(5)); // 商品名称;
  1059. m_List2.SetItemText(list2pos, 3, sparray.ElementAt(i).ElementAt(3)); // 商品数量;
  1060. m_List2.SetItemText(list2pos, 4, sparray.ElementAt(i).ElementAt(6)); // 选片时选中的相片名;
  1061. list2pos++;
  1062. }
  1063. str = sparray.ElementAt(i).ElementAt(6);
  1064. str.MakeLower();
  1065. nchoosezs += GetZS(str); // 获取no或no2字段中包含的相片名数量;
  1066. GetPathAddToSel(str);
  1067. if (!str.IsEmpty())
  1068. {
  1069. #ifdef USE_SEP_VEB
  1070. str = SEPS_VEB + str + SEPS_VEB;
  1071. #else
  1072. str = SEPS_CMA + str + SEPS_CMA;
  1073. #endif //#ifdef USE_SEP_VEB
  1074. }
  1075. if (kind == _T("4"))
  1076. m_no2array.Add(str);
  1077. else
  1078. m_noarray.Add(str);
  1079. }
  1080. // 入册;
  1081. CheckForAlbum();
  1082. // 入底;
  1083. CheckForDisk();
  1084. }
  1085. // g_List1array -> dindan表;
  1086. if (g_List1array.GetSize())
  1087. {
  1088. m_name1 = g_List1array.ElementAt(0).ElementAt(4);
  1089. m_name2 = g_List1array.ElementAt(0).ElementAt(5);
  1090. m_phone1 = g_List1array.ElementAt(0).ElementAt(61);
  1091. m_phone2 = g_List1array.ElementAt(0).ElementAt(62);
  1092. if (!m_name1.IsEmpty())
  1093. {
  1094. #ifdef USE_SEP_VEB
  1095. m_name = m_name1 + SEPS_VEB;
  1096. #else
  1097. m_name = m_name1 + SEPS_CMA;
  1098. #endif //#ifdef USE_SEP_VEB
  1099. }
  1100. m_name += m_name2;
  1101. #ifdef USE_SEP_VEB
  1102. m_name.TrimRight(SEPS_VEB);
  1103. #else
  1104. m_name.TrimRight(SEPS_CMA);
  1105. #endif //#ifdef USE_SEP_VEB
  1106. m_waiter3 = g_user.name;
  1107. m_taoxizs = g_List1array.ElementAt(0).ElementAt(9);
  1108. m_time5 = g_List1array.ElementAt(0).ElementAt(22);
  1109. m_takezs = g_List1array.ElementAt(0).ElementAt(23);
  1110. m_choosezs = g_List1array.ElementAt(0).ElementAt(24);
  1111. m_money3 = g_List1array.ElementAt(0).ElementAt(3);
  1112. m_oldmoney3 = m_money3;
  1113. m_bz3 = g_List1array.ElementAt(0).ElementAt(39);
  1114. m_bz4 = g_List1array.ElementAt(0).ElementAt(75);
  1115. m_delphotos = g_List1array.ElementAt(0).ElementAt(53); // Jeff开始选片时,获取dindan表的字段delphotos.读取正常;
  1116. if ( m_delphotos.GetAt(0) != SEPC_VEB || m_delphotos.GetAt(m_delphotos.GetLength() -1) != SEPC_VEB )
  1117. {
  1118. m_delphotos.TrimLeft(SEPC_VEB);
  1119. m_delphotos.TrimRight(SEPC_VEB);
  1120. m_delphotos = SEPS_VEB + m_delphotos + SEPS_VEB;
  1121. }
  1122. m_time6 = g_List1array.ElementAt(0).ElementAt(48);
  1123. m_time5old = m_time5;
  1124. m_time6old = m_time6;
  1125. taoxiname = g_List1array.ElementAt(0).ElementAt(7);
  1126. m_taoxijiage = g_List1array.ElementAt(0).ElementAt(8);
  1127. m_waiter1 = g_List1array.ElementAt(0).ElementAt(34);
  1128. m_waiter2 = g_List1array.ElementAt(0).ElementAt(35);
  1129. m_clothescount = g_List1array.ElementAt(0).ElementAt(26);
  1130. ren = g_List1array.ElementAt(0).ElementAt(14);
  1131. m_size = g_List1array.ElementAt(0).ElementAt(60);
  1132. m_checkstatus = g_List1array.ElementAt(0).ElementAt(32);
  1133. UpdateData(false);
  1134. }
  1135. else
  1136. {
  1137. m_name1 = _T("");
  1138. m_name2 = _T("");
  1139. m_waiter3 = _T("");
  1140. m_taoxizs = _T("");
  1141. m_time5 = _T("");
  1142. m_takezs = _T("");
  1143. m_choosezs = _T("");
  1144. m_money3 = "";
  1145. m_bz3 = _T("");
  1146. m_bz4 = _T("");
  1147. UpdateData(false);
  1148. }
  1149. return 1;
  1150. }
  1151. void ChoosePhotoSkin2::OnClose()
  1152. {
  1153. /*
  1154. if (m_bModify)
  1155. {
  1156. ShowMsg3 dlg;
  1157. dlg.m_strMsg = _T("提醒, 选片修改未保存, 是否保存后再退出?");
  1158. if(dlg.DoModal() == IDOK)
  1159. OnButton4();
  1160. }
  1161. */
  1162. CDialog::OnClose();
  1163. }
  1164. BOOL ChoosePhotoSkin2::PreTranslateMessage(MSG* pMsg)
  1165. {
  1166. if (pMsg->message == WM_LBUTTONDOWN)
  1167. {
  1168. g_bNeedDrawParent = 2;
  1169. if (0)
  1170. {//list3
  1171. CPoint pt;
  1172. CRect rc, rc2;
  1173. ::GetCursorPos(&pt);
  1174. m_List3.GetWindowRect(rc2);
  1175. if (rc2.PtInRect(pt) == 0) return CDialog::PreTranslateMessage(pMsg);
  1176. SetTimer(3, 300, NULL);
  1177. }
  1178. }
  1179. else if (0)//pMsg->message==WM_LBUTTONDBLCLK)
  1180. {
  1181. {//list1
  1182. CPoint pt;
  1183. CRect rc, rc2;
  1184. ::GetCursorPos(&pt);
  1185. m_List2.GetWindowRect(rc2);
  1186. if (rc2.PtInRect(pt))
  1187. return 1;
  1188. }
  1189. {//list3
  1190. CPoint pt;
  1191. CRect rc, rc2;
  1192. ::GetCursorPos(&pt);
  1193. m_List3.GetWindowRect(rc2);
  1194. if (rc2.PtInRect(pt) == 0)return CDialog::PreTranslateMessage(pMsg);
  1195. pt.x -= rc2.left;
  1196. pt.y -= rc2.top;
  1197. int iItem = m_List3.GetItemCount() - 1;
  1198. if (iItem < 0)
  1199. {
  1200. m_List3.GetHeaderCtrl()->GetItemRect(0, rc);
  1201. int hei = rc.Height();
  1202. rc.top += hei;
  1203. rc.bottom += hei;
  1204. if (rc.PtInRect(pt))
  1205. {
  1206. m_List3.InsertItem(m_List3.GetItemCount(), "");
  1207. }
  1208. }
  1209. else
  1210. {
  1211. m_List3.GetSubItemRect(iItem, 0, LVIR_BOUNDS, rc);
  1212. int hei = rc.Height();
  1213. rc.top += hei;
  1214. rc.bottom += hei;
  1215. if (rc.PtInRect(pt))
  1216. {
  1217. if (m_List3.GetItemText(iItem, 1).IsEmpty() && m_List3.GetItemText(iItem, 2).IsEmpty())
  1218. return CDialog::PreTranslateMessage(pMsg);
  1219. m_List3.InsertItem(m_List3.GetItemCount(), "");
  1220. }
  1221. POSITION pos;
  1222. pos = m_List3.GetFirstSelectedItemPosition();
  1223. if (pos)
  1224. {
  1225. iItem = m_List3.GetNextSelectedItem(pos);
  1226. m_List3.GetSubItemRect(iItem, 4, LVIR_BOUNDS, rc);
  1227. if (rc.PtInRect(pt))return 1;
  1228. }
  1229. }
  1230. }
  1231. }
  1232. else if (pMsg->message == WM_KEYDOWN)
  1233. {
  1234. if (m_showpichwd)return 1;
  1235. switch (pMsg->wParam)
  1236. {
  1237. case VK_DELETE:
  1238. {
  1239. OnDel();
  1240. //更新绘制;
  1241. DrawInterface();
  1242. // LoadPhotos();
  1243. }
  1244. return 1;
  1245. case VK_RETURN:
  1246. OnDblclkList1();
  1247. return 1;
  1248. case VK_F4:
  1249. if (atoi(g_cominfoarray.ElementAt(0).ElementAt(62)))
  1250. {
  1251. if (m_SelectCategory == INDX_SEL)
  1252. UpdateChooseZS();
  1253. SortArray();
  1254. }
  1255. return 1;
  1256. case VK_F5:
  1257. if (atoi(g_cominfoarray.ElementAt(0).ElementAt(86)))
  1258. {
  1259. OnBtnClick(0, 99 + 4);
  1260. }
  1261. /* if(m_mode2==0)return 1;
  1262. {
  1263. ReplaceDesignNo dlg;
  1264. dlg.m_id=this->m_id ;
  1265. dlg.DoModal ();
  1266. }*/
  1267. return 1;
  1268. case VK_F1:
  1269. {
  1270. if (m_selphotownd2.GetSafeHwnd() == NULL)
  1271. {
  1272. m_selphotownd2.m_id = m_strOrderNumber;
  1273. m_selphotownd2.m_bGrowthTX = m_bGrowthTX;
  1274. m_selphotownd2.m_seltxname = m_seltxname;
  1275. m_selphotownd2.m_rc = m_rcarray.ElementAt(6);
  1276. m_selphotownd2.Create(IDD_DLGShowSelPhoto2, this);
  1277. }
  1278. m_selphotownd2.ShowWindow(1);
  1279. }
  1280. return 1;
  1281. case VK_F2: //缩略图
  1282. if (atoi(g_cominfoarray.ElementAt(0).ElementAt(60)))
  1283. {
  1284. m_bHide = !m_bHide;
  1285. LoadPhotos();
  1286. }
  1287. return 1;
  1288. case VK_BACK: //返回上层
  1289. {
  1290. m_pCurrSelFolder = m_OpenFolder = NULL;
  1291. if (m_SelectCategory == INDX_SEL)
  1292. UpdateChooseZS();
  1293. else if(m_SelectCategory == INDX_NOSEL)
  1294. {
  1295. m_sChooseFilter = _T("");
  1296. UpdateChooseZS();
  1297. GetNoSelPhoto();
  1298. }
  1299. LoadPhotos();
  1300. }
  1301. return 1;
  1302. case VK_ESCAPE:
  1303. {
  1304. return TRUE;
  1305. }
  1306. break;
  1307. }
  1308. }
  1309. else if(pMsg->message == WM_LBUTTONUP)
  1310. {
  1311. CDialog::PreTranslateMessage(pMsg);
  1312. if(m_OpenFolder == NULL && m_vFolder.size() && m_SelectCategory != INDX_DEL)
  1313. {
  1314. printf("\t拖动相片\n");
  1315. //选片模式;
  1316. POSITION pos;
  1317. pos = m_List1.GetFirstSelectedItemPosition();
  1318. if (pos == NULL)
  1319. return FALSE;
  1320. int iItem = m_List1.GetDragSelIndex();
  1321. if(iItem == -1)
  1322. return FALSE;
  1323. CStringArray *pArray = GetCurArray(m_SelectCategory);
  1324. m_pCurrSelFolder = FindForderFromIndx(iItem);
  1325. if(m_pCurrSelFolder && pArray)
  1326. {
  1327. //获取选中的相片;
  1328. vector<CString> vMoveFile;
  1329. CDWordArray* pDWArr = m_List1.GetDragIndexes();
  1330. if(pDWArr)
  1331. {
  1332. for ( int i = pDWArr->GetSize() - 1; i > -1; i-- )
  1333. {
  1334. if( (*pDWArr)[i] < m_vFolder.size() )
  1335. continue;
  1336. vMoveFile.push_back(pArray->ElementAt((*pDWArr)[i] - m_vFolder.size()));
  1337. pArray->RemoveAt((*pDWArr)[i] - m_vFolder.size());
  1338. }
  1339. }
  1340. if(vMoveFile.size() > 0)
  1341. {
  1342. //移动选中的相片;
  1343. if(MoveFileMainToSub(vMoveFile, m_pCurrSelFolder))
  1344. {
  1345. if ( m_SelectCategory != INDX_ALL && m_SelectCategory != INDX_DEL )
  1346. {// 从全部里移除被移动到文件夹的相片;
  1347. pArray = GetCurArray(INDX_ALL, NULL);
  1348. vector<CString>::iterator iter = vMoveFile.begin();
  1349. for ( ; iter != vMoveFile.end(); iter++ )
  1350. {
  1351. for ( int n = 0; n < pArray->GetSize(); n++ )
  1352. {
  1353. if ( iter->CompareNoCase(pArray->ElementAt(n)) == 0 )
  1354. {
  1355. pArray->RemoveAt(n);
  1356. break;
  1357. }
  1358. }
  1359. }
  1360. }
  1361. }
  1362. }
  1363. LoadPhotos();
  1364. }
  1365. }
  1366. return TRUE;
  1367. }
  1368. return CDialog::PreTranslateMessage(pMsg);
  1369. }
  1370. void ChoosePhotoSkin2::OnRclickList1() // 右键List列表;
  1371. {
  1372. if (m_bRunning)
  1373. return;
  1374. CMenuXP *pPopup = NULL;
  1375. POSITION pos;
  1376. pos = m_List1.GetFirstSelectedItemPosition();
  1377. if (pos == NULL)
  1378. {
  1379. // 新建/返回文件夹菜单;
  1380. if(m_OpenFolder)
  1381. ShowFolderMenu(IDM_RETURNMAINDIR, _T("返回上层"));
  1382. else
  1383. ShowFolderMenu(IDM_NEWFOLDER, _T("新建文件夹"));
  1384. return;
  1385. }
  1386. int iItem = m_List1.GetNextSelectedItem(pos);
  1387. printf(_T("\t选中第%d个项\n"),iItem);
  1388. CString path = _T("");
  1389. CStringArray* pArray = NULL;
  1390. // 选片才对文件夹处理;
  1391. if(m_OpenFolder == NULL)
  1392. {
  1393. int nsize = m_vFolder.size();
  1394. if(iItem < nsize)
  1395. {
  1396. // 获取选中的文件夹图标;
  1397. m_pCurrSelFolder = FindForderFromIndx(iItem);
  1398. if(m_pCurrSelFolder)
  1399. {
  1400. // 显示删除文件夹菜单;
  1401. vector<SMenuBtnData> vdata;
  1402. vdata.push_back(SMenuBtnData(IDM_OPENFOLDER, _T("打开文件夹")));
  1403. vdata.push_back(SMenuBtnData(IDM_DELFOLDER, _T("删除文件夹")));
  1404. ShowFolderMenu(vdata);
  1405. return;
  1406. }
  1407. }
  1408. else
  1409. iItem = iItem - nsize;
  1410. pArray = GetCurArray(m_SelectCategory);
  1411. }
  1412. else
  1413. pArray = GetCurArray(INDX_ALL, m_OpenFolder);
  1414. path = pArray->ElementAt(iItem); //path//打印出相片完整路径名;
  1415. printf("[%d]对应文件路径:\n \t%s\n", iItem + m_vFolder.size(), path);
  1416. // 右键看设计模式;
  1417. path = path.Right(path.GetLength() - path.ReverseFind('\\') - 1);
  1418. path = path.Left(path.ReverseFind('.'));
  1419. #ifdef USE_SEP_VEB
  1420. path = SEPS_VEB + path + SEPS_VEB; //
  1421. #else
  1422. path = SEPS_CMA + path + SEPS_CMA; //
  1423. #endif //#ifdef USE_SEP_VEB
  1424. // TODO: Add your control notification handler code here
  1425. // 1.创建菜单对象;
  1426. pPopup = new CMenuXP;
  1427. pPopup->CYBUTTONMARGIN = 3; // 1.0.按钮范围0~3; 4个菜单;
  1428. pPopup->CreatePopupMenu(); // 1.1.弹出式菜单;
  1429. pPopup->SetMenuStyle(CMenuXP::STYLE_XP);// 1.2.弹出菜单样式;
  1430. // Jeff:m_List2有三列头:编号、商品名称、商品数量;
  1431. // 计算菜单最大字符长度;
  1432. int i = 0;
  1433. int maxleng = 1;
  1434. CString name, no;
  1435. int count = 0;
  1436. for ( i = 0; i < m_List2.GetItemCount(); i++)
  1437. {
  1438. // name商品名称;
  1439. name = m_List2.GetItemText(i, 2);
  1440. //no = m_noarray.ElementAt(i);
  1441. maxleng = max(maxleng, name.GetLength());
  1442. }
  1443. count = i;
  1444. for (; i < count + m_no2array.GetSize(); i++)
  1445. {
  1446. name = m_List3.GetItemText(i - count, 2);
  1447. maxleng = max(maxleng, name.GetLength());
  1448. }
  1449. maxleng += 3;
  1450. // m_List2有三列头:编号、商品名称、商品数量;
  1451. CString scount = _T("");
  1452. name = no = _T("");
  1453. count = 0;
  1454. for ( i = 0; i < m_List2.GetItemCount(); i++)
  1455. {
  1456. printf("ChoosePhotoSkin2::m_List2有记录\n");
  1457. // name商品名称;
  1458. name = m_List2.GetItemText(i, 2);
  1459. //填充长度;
  1460. FillLength(name, maxleng);
  1461. // Jeff,no里为商品名称选中的相片;
  1462. no = m_noarray.ElementAt(i);
  1463. GetSelCountFromName(no, scount);
  1464. //添加菜单项;
  1465. pPopup->AppendODMenu2(0, new CMenuXPText(IDM_MENUsp1 + i, name + scount, NULL));// 2.使用AppendODMenu2添加子菜单项;
  1466. //绑定事件ID
  1467. if (no.Find(path) != -1)
  1468. {
  1469. pPopup->CheckMenuItem(IDM_MENUsp1 + i, MF_BYCOMMAND | MF_CHECKED);
  1470. }
  1471. }
  1472. count = i;
  1473. for (; i < count + m_no2array.GetSize(); i++)
  1474. {
  1475. name = m_List3.GetItemText(i - count, 2);
  1476. FillLength(name, maxleng);
  1477. no = m_no2array.ElementAt(i - count);
  1478. GetSelCountFromName(no, scount);
  1479. pPopup->AppendODMenu2(0, new CMenuXPText(IDM_MENUsp1 + i, name + scount, NULL));
  1480. if (no.Find(path) != -1)
  1481. {// 未选中;
  1482. printf("\t商品:[%s],\n\t当前相片[%s]\n\t 关联相片:[%s]\n",name, path, no);
  1483. pPopup->CheckMenuItem(IDM_MENUsp1 + i, MF_BYCOMMAND | MF_CHECKED);
  1484. }
  1485. else
  1486. {// 选中;
  1487. // 当单击中菜单时,与当前状态相反;
  1488. }
  1489. }
  1490. pPopup->AppendODMenu2(0, new CMenuXPText(32794, _T("修改要求"), NULL));
  1491. //获取当前鼠标位置;
  1492. CPoint pt;
  1493. ::GetCursorPos(&pt);
  1494. // 3.使用TrackPopupMenu,正常弹出菜单;
  1495. pPopup->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this, 0);
  1496. delete pPopup;
  1497. }
  1498. void ChoosePhotoSkin2::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
  1499. {
  1500. if (m_showpichwd)
  1501. return;
  1502. OnRclickList1();
  1503. *pResult = 0;
  1504. }
  1505. /************************************************************************/
  1506. /*
  1507. 函数: ShowFolderMenu
  1508. 描述: 显示文件夹菜单;
  1509. 参数:
  1510. 返回: 1成功, 0失败
  1511. 注意:
  1512. */
  1513. /************************************************************************/
  1514. int ChoosePhotoSkin2::ShowFolderMenu(const int nID, const LPCTSTR pName)
  1515. {
  1516. if(pName == NULL)
  1517. {
  1518. MessageBox(_T("弹出菜单失败"));
  1519. return 0;
  1520. }
  1521. CMenuXP *pPopup = new CMenuXP;
  1522. pPopup->CYBUTTONMARGIN = 3; // 1.0.按钮范围0~3; 4个菜单;
  1523. pPopup->CreatePopupMenu(); // 1.1.弹出式菜单;
  1524. pPopup->SetMenuStyle(CMenuXP::STYLE_XP); // 1.2.弹出菜单样式;
  1525. pPopup->AppendODMenu2(0, new CMenuXPText(nID, pName, NULL));
  1526. //获取当前鼠标位置;
  1527. CPoint pt;
  1528. ::GetCursorPos(&pt);
  1529. // 3.使用TrackPopupMenu,正常弹出菜单;
  1530. pPopup->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this, 0);
  1531. delete pPopup;
  1532. return 1;
  1533. }
  1534. /************************************************************************/
  1535. /*
  1536. 函数: ShowFolderMenu
  1537. 描述: 显示文件夹菜单;
  1538. 参数:
  1539. 返回: 1成功, 0失败
  1540. 注意:
  1541. */
  1542. /************************************************************************/
  1543. int ChoosePhotoSkin2::ShowFolderMenu(vector<SMenuBtnData>& vdata)
  1544. {
  1545. if(vdata.size() == 0)
  1546. {
  1547. MessageBox(_T("弹出菜单失败"));
  1548. return 0;
  1549. }
  1550. CMenuXP *pPopup = new CMenuXP;
  1551. pPopup->CYBUTTONMARGIN = 3; // 1.0.按钮范围0~3; 4个菜单;
  1552. pPopup->CreatePopupMenu(); // 1.1.弹出式菜单;
  1553. pPopup->SetMenuStyle(CMenuXP::STYLE_XP); // 1.2.弹出菜单样式;
  1554. vector<SMenuBtnData>::iterator iter = vdata.begin();
  1555. for(;iter != vdata.end();)
  1556. {
  1557. pPopup->AppendODMenu2(0, new CMenuXPText(iter->nID, iter->strBtnName, NULL));
  1558. ++iter;
  1559. }
  1560. //获取当前鼠标位置
  1561. CPoint pt;
  1562. ::GetCursorPos(&pt);
  1563. // 3.使用TrackPopupMenu,正常弹出菜单;
  1564. pPopup->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this, 0);
  1565. delete pPopup;
  1566. return 1;
  1567. }
  1568. //
  1569. /************************************************************************/
  1570. /*
  1571. 函数: OnCommandMenu
  1572. 描述: 弹出菜单处理;
  1573. 参数:
  1574. UINT nID 事件ID
  1575. 返回:
  1576. 注意:
  1577. */
  1578. /************************************************************************/
  1579. void ChoosePhotoSkin2::OnCommandMenu(UINT nID)
  1580. {
  1581. printf("\n\nChoosePhotoSkin2::OnCommandMenu#############################################:\n");
  1582. if (32794 == nID)
  1583. {
  1584. //修改要求;
  1585. POSITION pos;
  1586. pos = m_List1.GetFirstSelectedItemPosition();
  1587. if (pos == NULL)
  1588. {
  1589. return;
  1590. }
  1591. int iItem = m_List1.GetNextSelectedItem(pos);
  1592. if(m_OpenFolder == NULL)
  1593. iItem = iItem - m_vFolder.size();
  1594. CStringArray *pArray = GetCurArray(m_SelectCategory);
  1595. CString path = pArray->ElementAt(iItem);
  1596. path = path.Right(path.GetLength() - path.ReverseFind('\\') - 1);
  1597. path = path.Left(path.Find('.'));
  1598. if (m_bz4.GetLength() > 4080)
  1599. {
  1600. AfxMessageBox(_T("备注太长,可在保存界面选中备注内容,按Delete键清除"));
  1601. return;
  1602. }
  1603. UpdateData();
  1604. CClientRequirement dlg;
  1605. dlg.m_no = _T("当前照片:") + path;
  1606. CString header, left, right, cur;
  1607. header = path + ":";
  1608. int pos2 = m_bz4.Find(header);
  1609. if (pos2 != -1)
  1610. {
  1611. left = m_bz4.Left(pos2);
  1612. m_bz4 = m_bz4.Right(m_bz4.GetLength() - pos2);
  1613. pos2 = m_bz4.Find(" ");
  1614. if (pos2 != -1)
  1615. {
  1616. cur = m_bz4.Left(pos2);
  1617. int pos3 = cur.Find(":");
  1618. if (pos3 != -1)
  1619. cur = cur.Right(cur.GetLength() - pos3 - 1);
  1620. right = m_bz4.Right(m_bz4.GetLength() - pos2 - 2);
  1621. }
  1622. }
  1623. else
  1624. left = m_bz4;
  1625. dlg.m_bz2 = cur;
  1626. dlg.m_bSave = 0;
  1627. dlg.m_nMode = 2;
  1628. if (dlg.DoModal() == IDOK)
  1629. {
  1630. // m_bz3=dlg.m_bz2 ;
  1631. dlg.m_bz2.TrimLeft();
  1632. dlg.m_bz2.TrimRight();
  1633. if (dlg.m_bz2 != "")
  1634. cur = header + dlg.m_bz2 + " ";
  1635. else
  1636. cur = _T("");
  1637. m_bz4 = left + cur + right;
  1638. UpdateData(false);
  1639. }
  1640. else
  1641. {
  1642. if (cur != "")
  1643. m_bz4 = left + header + cur + " " + right;
  1644. else
  1645. m_bz4 = left + right;
  1646. }
  1647. return;
  1648. }
  1649. //////////////////////////////////////////////////////////////////////////
  1650. // 产品菜单项;
  1651. POSITION pos;
  1652. pos = m_List1.GetFirstSelectedItemPosition();
  1653. if (pos == NULL)
  1654. {
  1655. return;
  1656. }
  1657. CString temp;
  1658. m_combo1.ResetContent();
  1659. int aa = 0;
  1660. while (pos)
  1661. {
  1662. aa++;
  1663. CStringArray* pArray = NULL;
  1664. CString path = _T("");
  1665. int iItem = m_List1.GetNextSelectedItem(pos);
  1666. if(m_OpenFolder)
  1667. pArray = GetCurArray(m_SelectCategory, m_OpenFolder);
  1668. else
  1669. {
  1670. if(iItem >= m_vFolder.size())
  1671. iItem = iItem - m_vFolder.size();
  1672. else
  1673. return;
  1674. pArray = GetCurArray(m_SelectCategory);
  1675. }
  1676. if(pArray == NULL)
  1677. break;
  1678. path = pArray->ElementAt(iItem);
  1679. path = path.Right(path.GetLength() - path.ReverseFind('\\') - 1);
  1680. path = path.Left(path.ReverseFind('.'));
  1681. #ifdef USE_SEP_VEB
  1682. path = SEPS_VEB + path + SEPS_VEB;
  1683. #else
  1684. path = SEPS_CMA + path + SEPS_CMA;
  1685. #endif //#ifdef USE_SEP_VEB
  1686. int idpos = nID - IDM_MENUsp1;
  1687. BOOL bSel = 0; //选中还是取消;
  1688. if (idpos < m_noarray.GetSize())
  1689. {
  1690. CString no = m_noarray.ElementAt(idpos);
  1691. if (no.Find(path) != -1)
  1692. {
  1693. int pos = no.Find(path);
  1694. no.Delete(pos, path.GetLength() - 1);
  1695. }
  1696. else if (no.GetLength() > 4000)
  1697. {
  1698. AfxMessageBox(_T("编号太长,选择失败!"), MB_ICONSTOP);
  1699. return;
  1700. }
  1701. else
  1702. {
  1703. bSel = 1;
  1704. #ifdef USE_SEP_VEB
  1705. no.TrimRight(SEPS_VEB);
  1706. #else
  1707. no.TrimRight(SEPS_CMA);
  1708. #endif //#ifdef USE_SEP_VEB
  1709. no += path;
  1710. }
  1711. #ifdef USE_SEP_VEB
  1712. no.TrimLeft(SEPS_VEB);
  1713. no.TrimRight(SEPS_VEB);
  1714. #else
  1715. no.TrimLeft(SEPS_CMA);
  1716. no.TrimRight(SEPS_CMA);
  1717. #endif //#ifdef USE_SEP_VEB
  1718. m_List2.SetItemText(idpos, 4, no);
  1719. printf("%s | %s ", path, bSel ? "选中" : "取消选中");
  1720. if (no.IsEmpty())
  1721. m_noarray.SetAt(idpos, no);
  1722. else
  1723. {
  1724. #ifdef USE_SEP_VEB
  1725. m_noarray.SetAt(idpos, SEPS_VEB + no + SEPS_VEB);
  1726. #else
  1727. m_noarray.SetAt(idpos, SEPS_CMA + no + SEPS_CMA);
  1728. #endif //#ifdef USE_SEP_VEB
  1729. }
  1730. printf("%s %d:%s\n\n", m_List3.GetItemText(idpos, 2), idpos, m_noarray.ElementAt(idpos));
  1731. }
  1732. else
  1733. {
  1734. idpos -= m_noarray.GetSize();
  1735. CString no = m_no2array.ElementAt(idpos);
  1736. if (no.Find(path) != -1)
  1737. {
  1738. int pos = no.Find(path);
  1739. no.Delete(pos, path.GetLength() - 1);
  1740. }
  1741. else if (no.GetLength() > 4000)
  1742. {
  1743. AfxMessageBox(_T("编号太长,选择失败!"), MB_ICONSTOP); return;
  1744. }
  1745. else
  1746. {
  1747. bSel = 1;
  1748. #ifdef USE_SEP_VEB
  1749. no.TrimRight(SEPS_VEB);
  1750. #else
  1751. no.TrimRight(SEPS_CMA);
  1752. #endif //#ifdef USE_SEP_VEB
  1753. no += path;
  1754. }
  1755. #ifdef USE_SEP_VEB
  1756. no.TrimLeft(SEPS_VEB);
  1757. no.TrimRight(SEPS_VEB);
  1758. #else
  1759. no.TrimLeft(SEPS_CMA);
  1760. no.TrimRight(SEPS_CMA);
  1761. #endif //#ifdef USE_SEP_VEB
  1762. #ifdef LKAY_VERSION
  1763. m_List3.SetItemText (idpos, 7, no);
  1764. #else
  1765. m_List3.SetItemText(idpos, 5, no);
  1766. #endif //#ifdef LKAY_VERSION
  1767. printf("%s | %s ", path, bSel ? "选中" : "取消选中");
  1768. if (no.IsEmpty())
  1769. m_no2array.SetAt(idpos, no);
  1770. else
  1771. {
  1772. #ifdef USE_SEP_VEB
  1773. m_no2array.SetAt(idpos, SEPS_VEB + no + SEPS_VEB);
  1774. #else
  1775. m_no2array.SetAt(idpos, SEPS_CMA + no + SEPS_CMA);
  1776. #endif //#ifdef USE_SEP_VEB
  1777. }
  1778. printf("%s %d:%s\n\n", m_List3.GetItemText(idpos, 2), idpos, m_no2array.ElementAt(idpos));
  1779. }
  1780. m_bModify = 1;
  1781. if (bSel == 0 && m_SelectCategory == INDX_SEL && IsSelPhoto(path) == 0)
  1782. {// 取消选中;已选界面;
  1783. temp.Format("%d", iItem);
  1784. m_combo1.AddString(temp);
  1785. continue;
  1786. }
  1787. else if (bSel == 1 && m_SelectCategory == INDX_NOSEL)
  1788. {// 选中;未选界面;
  1789. temp.Format("%d", iItem);
  1790. m_combo1.AddString(temp);
  1791. continue;
  1792. }
  1793. else if (bSel == 1 && m_SelectCategory == INDX_DEL)
  1794. {// 选中;删除界面;
  1795. temp.Format("%d", iItem);
  1796. m_combo1.AddString(temp);
  1797. continue;
  1798. }
  1799. else if (bSel == 0 && m_SelectCategory == INDX_INTOALBUM && IsSelAlbumPhoto(path) == 0)
  1800. {// 取消选中;入册界面;
  1801. temp.Format("%d", iItem);
  1802. m_combo1.AddString(temp);
  1803. continue;
  1804. }
  1805. else if (bSel == 0 && m_SelectCategory == INDX_ENTRYPHASSE && IsSelDiskPhoto(path) == 0)
  1806. {// 取消选中;入底界面;
  1807. temp.Format("%d", iItem);
  1808. m_combo1.AddString(temp);
  1809. continue;
  1810. }
  1811. /////////////////////////
  1812. CString no;
  1813. no = pArray->ElementAt(iItem);
  1814. no = no.Right(no.GetLength() - no.ReverseFind('\\') - 1);
  1815. no = no.Left(no.ReverseFind('.'));
  1816. no += GetSelName(no);
  1817. if(!m_OpenFolder)
  1818. iItem = iItem + m_vFolder.size();
  1819. m_List1.SetItemText(iItem, 0, no);
  1820. printf("选中项:%d\n", iItem);
  1821. }
  1822. // 从m_combo1尾部开始导出;
  1823. CArray<int, int>posarray;
  1824. for (int i = m_combo1.GetCount() - 1; i >= 0; i--)
  1825. {
  1826. m_combo1.GetLBText(i, temp);
  1827. posarray.Add(atoi(temp));
  1828. }
  1829. SortArray2(posarray);
  1830. if (posarray.GetSize())
  1831. {
  1832. CStringArray* pArray = NULL;
  1833. int folderNum = 0;
  1834. if(m_OpenFolder)
  1835. {
  1836. pArray = GetCurArray(m_SelectCategory, m_OpenFolder);
  1837. }
  1838. else
  1839. {
  1840. folderNum = m_vFolder.size();
  1841. pArray = GetCurArray(m_SelectCategory);
  1842. }
  1843. if (m_SelectCategory == INDX_SEL)
  1844. {// 当前界面:已选;
  1845. CStringArray* pNolSelArray = NULL;
  1846. if(m_OpenFolder)
  1847. pNolSelArray = GetCurArray(INDX_NOSEL, m_OpenFolder);
  1848. else
  1849. pNolSelArray = GetCurArray(INDX_NOSEL);
  1850. for (int i = 0; i < posarray.GetSize(); i++)
  1851. {
  1852. // 从已选中移除取消选中的项;
  1853. if ( m_List1.GetItemCount() <= posarray.ElementAt(i) + folderNum)
  1854. printf("\t当前界面m_List1.GetItemCount个数少于选中个数,严重错误[越界]\n");
  1855. printf("\t当前要删除的Item索引=%d\n", posarray.ElementAt(i) + folderNum);
  1856. m_List1.DeleteItem(posarray.ElementAt(i) + folderNum);
  1857. // 将取消选中的项添加到未选中;
  1858. pNolSelArray->Add(pArray->ElementAt(posarray.ElementAt(i) - folderNum));
  1859. // 移除取消选中的项;
  1860. if ( pArray->GetSize() <= posarray.ElementAt(i) - folderNum)
  1861. printf("\t当前界面pArray.GetSize个数少于选中个数,严重错误[越界]\n");
  1862. pArray->RemoveAt(posarray.ElementAt(i) - folderNum); // 多选的状态下,如果不是从尾部开始RemoveAt可能会产生错误;
  1863. }
  1864. if (m_showpichwd)
  1865. ::SendMessage(m_showpichwd, WM_CLOSE, 0, 0);
  1866. }
  1867. else if (m_SelectCategory == INDX_NOSEL)
  1868. {// 当前界面:未选;
  1869. for (int i = 0; i < posarray.GetSize(); i++)
  1870. {
  1871. // 从已选中移除取消选中的项;
  1872. if ( m_List1.GetItemCount() <= posarray.ElementAt(i) + folderNum)
  1873. printf("\t当前界面m_List1.GetItemCount个数少于选中个数,严重错误[越界]\n");
  1874. printf("\t当前要删除的Item索引=%d\n", posarray.ElementAt(i) + folderNum);
  1875. m_List1.DeleteItem(posarray.ElementAt(i) + folderNum);
  1876. if ( pArray->GetSize() <= posarray.ElementAt(i) - folderNum)
  1877. printf("\t当前界面pArray.GetSize个数少于选中个数,严重错误[越界]\n");
  1878. pArray->RemoveAt(posarray.ElementAt(i) - folderNum);
  1879. }
  1880. if (m_showpichwd)
  1881. ::SendMessage(m_showpichwd, WM_CLOSE, 0, 0);
  1882. }
  1883. else if (m_SelectCategory == INDX_DEL)
  1884. {// 当前界面:删除;
  1885. CString strDelNo = _T("");
  1886. CStringArray* pAllArray = NULL;
  1887. if(m_OpenFolder)
  1888. pAllArray = GetCurArray(INDX_ALL, m_OpenFolder);
  1889. else
  1890. pAllArray = GetCurArray(INDX_ALL);
  1891. for (int i = 0; i < posarray.GetSize(); i++)
  1892. {
  1893. if ( m_List1.GetItemCount() <= posarray.ElementAt(i) + folderNum)
  1894. printf("\t当前界面m_List1.GetItemCount个数少于选中个数,严重错误[越界]\n");
  1895. printf("\t当前要删除的Item索引=%d\n", posarray.ElementAt(i) + folderNum);
  1896. // 获取要被删除的相片编号;
  1897. strDelNo = SEPS_VEB + m_List1.GetItemText(posarray.ElementAt(i) + folderNum,0) + SEPS_VEB;
  1898. if ( m_delphotos.Find(strDelNo) != -1 )
  1899. {
  1900. int nDelPos = m_delphotos.Find(strDelNo);
  1901. m_delphotos.Delete(nDelPos, strDelNo.GetLength() - 1);
  1902. printf("\t当前删除的相片编号:[%s] \n\t剩余删除列表:%s\n", strDelNo, m_delphotos);
  1903. }
  1904. else
  1905. {
  1906. printf("错误:要删除的相片编号[%s]未在删除列表中[%s]\n", strDelNo, m_delphotos);
  1907. }
  1908. m_List1.DeleteItem(posarray.ElementAt(i) + folderNum);
  1909. pAllArray->Add(pArray->ElementAt(posarray.ElementAt(i)));
  1910. if ( pArray->GetSize() <= posarray.ElementAt(i) - folderNum)
  1911. printf("\t当前界面pArray.GetSize个数少于选中个数,严重错误[越界]\n");
  1912. pArray->RemoveAt(posarray.ElementAt(i));
  1913. }
  1914. if (m_showpichwd)
  1915. ::SendMessage(m_showpichwd, WM_CLOSE, 0, 0);
  1916. }
  1917. else if (m_SelectCategory == INDX_INTOALBUM)
  1918. {// 当前界面:入册;
  1919. for (int i = 0; i < posarray.GetSize(); i++)
  1920. {
  1921. if ( m_List1.GetItemCount() <= posarray.ElementAt(i) + folderNum)
  1922. printf("\t当前界面m_List1.GetItemCount个数少于选中个数,严重错误[越界]\n");
  1923. printf("\t当前要删除的Item索引=%d\n", posarray.ElementAt(i) + folderNum);
  1924. m_List1.DeleteItem(posarray.ElementAt(i) + folderNum);
  1925. if ( pArray->GetSize() <= posarray.ElementAt(i) - folderNum)
  1926. printf("\t当前界面pArray.GetSize个数少于选中个数,严重错误[越界]\n");
  1927. pArray->RemoveAt(posarray.ElementAt(i) - folderNum);
  1928. }
  1929. if (m_showpichwd)
  1930. ::SendMessage(m_showpichwd, WM_CLOSE, 0, 0);
  1931. }
  1932. else if (m_SelectCategory == INDX_ENTRYPHASSE)
  1933. {// 当前界面:入底;
  1934. for (int i = 0; i < posarray.GetSize(); i++)
  1935. {
  1936. if ( m_List1.GetItemCount() <= posarray.ElementAt(i) + folderNum)
  1937. printf("\t当前界面m_List1.GetItemCount个数少于选中个数,严重错误[越界]\n");
  1938. printf("\t当前要删除的Item索引=%d\n", posarray.ElementAt(i) + folderNum);
  1939. m_List1.DeleteItem(posarray.ElementAt(i) + folderNum);
  1940. if ( pArray->GetSize() <= posarray.ElementAt(i) - folderNum)
  1941. printf("\t当前界面pArray.GetSize个数少于选中个数,严重错误[越界]\n");
  1942. pArray->RemoveAt(posarray.ElementAt(i) - folderNum);
  1943. }
  1944. if (m_showpichwd)
  1945. ::SendMessage(m_showpichwd, WM_CLOSE, 0, 0);
  1946. }
  1947. }
  1948. CString strFile = m_strOrderNumber + _T(".dat");
  1949. Save(g_mainpath, strFile);
  1950. DrawInterface();
  1951. if (m_showpichwd)
  1952. ::SendMessage(m_showpichwd, WM_USER + 200, 0, 0);
  1953. }
  1954. VOID ChoosePhotoSkin2::OnNewFolder()
  1955. {
  1956. //新建文件夹
  1957. CNewFolderDlg dlg;
  1958. dlg.m_pVFolder = &m_vFolder;
  1959. if(dlg.DoModal() != IDOK)
  1960. return ;
  1961. m_bModify = 1;
  1962. AddFolder(dlg.m_strFolderName);
  1963. LoadPhotos();
  1964. return ;
  1965. }
  1966. VOID ChoosePhotoSkin2::OnDelFolder()
  1967. {
  1968. if(AfxMessageBox(_T("是否删除选中的文件夹!"), MB_YESNO | MB_ICONINFORMATION) == IDNO)
  1969. return ;
  1970. //删除文件夹
  1971. if(m_pCurrSelFolder)
  1972. {
  1973. //相片由子移到主
  1974. MoveFileSubToMain(m_pCurrSelFolder);
  1975. DelFolderFromName(m_pCurrSelFolder->strName);
  1976. m_pCurrSelFolder = NULL;
  1977. LoadPhotos();
  1978. }
  1979. return;
  1980. }
  1981. VOID ChoosePhotoSkin2::OnOpenFolder()
  1982. {
  1983. printf("IDM_OPENFOLDER\n");
  1984. //打开文件夹
  1985. m_OpenFolder = m_pCurrSelFolder;
  1986. if(m_SelectCategory == INDX_INTOALBUM)
  1987. GetAlbumPhoto();
  1988. else if(m_SelectCategory == INDX_ENTRYPHASSE)
  1989. GetDiskPhoto();
  1990. LoadPhotos();
  1991. }
  1992. VOID ChoosePhotoSkin2::OnReturnMainDir()
  1993. {
  1994. //返回上层
  1995. m_pCurrSelFolder = m_OpenFolder = NULL;
  1996. if (m_SelectCategory == INDX_SEL)
  1997. UpdateChooseZS();
  1998. else if(m_SelectCategory == INDX_NOSEL)
  1999. {
  2000. m_sChooseFilter = _T("");
  2001. UpdateChooseZS();
  2002. GetNoSelPhoto();
  2003. }
  2004. LoadPhotos();
  2005. }
  2006. long ChoosePhotoSkin2::UpdateTakeZS(WPARAM inWParam, LPARAM inLParam)
  2007. {
  2008. if (m_SelectCategory == INDX_ALL && m_List1.GetItemCount() > atoi(m_takezs))
  2009. {
  2010. UpdateData();
  2011. m_takezs.Format("%d", m_List1.GetItemCount());
  2012. UpdateData(false);
  2013. }
  2014. //绘制
  2015. DrawInterface();
  2016. return 1;
  2017. }
  2018. /************************************************************************/
  2019. /*
  2020. 函数: UpdateChooseZS
  2021. 描述: 更新选中相片
  2022. 参数:
  2023. 返回:
  2024. 注意:
  2025. */
  2026. /************************************************************************/
  2027. void ChoosePhotoSkin2::UpdateChooseZS()
  2028. {
  2029. int i = 0;
  2030. CString str = _T("");
  2031. CStringArray* pSelArr = NULL;
  2032. CStringArray* pAllArr = NULL;
  2033. if(m_OpenFolder)
  2034. pSelArr = GetCurArray(INDX_SEL, m_OpenFolder);
  2035. else
  2036. pSelArr = GetCurArray(INDX_SEL);
  2037. if(m_OpenFolder)
  2038. pAllArr = GetCurArray(INDX_ALL, m_OpenFolder);
  2039. else
  2040. pAllArr = GetCurArray(INDX_ALL);
  2041. pSelArr->RemoveAll();
  2042. if (m_sChooseFilter != _T("") && m_sChooseFilter != _T("全部"))
  2043. {
  2044. for ( i = 0; i < m_List3.GetItemCount(); i++)
  2045. {
  2046. if (m_List3.GetItemText(i, 2) != m_sChooseFilter)
  2047. continue;
  2048. str = m_no2array.ElementAt(i);
  2049. GetPathAddToSel(pSelArr, str, pAllArr);
  2050. }
  2051. return;
  2052. }
  2053. for ( i = 0; i < m_noarray.GetSize(); i++)
  2054. {
  2055. str = m_noarray.ElementAt(i);
  2056. GetPathAddToSel(pSelArr, str, pAllArr);
  2057. }
  2058. for (i = 0; i < m_no2array.GetSize(); i++)
  2059. {
  2060. str = m_no2array.ElementAt(i);
  2061. GetPathAddToSel(pSelArr, str, pAllArr);
  2062. }
  2063. }
  2064. // 保存按钮;
  2065. void ChoosePhotoSkin2::OnButton4()// 保存按钮;
  2066. {
  2067. UpdateData();
  2068. if (m_SelectCategory != INDX_SEL)
  2069. CalChooseZS(&m_SelPhotoPath, &m_AllPhotoPath);
  2070. CString zs = m_taoxizs;
  2071. int pos = zs.Find("\\");
  2072. if (pos != -1)
  2073. zs = zs.Left(pos);
  2074. CStringArray* parr = NULL;
  2075. CStringArray* pAllArr = NULL;
  2076. int nSelCount = 0;
  2077. vector<SFolderInfo*>::iterator iter = m_vFolder.begin();
  2078. while(iter != m_vFolder.end())
  2079. {
  2080. SFolderInfo* p = (*iter);
  2081. if(p != NULL)
  2082. {
  2083. pAllArr = GetCurArray(INDX_ALL, p);
  2084. parr = GetCurArray(INDX_SEL, p);
  2085. CalChooseZS(parr, pAllArr);
  2086. nSelCount += parr->GetSize();
  2087. }
  2088. ++iter;
  2089. }
  2090. nSelCount += m_SelPhotoPath.GetSize();
  2091. m_choosezs.Format("%d", max(0, nSelCount - atoi(zs)));
  2092. m_bSaveFail = 0;
  2093. ChoosePhotoSkin3 dlg;
  2094. dlg.m_strStatusOfChoosePhoto = m_strStatusOfChoosePhoto; // Jeff 传选片状态;
  2095. dlg.m_pParent = this;
  2096. dlg.DoModal();
  2097. if (dlg.m_bSave)
  2098. m_bModify = 0;
  2099. if (dlg.m_bPushedSave == 0 && dlg.m_bSaveFail == 0)
  2100. {
  2101. CString savepath = _T("");
  2102. savepath.Format("%s\\%s.dat", g_mainpath, m_strOrderNumber);
  2103. ::DeleteFile(savepath); // 删除*.dat文件;
  2104. }
  2105. m_bSaveFail = dlg.m_bSaveFail;
  2106. if (dlg.m_bExit)
  2107. {
  2108. m_bModify = 0;
  2109. CDialog::OnCancel();
  2110. }
  2111. }
  2112. // 删除相片;
  2113. BOOL ChoosePhotoSkin2::OnDel() // 删除相片;
  2114. {
  2115. // printf("Jeff:m_mode=%d,m_mode2=%d.\n\n",m_mode,m_mode2);//Jeff Printf
  2116. if (m_SelectCategory == INDX_SEL)
  2117. {// 当前界面:选中界面;
  2118. AfxMessageBox(_T("选中照片不能删除, 请先取消选中状态!"), MB_ICONINFORMATION);
  2119. return 0;
  2120. }
  2121. else if (m_SelectCategory == INDX_DEL)
  2122. {// 当前界面:删除;
  2123. return 0;
  2124. }
  2125. POSITION pos;
  2126. pos = m_List1.GetFirstSelectedItemPosition();
  2127. if (pos == NULL)
  2128. return 0;
  2129. if (m_bRunning)
  2130. return 0;
  2131. CStringArray* pArray = NULL;
  2132. CString strDelPhotoName = _T("");
  2133. CString strSelPhotoPath = _T("");
  2134. int nFolderNum = m_vFolder.size();
  2135. int iItem = m_List1.GetNextSelectedItem(pos);
  2136. int nItemIdx = iItem;
  2137. //选片模式;
  2138. if(m_OpenFolder == NULL)
  2139. {
  2140. pArray = GetCurArray(m_SelectCategory);
  2141. if(nItemIdx < m_vFolder.size())
  2142. {
  2143. //删除选取文件夹;
  2144. if(AfxMessageBox(_T("是否删除选中的文件夹!"), MB_YESNO | MB_ICONINFORMATION) == IDNO)
  2145. return 0;
  2146. m_pCurrSelFolder = FindForderFromIndx(iItem);
  2147. if(m_pCurrSelFolder)
  2148. {
  2149. m_bModify = 1;
  2150. //相片由子移到主;
  2151. MoveFileSubToMain(m_pCurrSelFolder);
  2152. DelFolderFromName(m_pCurrSelFolder->strName);
  2153. m_pCurrSelFolder = NULL;
  2154. LoadPhotos();
  2155. }
  2156. return 0;
  2157. }
  2158. else
  2159. nItemIdx = nItemIdx - m_vFolder.size();
  2160. }
  2161. else
  2162. pArray = GetCurArray(INDX_ALL, m_OpenFolder);
  2163. strSelPhotoPath = pArray->ElementAt(nItemIdx);
  2164. strDelPhotoName = strSelPhotoPath;
  2165. if(strDelPhotoName == _T("") || pArray == NULL)
  2166. return 0;
  2167. strDelPhotoName = strDelPhotoName.Right(strDelPhotoName.GetLength() - strDelPhotoName.ReverseFind('\\') - 1);
  2168. strDelPhotoName = strDelPhotoName.Left(strDelPhotoName.Find('.'));
  2169. if (IsSelPhoto(SEPS_VEB + strDelPhotoName + SEPS_VEB))
  2170. {
  2171. AfxMessageBox(_T("选中的照片不能删除, 请先取消选中状态!"), MB_ICONINFORMATION);
  2172. return 0;
  2173. }
  2174. if (AfxMessageBox(_T("是否删除此照片?"), MB_YESNO | MB_ICONINFORMATION) != IDYES)
  2175. return 0;
  2176. printf("\t要删除的相片编号:%s\n", strDelPhotoName);
  2177. // 将要删除的相片添加到删除数组里;
  2178. #if JEFF_TEST_ON
  2179. if(PathFileExists(strSelPhotoPath))
  2180. m_DelPhotoPath.Add(strSelPhotoPath);
  2181. #else
  2182. m_DelPhotoPath.Add(strSelPhotoPath);
  2183. #endif //#if JEFF_TEST_ON
  2184. if ( m_delphotos.Find(SEPS_VEB + strDelPhotoName + SEPS_VEB) != -1)
  2185. {
  2186. printf("\t错误,相片编号:%s 已在删除列表中\n", strDelPhotoName);
  2187. }
  2188. else
  2189. {// 将要删除的相片编号添加进去;
  2190. m_delphotos.TrimRight(SEPS_VEB);
  2191. m_delphotos += SEPS_VEB + strDelPhotoName + SEPS_VEB;
  2192. }
  2193. for(int i = 0; i < pArray->GetSize(); i++)
  2194. {
  2195. //字符串比较相同=0;
  2196. if(strSelPhotoPath.CollateNoCase(pArray->ElementAt(i)) == 0)
  2197. {
  2198. pArray->RemoveAt(i);
  2199. m_List1.DeleteItem(iItem);
  2200. break;
  2201. }
  2202. }
  2203. if(m_SelectCategory == INDX_NOSEL)
  2204. DelPhotoFromName(m_AllPhotoPath, strDelPhotoName);
  2205. m_bModify = 1;
  2206. //设置默认选项;
  2207. if(iItem >= pArray->GetSize())
  2208. iItem = 0;
  2209. m_List1.SetItemState(iItem, LVIS_SELECTED, LVIS_SELECTED);
  2210. return 1;
  2211. }
  2212. void ChoosePhotoSkin2::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)
  2213. {
  2214. *pResult = 0;
  2215. }
  2216. void ChoosePhotoSkin2::OnTimer(UINT nIDEvent)
  2217. {
  2218. if (nIDEvent == 1)
  2219. {
  2220. KillTimer(nIDEvent);
  2221. if (m_showpichwd)
  2222. ::SendMessage(m_showpichwd, WM_USER + 200, 1, 0);
  2223. TimeOutDlg dlg;
  2224. dlg.m_ticks = m_ticks;
  2225. dlg.DoModal();
  2226. SetTimer(2, m_timer * 60000, NULL);
  2227. }
  2228. else if (nIDEvent == 2) // 定时器触发超时密码对话框;
  2229. {
  2230. KillTimer(nIDEvent);
  2231. if (m_showpichwd)
  2232. ::SendMessage(m_showpichwd, WM_USER + 200, 1, 0);
  2233. TimeOutDlg dlg;
  2234. dlg.m_ticks = m_ticks;
  2235. dlg.DoModal();
  2236. SetTimer(2, m_timer * 60000, NULL);
  2237. }
  2238. else if (nIDEvent == 3)
  2239. {
  2240. KillTimer(nIDEvent);
  2241. //SetSPName3();
  2242. }
  2243. }
  2244. /************************************************************************/
  2245. /*
  2246. 函数: LoadPhotos
  2247. 描述: 加载图片
  2248. 参数:
  2249. 返回:
  2250. */
  2251. /************************************************************************/
  2252. void ChoosePhotoSkin2::LoadPhotos()
  2253. {
  2254. TerminateThread();
  2255. //清除资源的路径;
  2256. ClearResData();
  2257. DWORD tm1(0), tm2(0);
  2258. tm1 = GetTickCount();
  2259. //选片;
  2260. CStringArray *pArray = NULL;
  2261. if(!m_OpenFolder)
  2262. {//在主目录;
  2263. //添加文件夹名;
  2264. vector<SFolderInfo*>::iterator iter = m_vFolder.begin();
  2265. for(;iter != m_vFolder.end();)
  2266. {
  2267. SFolderInfo* p = (*iter);
  2268. if(p != NULL)
  2269. {
  2270. SResData* pRes = new SResData();
  2271. pRes->nType = (int)TYPE_FOLDER;
  2272. //转为小写;
  2273. p->strName.MakeLower();
  2274. pRes->strName = p->strName;
  2275. m_vResData.push_back(pRes);
  2276. }
  2277. ++iter;
  2278. }
  2279. pArray = GetCurArray(m_SelectCategory);
  2280. }
  2281. else
  2282. pArray = GetCurArray(m_SelectCategory, m_OpenFolder);
  2283. if(pArray == NULL)
  2284. return;
  2285. for (int i = 0; i < pArray->GetSize(); i++)
  2286. {
  2287. CString filePath = pArray->ElementAt(i);
  2288. if(filePath == _T(""))
  2289. continue;
  2290. SResData* pRes = new SResData();
  2291. pRes->nType = (int)TYPE_ICON;
  2292. //转为小写;
  2293. filePath.MakeLower();
  2294. pRes->strFilePath = filePath;
  2295. m_vResData.push_back(pRes);
  2296. }
  2297. tm2 = GetTickCount();
  2298. printf(_T("绘制图片的准备时间:%dms\n"), (tm2-tm1));
  2299. //创建绘画线程LoadThumbNail3;
  2300. LoadThumbImages();
  2301. }
  2302. /************************************************************************/
  2303. /*
  2304. 函数: GetNoSelPhoto
  2305. 描述: 未选中的相片
  2306. 参数:
  2307. 返回:
  2308. 注意:
  2309. */
  2310. /************************************************************************/
  2311. void ChoosePhotoSkin2::GetNoSelPhoto()
  2312. {
  2313. CStringArray* pNoSelArr = NULL;
  2314. CStringArray* pAllArr = NULL;
  2315. CStringArray* pSelArr = NULL;
  2316. if(m_OpenFolder)
  2317. {
  2318. pNoSelArr = GetCurArray(INDX_NOSEL, m_OpenFolder);
  2319. pAllArr = GetCurArray(INDX_ALL, m_OpenFolder);
  2320. pSelArr = GetCurArray(INDX_SEL, m_OpenFolder);
  2321. }
  2322. else
  2323. {
  2324. pNoSelArr = GetCurArray(INDX_NOSEL);
  2325. pAllArr = GetCurArray(INDX_ALL);
  2326. pSelArr = GetCurArray(INDX_SEL);
  2327. }
  2328. if(pNoSelArr == NULL || pAllArr == NULL || pSelArr == NULL)
  2329. return;
  2330. pNoSelArr->RemoveAll();
  2331. CString str1(_T("")), str2(_T(""));
  2332. for (int i = 0; i < pAllArr->GetSize(); i++)
  2333. {
  2334. BOOL bFind = 0;
  2335. for (int j = 0; j < pSelArr->GetSize(); j++)
  2336. {
  2337. str1 = pAllArr->ElementAt(i);
  2338. str2 = pSelArr->ElementAt(j);
  2339. if (str1.CollateNoCase(str2) == 0)
  2340. {
  2341. bFind = 1;
  2342. break;
  2343. }
  2344. }
  2345. if (bFind == 0)
  2346. pNoSelArr->Add(pAllArr->ElementAt(i));
  2347. }
  2348. }
  2349. /************************************************************************/
  2350. /*
  2351. 函数: OnSelPhoto
  2352. 描述: 查看选中相片
  2353. 参数:
  2354. 返回:
  2355. 注意:
  2356. */
  2357. /************************************************************************/
  2358. void ChoosePhotoSkin2::OnSelPhoto()
  2359. {
  2360. ProductChooseFilter dlg;
  2361. CString name = _T("");
  2362. int i = 0;
  2363. for ( i = 0; i < m_List2.GetItemCount(); i++)
  2364. {
  2365. name = m_List2.GetItemText(i, 2);
  2366. dlg.m_array.Add(name);
  2367. }
  2368. for (i = 0; i < m_List3.GetItemCount(); i++)
  2369. {
  2370. name = m_List3.GetItemText(i, 2);
  2371. dlg.m_array.Add(name);
  2372. }
  2373. if(dlg.DoModal() == IDCANCEL)
  2374. {
  2375. m_SelectCategory = INDX_ALL;
  2376. return;
  2377. }
  2378. m_sChooseFilter = dlg.m_sChooseFilter;
  2379. UpdateChooseZS();
  2380. }
  2381. /************************************************************************/
  2382. /*
  2383. 函数: GetCurArray
  2384. 描述: 获取要查看的数据
  2385. 参数:
  2386. const int nIndx 选中数据索引
  2387. SFolderInfo* m_pForder 文件夹
  2388. 返回:
  2389. 注意:
  2390. */
  2391. /************************************************************************/
  2392. CStringArray* ChoosePhotoSkin2::GetCurArray(const int nIndx, SFolderInfo* m_pForder/* = NULL*/)
  2393. {
  2394. CStringArray* pArray = NULL;
  2395. if(m_pForder)
  2396. {
  2397. switch (nIndx)
  2398. {
  2399. case INDX_ALL: //全部;
  2400. pArray = &m_pForder->AllPhotoPath;
  2401. break;
  2402. case INDX_SEL: //选中;
  2403. pArray = &m_pForder->SelPhotoPath;
  2404. break;
  2405. case INDX_NOSEL: //未选;
  2406. pArray = &m_pForder->NoSelPhotoPath;
  2407. break;
  2408. case INDX_DEL: //删除;
  2409. pArray = &m_pForder->DelPhotoPath;
  2410. break;
  2411. case INDX_INTOALBUM: //入册;
  2412. pArray = &m_pForder->IntoAlbumPath;
  2413. break;
  2414. case INDX_ENTRYPHASSE: //入底;
  2415. pArray = &m_pForder->EntryPhasepath;
  2416. break;
  2417. }
  2418. return pArray;
  2419. }
  2420. switch (nIndx)
  2421. {
  2422. case INDX_ALL: //全部;
  2423. pArray = &m_AllPhotoPath;
  2424. break;
  2425. case INDX_SEL: //选中;
  2426. pArray = &m_SelPhotoPath;
  2427. break;
  2428. case INDX_NOSEL: //未选;
  2429. pArray = &m_NoSelPhotoPath;
  2430. break;
  2431. case INDX_DEL: //删除;
  2432. pArray = &m_DelPhotoPath;
  2433. break;
  2434. case INDX_INTOALBUM: //入册;
  2435. pArray = &m_IntoAlbumPath;
  2436. break;
  2437. case INDX_ENTRYPHASSE: //入底;
  2438. pArray = &m_EntryPhasepath;
  2439. break;
  2440. }
  2441. return pArray;
  2442. }
  2443. // path如:"|004|"
  2444. BOOL ChoosePhotoSkin2::IsSelAlbumPhoto(CString path)
  2445. {
  2446. CString photosno;
  2447. for (int i = 0; i < m_List3.GetItemCount(); i++)
  2448. {
  2449. if (m_List3.GetItemText(i, 2) != _T("入册"))
  2450. continue;
  2451. photosno = m_no2array.ElementAt(i);
  2452. break;
  2453. }
  2454. if (photosno.Find(path) != -1)
  2455. {
  2456. return 1;
  2457. }
  2458. return 0;
  2459. }
  2460. // path 如:"|004|"
  2461. BOOL ChoosePhotoSkin2::IsSelDiskPhoto(CString path)
  2462. {
  2463. CString photosno;
  2464. for (int i = 0; i < m_List3.GetItemCount(); i++)
  2465. {
  2466. if (m_List3.GetItemText(i, 2) != _T("入底"))
  2467. continue;
  2468. photosno = m_no2array.ElementAt(i);
  2469. break;
  2470. }
  2471. if (photosno.Find(path) != -1)
  2472. {
  2473. return 1;
  2474. }
  2475. return 0;
  2476. }
  2477. /************************************************************************/
  2478. /*
  2479. 函数: SortArray
  2480. 描述: 按F4乱序或排序
  2481. 参数:
  2482. 返回:
  2483. */
  2484. /************************************************************************/
  2485. void ChoosePhotoSkin2::SortArray()
  2486. {
  2487. int i = 0;
  2488. int j = 0;
  2489. m_bSort = !m_bSort;
  2490. CStringArray *pArray[6] = { &m_AllPhotoPath, &m_SelPhotoPath, &m_NoSelPhotoPath, &m_DelPhotoPath, &m_IntoAlbumPath, &m_EntryPhasepath };
  2491. if (m_bSort == 0)
  2492. {
  2493. for ( i = 0; i < 6; i++)
  2494. {
  2495. if (pArray[i]->GetSize())
  2496. {
  2497. int size = pArray[i]->GetSize() - 1;
  2498. CString sTemp;
  2499. int nPos;
  2500. for (int ii = 0; ii < size; ii++)
  2501. {
  2502. nPos = rand() % (size - ii);
  2503. sTemp = pArray[i]->ElementAt(size - ii);
  2504. pArray[i]->SetAt(size - ii, pArray[i]->ElementAt(nPos));
  2505. pArray[i]->SetAt(nPos, sTemp);
  2506. }
  2507. }
  2508. }
  2509. }
  2510. else
  2511. { // 使用CCombobox的Sort来排序;
  2512. for ( i = 0; i < 6; i++)
  2513. {
  2514. m_combo1.ResetContent();
  2515. CString Temp;
  2516. for ( j = 0; j < pArray[i]->GetSize(); j++)
  2517. {
  2518. m_combo1.AddString(pArray[i]->ElementAt(j));
  2519. }
  2520. for (j = 0; j < pArray[i]->GetSize(); j++)
  2521. {
  2522. m_combo1.GetLBText(j, Temp);
  2523. pArray[i]->SetAt(j, Temp);
  2524. }
  2525. }
  2526. }
  2527. //终止线程;
  2528. TerminateThread();
  2529. //清除资源的路径;
  2530. ClearResData();
  2531. CStringArray *pArr = NULL;
  2532. //选片;
  2533. if(!m_OpenFolder)
  2534. {//在主目录;
  2535. //添加文件夹名;
  2536. vector<SFolderInfo*>::iterator iter = m_vFolder.begin();
  2537. for(;iter != m_vFolder.end();)
  2538. {
  2539. SFolderInfo* p = (*iter);
  2540. if(p != NULL)
  2541. {
  2542. SResData* pRes = new SResData();
  2543. pRes->nType = (int)TYPE_FOLDER;
  2544. //转为小写;
  2545. p->strName.MakeLower();
  2546. pRes->strName = p->strName;
  2547. m_vResData.push_back(pRes);
  2548. }
  2549. ++iter;
  2550. }
  2551. pArr = GetCurArray(m_SelectCategory);
  2552. }
  2553. else
  2554. pArr = GetCurArray(INDX_ALL, m_OpenFolder);
  2555. if(pArr == NULL)
  2556. return;
  2557. for ( i = 0; i < pArr->GetSize(); i++)
  2558. {
  2559. SResData* pRes = new SResData();
  2560. pRes->nType = (int)TYPE_ICON;
  2561. CString filePath = pArr->ElementAt(i);
  2562. //转为小写;
  2563. filePath.MakeLower();
  2564. pRes->strFilePath = filePath;
  2565. m_vResData.push_back(pRes);
  2566. }
  2567. //创建绘画线程LoadThumbNail3;
  2568. LoadThumbImages();
  2569. }
  2570. /************************************************************************/
  2571. /*
  2572. 函数: CheckForDisk
  2573. 描述: 检查入底
  2574. 参数:
  2575. 返回:
  2576. */
  2577. /************************************************************************/
  2578. void ChoosePhotoSkin2::CheckForDisk()
  2579. {
  2580. int i = 0;
  2581. for ( i = 0; i < m_List2.GetItemCount(); i++)
  2582. {
  2583. if (_T("入底") == m_List2.GetItemText(i, 2))
  2584. return;
  2585. }
  2586. for (i = 0; i < m_List3.GetItemCount(); i++)
  2587. {
  2588. if (_T("入底") == m_List3.GetItemText(i, 2))
  2589. return;
  2590. }
  2591. i = m_List3.GetItemCount();
  2592. m_List3.InsertItem(i, _T(""));
  2593. m_List3.SetItemText(i, 2, _T("入底"));
  2594. m_no2array.Add(_T(""));
  2595. }
  2596. /************************************************************************/
  2597. /*
  2598. 函数: CheckForAlbum
  2599. 描述: 检查入册
  2600. 参数:
  2601. 返回:
  2602. */
  2603. /************************************************************************/
  2604. void ChoosePhotoSkin2::CheckForAlbum()
  2605. {
  2606. int i = 0;
  2607. for (i = 0; i < m_List2.GetItemCount(); i++)
  2608. {
  2609. if (_T("入册") == m_List2.GetItemText(i, 2))
  2610. return;
  2611. }
  2612. for (i = 0; i < m_List3.GetItemCount(); i++)
  2613. {
  2614. if (_T("入册") == m_List3.GetItemText(i, 2))
  2615. return;
  2616. }
  2617. i = m_List3.GetItemCount();
  2618. m_List3.InsertItem(i, _T(""));
  2619. m_List3.SetItemText(i, 2, _T("入册"));
  2620. m_no2array.Add(_T(""));
  2621. }
  2622. /*-------------------------------------------------------
  2623. 函数名: DrawInterface
  2624. 描述: 绘制界面
  2625. 参数:
  2626. 返回值:
  2627. -------------------------------------------------------*/
  2628. void ChoosePhotoSkin2::DrawInterface()
  2629. {
  2630. CRect rc(0, 0, 0, 0), rt(0, 0, 0, 0);
  2631. ((MyBmpButton2*)m_picarray.ElementAt(3))->GetWindowRect(rc);
  2632. ScreenToClient(rc);
  2633. int nH = rc.bottom - rc.top;
  2634. rc.right -= (rc.left + 100);
  2635. rc.left = 5;
  2636. rc.top += 10;
  2637. rc.right += 220;
  2638. rc.bottom = rc.top + nH - 10;
  2639. rt.CopyRect(&rc);
  2640. CDC *pDC = GetDC();
  2641. Graphics graph(pDC->GetSafeHdc());
  2642. Rect destinationRect(rc.left, rc.top, rc.Width(), rc.Height());
  2643. RectF layoutRect(rc.left, rc.top, rc.Width(), rc.Height());
  2644. rc.left /= g_fscalex;
  2645. rc.right /= g_fscalex;
  2646. rc.top /= g_fscaley;
  2647. rc.bottom /= g_fscaley;
  2648. // graph.SetSmoothingMode(SmoothingModeHighQuality);
  2649. graph.DrawImage(m_pBk, destinationRect, rc.left, rc.top, rc.Width(), rc.Height(), UnitPixel);
  2650. StringFormat format;
  2651. format.SetAlignment(StringAlignmentNear);
  2652. SolidBrush *Brush = new SolidBrush(Color(255, 255, 255, 255));
  2653. //显示张数
  2654. CString str = _T("");
  2655. if(m_OpenFolder == NULL && m_List1.GetItemCount() >= m_vFolder.size())
  2656. str.Format(_T("张数:%d"), m_List1.GetItemCount() - m_vFolder.size());
  2657. else
  2658. str.Format(_T("张数:%d"), m_List1.GetItemCount());
  2659. //显示文件夹名
  2660. str += _T(" 主目录");
  2661. if(m_OpenFolder)
  2662. str += _T(">") + m_OpenFolder->strName;
  2663. int leng = GetLengthEx(str);
  2664. BSTR bstr = str.AllocSysString();
  2665. Gdiplus::Font* pFont = new Gdiplus::Font(L"黑体", 11);
  2666. graph.SetTextRenderingHint(TextRenderingHintAntiAlias);
  2667. graph.DrawString(
  2668. bstr,
  2669. leng,
  2670. pFont,
  2671. layoutRect,
  2672. &format,
  2673. Brush);
  2674. SysFreeString(bstr);
  2675. delete Brush;
  2676. delete pFont;
  2677. ReleaseDC(pDC);
  2678. }
  2679. CString ChoosePhotoSkin2::GetZSInfo(int iItem)
  2680. {
  2681. if (m_SelectCategory != INDX_SEL)
  2682. CalChooseZS(GetCurArray(INDX_SEL), GetCurArray(INDX_ALL));
  2683. CString str = _T("");
  2684. CString scount = m_List1.GetItemText(iItem, 0);
  2685. int ncount = 0;
  2686. int npos = scount.Find(_T("\r\n"));
  2687. while (npos != -1)
  2688. {
  2689. ncount++;
  2690. scount = scount.Right(scount.GetLength() - npos - 2);
  2691. npos = scount.Find(_T("\r\n"));
  2692. }
  2693. CString zs = m_taoxizs;
  2694. int pos = zs.Find("\\");
  2695. if (pos != -1)
  2696. zs = zs.Left(pos);
  2697. CStringArray* pSelPhotoPath = GetCurArray(INDX_SEL);
  2698. CStringArray* pAllPhotoPath = GetCurArray(INDX_ALL);
  2699. int nNoSelCount = GetNoSelPhotoCount(pAllPhotoPath, pSelPhotoPath);
  2700. int nSelCount = pSelPhotoPath->GetSize();
  2701. str.Format(_T("选中次数:%d 已选/应选:%d/%d\r\n加选:%d+ 未选/剩余:%d/%d"), ncount, nSelCount, atoi(zs), max(0, nSelCount - atoi(zs)), max(0, atoi(zs) - nSelCount), nNoSelCount);
  2702. return str;
  2703. }
  2704. /************************************************************************/
  2705. /*
  2706. 函数: GetPathAddToSel
  2707. 描述: 获取路径添加到选中相片
  2708. 参数:
  2709. strName:dindansp表中no或no2字段值;相片名间使用逗号分隔;
  2710. 返回: 1成功,0失败
  2711. */
  2712. /************************************************************************/
  2713. int ChoosePhotoSkin2::GetPathAddToSel(const CString& strName)
  2714. {
  2715. if(strName == _T(""))
  2716. return 0;
  2717. CStringArray* pSelArr = NULL;
  2718. CStringArray* pAllArr = NULL;
  2719. if(m_OpenFolder != NULL)
  2720. {
  2721. pSelArr = GetCurArray(INDX_SEL, m_OpenFolder);
  2722. pAllArr = GetCurArray(INDX_ALL, m_OpenFolder);
  2723. }
  2724. else
  2725. {
  2726. pSelArr = GetCurArray(INDX_SEL);
  2727. pAllArr = GetCurArray(INDX_ALL);
  2728. }
  2729. GetPathAddToSel(pSelArr, strName, pAllArr);
  2730. return 1;
  2731. }
  2732. /************************************************************************/
  2733. /*
  2734. 函数: GetPathAddToSel
  2735. 描述: 获取路径添加到选中相片
  2736. 参数:
  2737. CStringArray* pSelArr
  2738. const CString& str
  2739. 返回: 1成功,0失败
  2740. */
  2741. /************************************************************************/
  2742. int ChoosePhotoSkin2::GetPathAddToSel(CStringArray* pSelArr, const CString& strName, CStringArray* pAllArr)
  2743. {
  2744. return ChoosePhotoBase::GetPathAddToSel(pSelArr, strName, pAllArr);
  2745. }
  2746. /************************************************************************/
  2747. /*
  2748. 函数: GetAlbumPhoto
  2749. 描述: 查看入册相片
  2750. 参数:
  2751. 返回:
  2752. */
  2753. /************************************************************************/
  2754. void ChoosePhotoSkin2::GetAlbumPhoto()
  2755. {
  2756. if (m_SelectCategory == INDX_INTOALBUM && !m_OpenFolder)
  2757. return;
  2758. m_SelectCategory = INDX_INTOALBUM;
  2759. CStringArray* pArr = NULL;
  2760. if(m_OpenFolder)
  2761. pArr = GetCurArray(m_SelectCategory, m_OpenFolder);
  2762. else
  2763. pArr = GetCurArray(m_SelectCategory);
  2764. pArr->RemoveAll();
  2765. CString photosName = _T("");
  2766. int i = 0;
  2767. for (i= 0; i < m_List3.GetItemCount(); i++)
  2768. {
  2769. if (m_List3.GetItemText(i, 2) != _T("入册"))
  2770. continue;
  2771. photosName = m_no2array.ElementAt(i);
  2772. break;
  2773. }
  2774. CStringArray* pAllArry = NULL;
  2775. if(m_OpenFolder != NULL)
  2776. pAllArry = GetCurArray(INDX_ALL, m_OpenFolder);
  2777. else
  2778. pAllArry = GetCurArray(INDX_ALL);
  2779. //将入册的相片名
  2780. #ifdef USE_SEP_VEB
  2781. photosName = SEPS_VEB + photosName + SEPS_VEB;
  2782. #else
  2783. photosName = SEPS_CMA + photosName + SEPS_CMA;
  2784. #endif //#ifdef USE_SEP_VEB
  2785. for (i = pAllArry->GetSize() - 1; i >= 0; i--)
  2786. {
  2787. CString strName = _T("");
  2788. strName = pAllArry->ElementAt(i);
  2789. strName = strName.Right(strName.GetLength() - strName.ReverseFind('\\') - 1);
  2790. strName = strName.Left(strName.Find('.'));
  2791. #ifdef USE_SEP_VEB
  2792. strName = SEPS_VEB + strName + SEPS_VEB;
  2793. #else
  2794. strName = SEPS_CMA + strName + SEPS_CMA;
  2795. #endif //#ifdef USE_SEP_VEB
  2796. if (photosName.Find(strName) != -1)
  2797. {
  2798. strName = pAllArry->ElementAt(i);
  2799. pArr->Add(strName);
  2800. }
  2801. }
  2802. }
  2803. /************************************************************************/
  2804. /*
  2805. 函数: GetDiskPhoto
  2806. 描述: 查看入底相片
  2807. 参数:
  2808. 返回:
  2809. */
  2810. /************************************************************************/
  2811. void ChoosePhotoSkin2::GetDiskPhoto()
  2812. {
  2813. if (m_SelectCategory == INDX_ENTRYPHASSE && !m_OpenFolder)
  2814. return;
  2815. m_SelectCategory = INDX_ENTRYPHASSE;
  2816. CStringArray* pArr = NULL;
  2817. if(m_OpenFolder)
  2818. pArr = GetCurArray(m_SelectCategory, m_OpenFolder);
  2819. else
  2820. pArr = GetCurArray(m_SelectCategory);
  2821. int i = 0;
  2822. pArr->RemoveAll();
  2823. CString photosName = _T("");
  2824. for ( i = 0; i < m_List3.GetItemCount(); i++)
  2825. {
  2826. if (m_List3.GetItemText(i, 2) != _T("入底"))
  2827. continue;
  2828. photosName = m_no2array.ElementAt(i);
  2829. break;
  2830. }
  2831. CStringArray* pAllArry = NULL;
  2832. if(m_OpenFolder != NULL)
  2833. pAllArry = GetCurArray(INDX_ALL, m_OpenFolder);
  2834. else
  2835. pAllArry = GetCurArray(INDX_ALL);
  2836. #ifdef USE_SEP_VEB
  2837. photosName = SEPS_VEB + photosName + SEPS_VEB;
  2838. #else
  2839. photosName = SEPS_CMA + photosName + SEPS_CMA;
  2840. #endif //#ifdef USE_SEP_VEB
  2841. for (i = pAllArry->GetSize() - 1; i >= 0; i--)
  2842. {
  2843. CString strName = _T("");
  2844. strName = pAllArry->ElementAt(i);
  2845. strName = strName.Right(strName.GetLength() - strName.ReverseFind('\\') - 1);
  2846. strName = strName.Left(strName.Find('.'));
  2847. #ifdef USE_SEP_VEB
  2848. strName = SEPS_VEB + strName + SEPS_VEB;
  2849. #else
  2850. strName = SEPS_CMA + strName + SEPS_CMA;
  2851. #endif //#ifdef USE_SEP_VEB
  2852. if (photosName.Find(strName) != -1)
  2853. {
  2854. strName = pAllArry->ElementAt(i);
  2855. pArr->Add(strName);
  2856. }
  2857. }
  2858. }
  2859. /************************************************************************/
  2860. /*
  2861. 函数名: ReLoad
  2862. 描述: 重新加载数据
  2863. 参数:
  2864. 返回值:
  2865. */
  2866. /************************************************************************/
  2867. BOOL ChoosePhotoSkin2::ReLoad()
  2868. {
  2869. return GetData();
  2870. }
  2871. /************************************************************************/
  2872. /*
  2873. 函数: DrawImageWork
  2874. 描述: 绘制工作
  2875. 参数:
  2876. 返回:
  2877. */
  2878. /************************************************************************/
  2879. void ChoosePhotoSkin2::DrawImageWork()
  2880. {
  2881. CListCtrl* ListCtrl = &m_List1;
  2882. CImageList* pImgList = &m_ImageListThumb;
  2883. try
  2884. {
  2885. // reset our image list
  2886. for (int i = 0; i < pImgList->GetImageCount(); i++)
  2887. pImgList->Remove(i);
  2888. // remove all items from list view
  2889. ListCtrl->DeleteAllItems();
  2890. pImgList->SetImageCount(m_vResData.size());
  2891. // Set redraw to FALSE to avoid flickering during adding new items
  2892. ListCtrl->SetRedraw(FALSE);
  2893. //添加列表项名;
  2894. AddListItemName(ListCtrl);
  2895. //设置重绘并刷新;
  2896. ListCtrl->SetRedraw(TRUE);
  2897. ListCtrl->Invalidate();
  2898. //绘制图标;
  2899. DrawImage(ListCtrl, pImgList);
  2900. m_bRunning = false;
  2901. m_bTerminate = false;
  2902. PostMessage(WM_USER + 200, 0, 0);
  2903. return;
  2904. }
  2905. catch (...)
  2906. {
  2907. ListCtrl->Invalidate();
  2908. m_bRunning = false;
  2909. m_bTerminate = false;
  2910. PostMessage(WM_USER + 200, 0, 0);
  2911. }
  2912. }
  2913. /************************************************************************/
  2914. /*
  2915. 函数: AddListItemName
  2916. 描述: 添加列表项名
  2917. 参数:
  2918. 返回: 1成功,0失败
  2919. */
  2920. /************************************************************************/
  2921. int ChoosePhotoSkin2::AddListItemName(CListCtrl* pListCtrl)
  2922. {
  2923. if(pListCtrl == NULL)
  2924. return 0;
  2925. int nIndex = 0;
  2926. CString str(_T("")), spath(_T(""));
  2927. //添加文件名;
  2928. vector<SResData*>::iterator iter;
  2929. for(iter = m_vResData.begin(); iter != m_vResData.end() && m_bTerminate != true; iter++, nIndex++)
  2930. {
  2931. SResData* pRes = (*iter);
  2932. if(pRes == NULL)
  2933. continue;
  2934. switch(pRes->nType)
  2935. {
  2936. case TYPE_ICON: //相片图标;
  2937. {
  2938. str = pRes->strFilePath;
  2939. str = str.Right(str.GetLength() - str.ReverseFind('\\') - 1);
  2940. str = str.Left(str.Find('.'));
  2941. //获取商品名如:004\r\n入册\r\n入底;
  2942. str += GetSelName(str);
  2943. }
  2944. break;
  2945. case TYPE_FOLDER: //文件夹;
  2946. str = pRes->strName;
  2947. break;
  2948. }
  2949. pListCtrl->InsertItem(nIndex, str, nIndex);
  2950. }
  2951. return 1;
  2952. }
  2953. /************************************************************************/
  2954. /*
  2955. 函数: DrawImage
  2956. 描述: 绘制
  2957. 参数:
  2958. 返回:
  2959. */
  2960. /************************************************************************/
  2961. void ChoosePhotoSkin2::DrawImage(CListCtrl* pListCtrl, CImageList* pImgList)
  2962. {
  2963. if(pListCtrl == NULL)
  2964. return;
  2965. int nIndex = 0;
  2966. Image* pHideImg = NULL; //相片图标;
  2967. Image* pFolderImg = NULL; //文件夹;
  2968. CString str(_T("")), spath(_T(""));
  2969. vector<SResData*>::iterator iter;
  2970. for (iter = m_vResData.begin(); iter != m_vResData.end() && m_bTerminate != true; iter++, nIndex++)
  2971. {
  2972. // Load Image File
  2973. Image *image = NULL;
  2974. Bitmap *pBmp = NULL;
  2975. SResData* pRes = (*iter);
  2976. if(pRes == NULL)
  2977. continue;
  2978. BOOL bNullimg = FALSE;
  2979. //加载相片图标res\未标题-1.jpg;
  2980. switch(pRes->nType)
  2981. {
  2982. case TYPE_ICON: //相片图标;
  2983. {
  2984. if(m_bHide && pHideImg == NULL)
  2985. pHideImg = m_pHideImg;
  2986. //是否要重新加载资源;
  2987. if(pHideImg == NULL)
  2988. {
  2989. ReLoadImageFromRes(&image, pRes->strFilePath, bNullimg);
  2990. if(image == NULL)
  2991. continue;
  2992. }
  2993. else
  2994. image = pHideImg;
  2995. }
  2996. break;
  2997. case TYPE_FOLDER: //文件夹;
  2998. {
  2999. if(pFolderImg == NULL)
  3000. pFolderImg = m_pFolderImg;
  3001. if(pFolderImg)
  3002. image = pFolderImg;
  3003. }
  3004. break;
  3005. }
  3006. //创建bitmap使用颜色填充区域;
  3007. SolidBrush whitebrush(Color(255, 255, 255, 255));
  3008. pBmp = new Bitmap(THUMBNAIL_WIDTH, THUMBNAIL_HEIGHT, PixelFormat24bppRGB);
  3009. Graphics graph2(pBmp);
  3010. graph2.Clear(Color(255, 192, 192, 192));
  3011. graph2.FillRectangle(&whitebrush, 1, 1, THUMBNAIL_WIDTH - 2, THUMBNAIL_HEIGHT - 2);
  3012. // 缩放图片符合画布大小;
  3013. Rect desRect(0, 0, 0, 0);
  3014. ZoomImage(image, desRect);
  3015. // 绘制图标res\未标题-1.jpg;
  3016. Graphics graph(pBmp);
  3017. graph.DrawImage(image, desRect, 0, 0, image->GetWidth(), image->GetHeight(), UnitPixel);
  3018. // 将图片替换bitmap添加到图标列表;
  3019. CBitmap bitmap;
  3020. HBITMAP hbmp;
  3021. pBmp->GetHBITMAP(Color(255, 255, 255, 255), &hbmp);
  3022. bitmap.Attach(hbmp);
  3023. pImgList->Replace(nIndex, &bitmap, NULL);
  3024. if(pBmp)
  3025. delete pBmp;
  3026. // Redraw only a current item for removing flickering and fast speed.
  3027. pListCtrl->RedrawItems(nIndex, nIndex);
  3028. // Release used DC and Object
  3029. if(image && pRes->nType == TYPE_ICON && pHideImg == NULL)
  3030. delete image;
  3031. }
  3032. pListCtrl->Invalidate();
  3033. }
  3034. /************************************************************************/
  3035. /*
  3036. 函数: FindForderFromIndx
  3037. 描述: 通过索引查找文件夹
  3038. 参数:
  3039. const int nIdx
  3040. 返回: SFolderInfo*
  3041. */
  3042. /************************************************************************/
  3043. SFolderInfo* ChoosePhotoSkin2::FindForderFromIndx(const int nIdx)
  3044. {
  3045. if(nIdx < 0 || nIdx >= m_vFolder.size())
  3046. return NULL;
  3047. return m_vFolder[nIdx];
  3048. }
  3049. /************************************************************************/
  3050. /*
  3051. 函数: MoveFileMainToSub
  3052. 描述: 移动文件主目录到子目录
  3053. 参数:
  3054. vector<CString>& vMoveFile, //选择的文件
  3055. SFolderInfo* pCurrSelForder, //当前选择的文件夹
  3056. const int nCurrSelIndx //当前选择的数据索引
  3057. 返回: 1成功, 0失败
  3058. */
  3059. /************************************************************************/
  3060. int ChoosePhotoSkin2::MoveFileMainToSub(vector<CString>& vMoveFile, SFolderInfo* pCurrSelForder, const int nCurrSelIndx)
  3061. {
  3062. if(pCurrSelForder == NULL || nCurrSelIndx < 0 || vMoveFile.size() == 0)
  3063. return 0;
  3064. CStringArray* pArr = GetCurArray(nCurrSelIndx, pCurrSelForder);
  3065. if(pArr == NULL)
  3066. return 0;
  3067. // 将主目录里手选的文件添加到子目录里;
  3068. int nSize = vMoveFile.size();
  3069. vector<CString>::iterator iter = vMoveFile.begin();
  3070. for(;iter != vMoveFile.end();)
  3071. {
  3072. if((*iter) != _T(""))
  3073. pArr->Add((*iter));
  3074. ++iter;
  3075. }
  3076. return 1;
  3077. }
  3078. /************************************************************************/
  3079. /*
  3080. 函数: MoveFileSubToMain
  3081. 描述: 移动文件子目录到主目录
  3082. 参数:
  3083. SFolderInfo* pCurrForder
  3084. 返回: 1成功, 0失败
  3085. */
  3086. /************************************************************************/
  3087. int ChoosePhotoSkin2::MoveFileSubToMain(SFolderInfo* pCurrForder, const int nCurrSelIndx)
  3088. {
  3089. if(pCurrForder == NULL)
  3090. return 0;
  3091. CStringArray* pArr = GetCurArray(nCurrSelIndx, pCurrForder);
  3092. if(pArr == NULL)
  3093. return 0;
  3094. //将文件夹里的相片添加到主目录里;
  3095. CStringArray* pAllPhotoArr = GetCurArray(nCurrSelIndx);
  3096. int nSize = pArr->GetSize();
  3097. for(int i = 0; i<nSize; i++)
  3098. {
  3099. CString strName = pArr->ElementAt(i);
  3100. if(strName != _T(""))
  3101. pAllPhotoArr->Add(strName);
  3102. }
  3103. return 1;
  3104. }
  3105. /************************************************************************/
  3106. /*
  3107. 函数: DelFolderFromName
  3108. 描述: 通过文件名删除文件夹
  3109. 参数:
  3110. const CString& strName 文件夹名
  3111. 返回: 1成功, 0失败
  3112. */
  3113. /************************************************************************/
  3114. int ChoosePhotoSkin2::DelFolderFromName(const CString& strName)
  3115. {
  3116. if(strName == _T(""))
  3117. return 0;
  3118. vector<SFolderInfo*>::iterator iter = m_vFolder.begin();
  3119. for(;iter != m_vFolder.end();)
  3120. {
  3121. SFolderInfo* p = (*iter);
  3122. if(p != NULL && p->strName == strName)
  3123. {
  3124. delete p;
  3125. m_vFolder.erase(iter);
  3126. return 1;
  3127. }
  3128. ++iter;
  3129. }
  3130. return 0;
  3131. }
  3132. /************************************************************************/
  3133. /*
  3134. 函数: AddFolder
  3135. 描述: 添加文件夹
  3136. 参数:
  3137. const CString& strName 文件名
  3138. 返回:SFolderInfo* 返回新建文件夹指针
  3139. */
  3140. /************************************************************************/
  3141. SFolderInfo* ChoosePhotoSkin2::AddFolder(const CString& strName)
  3142. {
  3143. if(strName == _T(""))
  3144. return NULL;
  3145. SFolderInfo* pForlder = new SFolderInfo();
  3146. pForlder->strName = strName;
  3147. m_vFolder.push_back(pForlder);
  3148. return pForlder;
  3149. }
  3150. /************************************************************************/
  3151. /*
  3152. 函数: GetFolderData
  3153. 描述: 获取文件夹数据
  3154. 参数:
  3155. CArray<CStringArray, CStringArray>& arr 返回文件夹信息
  3156. 返回: 1成功,0失败
  3157. */
  3158. /************************************************************************/
  3159. int ChoosePhotoSkin2::GetFolderData(CArray<CStringArray, CStringArray>& folderarr)
  3160. {
  3161. CString filter = _T("LoadFolder@OrderID='") + m_strOrderNumber + _T("'");
  3162. g_sendhead.code[0] = 235;
  3163. g_sendhead.tabcount = 1;
  3164. g_sendhead.bsql = 0;
  3165. g_pMainWnd->ProcessChatMessageRequest2(filter);
  3166. if (g_bSendOK == 0)
  3167. return 0;
  3168. DataToArray(&folderarr);
  3169. return 1;
  3170. }
  3171. //
  3172. /************************************************************************/
  3173. /*
  3174. 函数: GetFolderDelPhotos
  3175. 描述: 获取文件夹里删除的相片名
  3176. 参数:
  3177. CString& strDel 返回文件夹里删除的相片如:(;文件夹1>文件1;文件夹1>文件2;文件夹2>文件1;)
  3178. 返回:
  3179. */
  3180. /************************************************************************/
  3181. void ChoosePhotoSkin2::GetFolderDelPhotos(CString& strDelPhotos)
  3182. {
  3183. vector<SFolderInfo*>::iterator iter = m_vFolder.begin();
  3184. while(iter != m_vFolder.end())
  3185. {
  3186. //读取所有文件夹里要删除的相片
  3187. SFolderInfo* p = (*iter);
  3188. if(p != NULL)
  3189. GetDelPhotos(p->strName, &p->DelPhotoPath, FALSE, strDelPhotos);
  3190. ++iter;
  3191. }
  3192. //添加头和尾字符;zz;
  3193. if (!strDelPhotos.IsEmpty())
  3194. {
  3195. strDelPhotos.TrimLeft(_T(";"));
  3196. strDelPhotos.TrimRight(_T(";"));
  3197. strDelPhotos = _T(";") + strDelPhotos;
  3198. strDelPhotos += _T(";");
  3199. }
  3200. }
  3201. /************************************************************************/
  3202. /*
  3203. 函数: GetDelPhotos
  3204. 描述: 获取删除的所有相片名
  3205. 参数:
  3206. const CString& strFolderName 文件夹名
  3207. CStringArray* pDelPhotoArr, 删除的相片全路径集合
  3208. const BOOL bAddEnd 是否添加结尾字符
  3209. CString& strDelPhotos 返回相片名集合
  3210. 返回:
  3211. */
  3212. /************************************************************************/
  3213. void ChoosePhotoSkin2::GetDelPhotos(const CString& strFolderName, CStringArray* pDelPhotoArr, const BOOL bAddEnd, CString& strDelPhotos)
  3214. {
  3215. for (int i = 0; i < pDelPhotoArr->GetSize(); i++)
  3216. {
  3217. if (strDelPhotos.GetLength() > 4096)
  3218. break;
  3219. CString no = pDelPhotoArr->ElementAt(i); //在选片时被删除的相片名的全路径集合;
  3220. no = no.Right(no.GetLength() - no.ReverseFind('\\') - 1);
  3221. no = no.Left(no.Find('.'));
  3222. strDelPhotos += strFolderName + _T(">");
  3223. strDelPhotos += no;
  3224. strDelPhotos += _T(";");
  3225. }
  3226. // strDelPhotos:解析为只有相片名,以分号为分隔符的字符串;
  3227. if (!strDelPhotos.IsEmpty() && bAddEnd)
  3228. {
  3229. strDelPhotos.TrimLeft(_T(";"));
  3230. strDelPhotos.TrimRight(_T(";"));
  3231. strDelPhotos = _T(";") + strDelPhotos;
  3232. strDelPhotos += _T(";");
  3233. }
  3234. }
  3235. /************************************************************************/
  3236. /*
  3237. 函数: GetDelPhotos
  3238. 描述: 获取删除的所有相片名
  3239. 参数:
  3240. CStringArray* pDelPhotoArr, 删除的相片全路径集合
  3241. CString& strDelPhotos 返回相片名集合
  3242. 返回:
  3243. */
  3244. /************************************************************************/
  3245. void ChoosePhotoSkin2::GetDelPhotos(CStringArray* pDelPhotoArr, CString& strDelPhotos)
  3246. {
  3247. for (int i = 0; i < pDelPhotoArr->GetSize(); i++)
  3248. {
  3249. if (strDelPhotos.GetLength() > 4096)
  3250. break;
  3251. CString no = pDelPhotoArr->ElementAt(i); //在选片时被删除的相片名的全路径集合;
  3252. no = no.Right(no.GetLength() - no.ReverseFind('\\') - 1);
  3253. no = no.Left(no.Find('.'));
  3254. strDelPhotos += no;
  3255. strDelPhotos += _T(";");
  3256. }
  3257. // strDelPhotos:解析为只有相片名,以分号为分隔符的字符串;
  3258. if (!strDelPhotos.IsEmpty())
  3259. {
  3260. strDelPhotos.TrimLeft(_T(";"));
  3261. strDelPhotos.TrimRight(_T(";"));
  3262. strDelPhotos = _T(";") + strDelPhotos;
  3263. strDelPhotos += _T(";");
  3264. }
  3265. }
  3266. /************************************************************************/
  3267. /*
  3268. 函数: LoadFolder
  3269. 描述: 加载文件夹
  3270. 参数:
  3271. 返回:
  3272. */
  3273. /************************************************************************/
  3274. void ChoosePhotoSkin2::LoadFolder()
  3275. {
  3276. CArray<CStringArray, CStringArray> folderarr;
  3277. GetFolderData(folderarr);
  3278. if(folderarr.GetSize() == 0)
  3279. return;
  3280. // 订单号;
  3281. CString strOrderID = folderarr.ElementAt(0).ElementAt(0);
  3282. // 文件夹名,以分号分隔;
  3283. CString strFolderNames = folderarr.ElementAt(0).ElementAt(1);
  3284. // 文件夹内的相片;
  3285. CString strPhotos = folderarr.ElementAt(0).ElementAt(2);
  3286. // 从文件夹内被删除的相片;
  3287. CString strDelPhotos = folderarr.ElementAt(0).ElementAt(3);
  3288. //清除文件夹;
  3289. ClearFolder();
  3290. //从文件夹名集里获取文件夹名并且创建文件夹;
  3291. GetFolderFromFolders(folderarr.ElementAt(0).ElementAt(1));
  3292. vector<SFolderInfo*>::iterator iter = m_vFolder.begin();
  3293. while(iter != m_vFolder.end())
  3294. {
  3295. SFolderInfo* p = (*iter);
  3296. if(p != NULL)
  3297. {
  3298. CStringArray arr;
  3299. //通过文件夹名读取所有文件;
  3300. GetNamesFromFoler(p->strName, folderarr.ElementAt(0).ElementAt(2), arr);
  3301. int i = 0;
  3302. for(i=0; i<arr.GetSize(); i++)
  3303. {
  3304. for(int j=0; j<m_AllPhotoPath.GetSize();)
  3305. {
  3306. CString strPhoto = m_AllPhotoPath.ElementAt(j);;
  3307. strPhoto = strPhoto.Right(strPhoto.GetLength() - strPhoto.ReverseFind('\\') - 1);
  3308. strPhoto = strPhoto.Left(strPhoto.Find('.'));
  3309. if(arr.ElementAt(i) == strPhoto)
  3310. {
  3311. p->AllPhotoPath.Add(m_AllPhotoPath.ElementAt(j));
  3312. m_AllPhotoPath.RemoveAt(j);
  3313. }
  3314. else
  3315. ++j;
  3316. }
  3317. }
  3318. arr.RemoveAll();
  3319. //通过文件夹名读取要删除的文件;
  3320. GetNamesFromFoler(p->strName, folderarr.ElementAt(0).ElementAt(3), arr);
  3321. for(i=0; i<arr.GetSize(); i++)
  3322. {
  3323. for(int j=0; j<m_AllPhotoPath.GetSize();)
  3324. {
  3325. CString strPhoto = m_AllPhotoPath.ElementAt(j);;
  3326. strPhoto = strPhoto.Right(strPhoto.GetLength() - strPhoto.ReverseFind('\\') - 1);
  3327. strPhoto = strPhoto.Left(strPhoto.Find('.'));
  3328. if(arr.ElementAt(i) == strPhoto)
  3329. {
  3330. p->DelPhotoPath.Add(m_AllPhotoPath.ElementAt(j));
  3331. m_AllPhotoPath.RemoveAt(j);
  3332. }
  3333. else
  3334. ++j;
  3335. }
  3336. }
  3337. }
  3338. ++iter;
  3339. }
  3340. }
  3341. /************************************************************************/
  3342. /*
  3343. 函数: GetNamesFromFolder
  3344. 描述: 从文件名集里获取文件夹名
  3345. 参数:
  3346. const CString& strFolders, 文件夹名集字符
  3347. 返回:
  3348. */
  3349. /************************************************************************/
  3350. void ChoosePhotoSkin2::GetFolderFromFolders(const CString& strFolders)
  3351. {
  3352. CString strNames = strFolders;
  3353. strNames.TrimLeft(_T(";"));
  3354. int nPos = 0;
  3355. while(1)
  3356. {
  3357. //添加文件夹
  3358. nPos = strNames.Find(_T(";"));
  3359. if(nPos == -1)
  3360. break;
  3361. CString strName = strNames.Left(nPos);
  3362. AddFolder(strName);
  3363. if(strNames.GetLength() <= (nPos + 1))
  3364. break;
  3365. strNames = strNames.Right(strNames.GetLength() - (nPos + 1));
  3366. }
  3367. }
  3368. /************************************************************************/
  3369. /*
  3370. 函数: GetNamesFromFoler
  3371. 描述: 通过文件夹名读取文件
  3372. 参数:
  3373. const CString& strFolder, 文件夹
  3374. const CString& strPhotos, 相片集字符 (;文件夹1>文件1;文件夹1>文件2;文件夹2>文件1;)
  3375. CStringArray& arr 返回相片集
  3376. 返回:
  3377. */
  3378. /************************************************************************/
  3379. void ChoosePhotoSkin2::GetNamesFromFoler(const CString& strFolder, const CString& strPhotos, CStringArray& arr)
  3380. {
  3381. CString strNames = strPhotos;
  3382. strNames.TrimLeft(_T(";"));
  3383. int nPos = 0;
  3384. while(1)
  3385. {
  3386. //文件夹1>文件1;
  3387. nPos = strNames.Find(_T(";"));
  3388. if(nPos == -1)
  3389. break;
  3390. CString strName = strNames.Left(nPos);
  3391. //文件夹1>文件
  3392. int n = strName.Find(_T(">"));
  3393. if(n == -1)
  3394. {
  3395. if(strNames.GetLength() <= (nPos + 1))
  3396. break;
  3397. strNames = strNames.Right(strNames.GetLength() - (nPos + 1));
  3398. continue;
  3399. }
  3400. CString strFolderName = strName.Left(n);
  3401. if(strFolder != strFolderName)
  3402. {
  3403. if(strNames.GetLength() <= (nPos + 1))
  3404. break;
  3405. strNames = strNames.Right(strNames.GetLength() - (nPos + 1));
  3406. continue;
  3407. }
  3408. CString strFile = strName.Right(strName.GetLength() - (n + 1));
  3409. arr.Add(strFile);
  3410. if(strNames.GetLength() <= (nPos + 1))
  3411. break;
  3412. strNames = strNames.Right(strNames.GetLength() - (nPos + 1));
  3413. }
  3414. }
  3415. /************************************************************************/
  3416. /*
  3417. 函数: GetAllFolderNames
  3418. 描述: 获取所有文件夹名
  3419. 参数:
  3420. CString& strNames 返回相片集字符 (;文件夹1>文件1;文件夹1>文件2;文件夹2>文件1;)
  3421. 返回:
  3422. */
  3423. /************************************************************************/
  3424. void ChoosePhotoSkin2::GetAllFolderNames(CString& strNames)
  3425. {
  3426. if(m_vFolder.size() == 0)
  3427. return;
  3428. vector<SFolderInfo*>::iterator iter = m_vFolder.begin();
  3429. while(iter != m_vFolder.end())
  3430. {
  3431. SFolderInfo* p = (*iter);
  3432. if(p != NULL)
  3433. {
  3434. strNames += p->strName;
  3435. strNames += _T(";");
  3436. }
  3437. ++iter;
  3438. }
  3439. if(!strNames.IsEmpty())
  3440. {
  3441. strNames.TrimLeft(_T(";"));
  3442. strNames.TrimRight(_T(";"));
  3443. strNames = _T(";") + strNames;
  3444. strNames += _T(";");
  3445. }
  3446. }
  3447. /************************************************************************/
  3448. /*
  3449. 函数: GetAllFileFromFolder
  3450. 描述: 通过文件夹获取所有文件
  3451. 参数:
  3452. const int nType, 需要获取的文件集类型
  3453. CString& strFileNames 返回相片集字符 (;文件夹1>文件1;文件夹1>文件2;文件夹2>文件1;)
  3454. 返回:
  3455. */
  3456. /************************************************************************/
  3457. void ChoosePhotoSkin2::GetAllFileFromFolder(const int nType, CString& strFileNames)
  3458. {
  3459. if(m_vFolder.size() == 0)
  3460. return;
  3461. vector<SFolderInfo*>::iterator iter = m_vFolder.begin();
  3462. while(iter != m_vFolder.end())
  3463. {
  3464. SFolderInfo* p = (*iter);
  3465. if(p != NULL)
  3466. {
  3467. CStringArray* parr = GetCurArray(nType, p);
  3468. if(parr == NULL)
  3469. continue;
  3470. CString strPhoto = _T("");
  3471. for(int i=0; i<parr->GetSize(); i++)
  3472. {
  3473. //文件夹1>文件1;
  3474. strPhoto = parr->ElementAt(i);
  3475. strPhoto = strPhoto.Right(strPhoto.GetLength() - strPhoto.ReverseFind('\\') - 1);
  3476. strPhoto = strPhoto.Left(strPhoto.Find('.'));
  3477. strFileNames += p->strName;
  3478. strFileNames += _T(">");
  3479. strFileNames += strPhoto;
  3480. strFileNames += _T(";");
  3481. }
  3482. }
  3483. ++iter;
  3484. }
  3485. if(!strFileNames.IsEmpty())
  3486. {
  3487. strFileNames.TrimLeft(_T(";"));
  3488. strFileNames.TrimRight(_T(";"));
  3489. strFileNames = _T(";") + strFileNames;
  3490. strFileNames += _T(";");
  3491. }
  3492. }
  3493. /************************************************************************/
  3494. /*
  3495. 函数: ClearFolder
  3496. 描述: 清除所有文件夹
  3497. 参数:
  3498. 返回:
  3499. */
  3500. /************************************************************************/
  3501. void ChoosePhotoSkin2::ClearFolder()
  3502. {
  3503. m_OpenFolder = NULL;
  3504. m_pCurrSelFolder = NULL;
  3505. std::vector<SFolderInfo*>::iterator iter = m_vFolder.begin();
  3506. for(;iter != m_vFolder.end();)
  3507. {
  3508. SFolderInfo* p = (*iter);
  3509. if(p != NULL)
  3510. delete p;
  3511. ++iter;
  3512. }
  3513. m_vFolder.clear();
  3514. }
  3515. #if USE_SHARE_FLORD
  3516. /************************************************************************/
  3517. /*
  3518. 函数:LoadDesignPhotos
  3519. 描述:加载选设计所需相片;
  3520. 参数:
  3521. 返回:
  3522. 调用约定:
  3523. 注意:需要兼容异地选设计逻辑过程;
  3524. 1.若开启异地选片,则读取本地数据库,加载共享目录信息;
  3525. 2.
  3526. */
  3527. /************************************************************************/
  3528. void ChoosePhotoSkin2::LoadDesignPhotos()
  3529. {
  3530. }
  3531. /************************************************************************/
  3532. /*
  3533. 函数:LoadSelectPhotos
  3534. 描述:加载选片所需相片;
  3535. 参数:
  3536. 返回:
  3537. 调用约定:
  3538. 注意:
  3539. 1.需要兼容异地选片逻辑过程;
  3540. 2.不支持分店选片或汇总选片;
  3541. 选片逻辑:
  3542. 1.若有缓存相片在本机,选择是否使用本机缓存,是则结束余下逻辑过程;
  3543. 2.若是儿童成长套系,弹出选择套系项;
  3544. 3.判断初修共享目录是否有订单相片存在,无则使用原片选片;
  3545. 4.若初修共享目录有相片,则弹出选择:使用初修片 | 使用原片 | 使用初修+原片 进行选片,并获取所需相片路径(若原片和初修同时存在,只选择初修片相片);
  3546. 5.获取dindan表的delphotos记录,从4中获取的相片路径中剔除delphotos的相片路径;
  3547. */
  3548. /************************************************************************/
  3549. void ChoosePhotoSkin2::LoadSelectPhotos()
  3550. {
  3551. // 1.是否有本机缓存;
  3552. if(IsThereACacheImg())
  3553. m_bFromLocal = 1;
  3554. else
  3555. {
  3556. // 2.1.先查找原始初修共享目录是否有相片;
  3557. GetTXName(&m_strOrderNumber, 1, m_bGrowthTX, m_seltxname);
  3558. //////////////////////////////////////////////////////////////////////////
  3559. // 2.2.查找原始初修共享目录是否有相片;
  3560. int nPhotoType = 0;
  3561. BOOL bExistsEarlyPhotos = FALSE;
  3562. TCHAR szShare[MAX_PATH] = {0};
  3563. TCHAR szOrdePath[MAX_PATH] = {0};
  3564. CStringArray strAryOfExistsEarlyDirectory; // 存在初修订单的文件夹路径;
  3565. CStringArray strAryOfExistsOriginalDirectory; // 存在原片订单的文件夹路径;
  3566. // 获取本地初修共享目录;
  3567. CString domainname = "";
  3568. int i = 0;
  3569. #ifdef ENTERPRISE_VERSION
  3570. for(i = 0; i < g_brancharray.GetSize(); i++)
  3571. {
  3572. if (g_branchname == g_brancharray.ElementAt(i).ElementAt(0))
  3573. {
  3574. domainname = g_brancharray.ElementAt(i).ElementAt(2);
  3575. break;
  3576. }
  3577. }
  3578. if (g_branchname != "")
  3579. sprintf(szShare, _T("\\\\%s\\%s\\%s"), g_serverbak, _T("修好的片(管理软件)$"), domainname);
  3580. else
  3581. sprintf(szShare, _T("\\\\%s\\%s"), g_serverbak, _T("修好的片(管理软件)$"));
  3582. #else
  3583. sprintf(szShare, _T("\\\\%s\\%s"), g_serverbak, _T("修好的片(管理软件)$"));
  3584. #endif //#ifdef ENTERPRISE_VERSION
  3585. // 若是成长套系,初修片有子目录; 若是婚纱版,初修没有景点子目录;
  3586. if ( m_bGrowthTX && ( !m_seltxname.IsEmpty() && m_seltxname != _T("全部")) )
  3587. sprintf(szOrdePath, _T("%s\\%s\\%s"), szShare, m_strOrderNumber, m_seltxname);
  3588. else
  3589. sprintf(szOrdePath, _T("%s\\%s"), szShare, m_strOrderNumber);
  3590. if ( PathFileExists(szOrdePath) )
  3591. {
  3592. // 存在初修片;
  3593. strAryOfExistsEarlyDirectory.Add(CString(szOrdePath));
  3594. }
  3595. // 2.3.查找其他共享目录下的初修订单目录;
  3596. int nSize = g_aryOfSharePathInfo.GetSize();
  3597. for (i = 0; i < nSize; i++)
  3598. {
  3599. if ( 2 == atoi(g_aryOfSharePathInfo.ElementAt(i).ElementAt(5)) )
  3600. {
  3601. if ( g_aryOfSharePathInfo.ElementAt(i).ElementAt(1).Compare(g_branchname.IsEmpty() ? g_domain : g_branchname ) != 0 )
  3602. {
  3603. continue;
  3604. }
  3605. // 逐一加载其他共享目录;
  3606. // 如果是成长套系且套系名不为空或全部;
  3607. #ifdef ENTERPRISE_VERSION
  3608. if (g_branchname != "")
  3609. sprintf(szShare, _T("%s\\%s"), g_aryOfSharePathInfo.ElementAt(i).ElementAt(2), domainname);
  3610. else
  3611. sprintf(szShare,_T("%s"),g_aryOfSharePathInfo.ElementAt(i).ElementAt(2));
  3612. #else
  3613. sprintf(szShare,_T("%s"),g_aryOfSharePathInfo.ElementAt(i).ElementAt(2));
  3614. #endif //#ifdef ENTERPRISE_VERSION
  3615. // 若是成长套系,初修片有子目录; 若是婚纱版,初修没了景点了目录;
  3616. if ( m_bGrowthTX && ( !m_seltxname.IsEmpty() && m_seltxname != _T("全部")) )
  3617. {
  3618. sprintf(szOrdePath, _T("%s\\%s\\%s"), szShare, m_strOrderNumber, m_seltxname);
  3619. }
  3620. else
  3621. {
  3622. sprintf(szOrdePath, _T("%s\\%s"), szShare, m_strOrderNumber);
  3623. }
  3624. if ( PathFileExists(szOrdePath) )
  3625. {
  3626. strAryOfExistsEarlyDirectory.Add(CString(szOrdePath));
  3627. }
  3628. }
  3629. }
  3630. // 查找所有初修订单目录的相片;
  3631. //CNetShareInfo::GetInstance()->LoadSpecifiedDirectories(strAryOfExistsEarlyDirectory,m_AllPhotoPath);
  3632. for ( i = 0; i < strAryOfExistsEarlyDirectory.GetSize(); i++ )
  3633. {
  3634. LoadSpecifiedDirectoryPhotos(strAryOfExistsEarlyDirectory.ElementAt(i), m_AllPhotoPath, TRUE, NULL, NULL);
  3635. }
  3636. // 如果初修片目录有相片,提供选片模式 选择:0=初修; 1=原片;2=原片+初修;
  3637. if ( m_AllPhotoPath.GetSize() )
  3638. {
  3639. bExistsEarlyPhotos = TRUE;
  3640. }
  3641. //////////////////////////////////////////////////////////////////////////
  3642. // 初修片存在,选择选片相片混合模式;
  3643. if (bExistsEarlyPhotos)
  3644. {
  3645. SelBrunDevice dlg;
  3646. dlg.m_mode = 1;
  3647. if ( dlg.DoModal() == IDOK ) // m_nChoosePhotoType=; =0:修片; =1:原片 =2:原片+修片
  3648. m_nChoosePhotoType = dlg.m_sel;
  3649. else
  3650. m_nChoosePhotoType = 0;
  3651. }
  3652. else
  3653. {
  3654. m_nChoosePhotoType = 1;
  3655. strAryOfExistsEarlyDirectory.RemoveAll();
  3656. AfxMessageBox(_T("温馨提示:\r\n未找到初修片,将使用原片选片"), MB_ICONINFORMATION);
  3657. }
  3658. //////////////////////////////////////////////////////////////////////////
  3659. // 使用到原片的选片模式;
  3660. if ( m_nChoosePhotoType != 0)
  3661. {
  3662. //////////////////////////////////////////////////////////////////////////
  3663. // 3.1.加载原始原片共享目录;
  3664. #ifdef ENTERPRISE_VERSION
  3665. if (g_branchname != "")
  3666. sprintf(szShare, _T("\\\\%s\\%s\\%s"), g_serverbak, _T("客户原片(管理软件)$"), domainname);
  3667. else
  3668. sprintf(szShare, _T("\\\\%s\\%s"), g_serverbak, _T("客户原片(管理软件)$"));
  3669. #else
  3670. sprintf(szShare, _T("\\\\%s\\%s"), g_serverbak, _T("客户原片(管理软件)$"));
  3671. #endif //#ifdef ENTERPRISE_VERSION
  3672. if ( m_bGrowthTX && ( !m_seltxname.IsEmpty() && m_seltxname != _T("全部")) )
  3673. {// 儿童成长套系;
  3674. sprintf(szOrdePath, _T("%s\\%s\\%s"), szShare, m_strOrderNumber, m_seltxname);
  3675. }
  3676. else
  3677. {
  3678. sprintf(szOrdePath, _T("%s\\%s"), szShare, m_strOrderNumber);
  3679. }
  3680. if ( PathFileExists(szOrdePath) )
  3681. {
  3682. // 存在原片;
  3683. strAryOfExistsOriginalDirectory.Add(CString(szOrdePath));
  3684. }
  3685. // 3.2.查找其他共享目录;
  3686. int nSize = g_aryOfSharePathInfo.GetSize();
  3687. for ( int i = 0; i < nSize; i++)
  3688. {
  3689. if ( 1 == atoi(g_aryOfSharePathInfo.ElementAt(i).ElementAt(5)) )
  3690. {
  3691. // 逐一加载其他共享目录;
  3692. if ( g_aryOfSharePathInfo.ElementAt(i).ElementAt(1).Compare(g_branchname.IsEmpty() ? g_domain : g_branchname ) != 0 )
  3693. {
  3694. continue;
  3695. }
  3696. #ifdef ENTERPRISE_VERSION
  3697. if (g_branchname != "")
  3698. sprintf(szShare,"%s\\%s",g_aryOfSharePathInfo.ElementAt(i).ElementAt(2), domainname);
  3699. else
  3700. sprintf(szShare,"%s",g_aryOfSharePathInfo.ElementAt(i).ElementAt(2));
  3701. #else
  3702. sprintf(szShare,"%s",g_aryOfSharePathInfo.ElementAt(i).ElementAt(2));
  3703. #endif //#ifdef ENTERPRISE_VERSION
  3704. if ( m_bGrowthTX && ( !m_seltxname.IsEmpty() && m_seltxname != _T("全部")) )
  3705. {// 儿童成长套系;
  3706. sprintf(szOrdePath, _T("%s\\%s\\%s"), szShare, m_strOrderNumber, m_seltxname);
  3707. }
  3708. else
  3709. {
  3710. sprintf(szOrdePath, _T("%s\\%s"), szShare, m_strOrderNumber);
  3711. }
  3712. if ( PathFileExists(szOrdePath) )
  3713. {
  3714. strAryOfExistsOriginalDirectory.Add(CString(szOrdePath));
  3715. }
  3716. }
  3717. }
  3718. }
  3719. // 完成对选片所需的共享目录筛选,然后筛选目录的相片路径;
  3720. LoadNecessaryImage(strAryOfExistsEarlyDirectory, strAryOfExistsOriginalDirectory, m_nChoosePhotoType);
  3721. }
  3722. // next.获取dindan表中的字段delphotos的相片编号,然后从m_AllPhotoPath中剔除delphotos的相片路径;
  3723. // 暂由旧代码代替执行;
  3724. }
  3725. /************************************************************************/
  3726. /* 函数:LoadNecessaryImage[4/17/2016 IT];
  3727. /* 描述:加载最终选片所需要的相片路径;
  3728. /* 参数:;
  3729. /* [IN] strAryOfEarlyImage:订单初修片共享目录;
  3730. /* [IN] strAryOfOriginalImage:订单原片共享目录;
  3731. /* [IN] nSelectType:选片要用的相片类型:0 == 只用初修; 1 == 只用原片; 2 == 初修 + 原片,其中初修为主,原片为辅;
  3732. /* 返回:void;
  3733. /* 注意:初修片文件夹里没有任务子目录,如套系,景点这些子目录;
  3734. /* 示例:;
  3735. /*
  3736. /* 修改:;
  3737. /* 日期:;
  3738. /* 内容:;
  3739. /************************************************************************/
  3740. void ChoosePhotoSkin2::LoadNecessaryImage(IN CStringArray &strAryOfEarlyImage, IN CStringArray &strAryOfOriginalImage, IN const int &nSelectType)
  3741. {
  3742. if ( m_bGrowthTX )
  3743. {
  3744. // 只有成长套系才有选择套系名;
  3745. if ( m_seltxname == _T("全部") )
  3746. m_seltxname.Empty();
  3747. }
  3748. else
  3749. {
  3750. // 非成长套系的,不会弹出对话框;
  3751. m_seltxname.Empty();
  3752. }
  3753. int nSize = 0;
  3754. CString strTemp;
  3755. if ( nSelectType == 0) // 初修片;
  3756. {
  3757. // 初修已载过,不需要重新添加;
  3758. //CNetShareInfo::GetInstance()->LoadSpecifiedDirectories(strAryOfEarlyImage,m_AllPhotoPath);
  3759. }
  3760. else if ( nSelectType == 1 ) // 原片;
  3761. {
  3762. m_AllPhotoPath.RemoveAll();
  3763. nSize = strAryOfOriginalImage.GetSize();
  3764. for ( int i = 0; i < nSize; i++)
  3765. {
  3766. LoadSpecifiedDirectoryPhotos(strAryOfOriginalImage.ElementAt(i), m_AllPhotoPath, FALSE, NULL);
  3767. }
  3768. }
  3769. else // 初修+原片;
  3770. {
  3771. nSize = strAryOfOriginalImage.GetSize();
  3772. for ( int i = 0; i < nSize; i++)
  3773. {
  3774. LoadSpecifiedDirectoryPhotos(strAryOfOriginalImage.ElementAt(i), m_AllPhotoPath, FALSE, NULL);
  3775. }
  3776. }
  3777. }
  3778. /************************************************************************/
  3779. /*
  3780. 函数:LoadSpecifiedDirectoryPhotos
  3781. 描述:加载指定路径的相片;
  3782. 参数:
  3783. IN: lpSpecifiedDirectory 相片路径;
  3784. OUT: strArray 存储相片路径的数组;
  3785. IN: bEffect
  3786. IN: pEarlyDirectory
  3787. IN: pEarlyImages
  3788. 返回:
  3789. 调用约定:由LoadNecessaryImage调用;
  3790. 注意:
  3791. */
  3792. /************************************************************************/
  3793. void ChoosePhotoSkin2::LoadSpecifiedDirectoryPhotos(
  3794. IN LPCTSTR lpSpecifiedDirectory,
  3795. OUT CStringArray &strArray,
  3796. IN BOOL bEffect,
  3797. IN CStringArray *pEarlyDirectory,
  3798. IN CStringArray *pEarlyImages)
  3799. {
  3800. if ( lpSpecifiedDirectory == NULL || strcmp(lpSpecifiedDirectory,_T("")) == 0 || !PathFileExists(lpSpecifiedDirectory) )
  3801. return;
  3802. using namespace helper_coffs;
  3803. ffsco o;
  3804. o.dirs(1);
  3805. o.find(lpSpecifiedDirectory, LPCSTR("*.*"));
  3806. ffsco::typeT cfs;
  3807. ffsco::typeT::iterator it;
  3808. cfs = o.co_file();
  3809. int nIndex = 0;
  3810. CString strName;
  3811. CString strTemp;
  3812. for ( it = cfs.begin(); cfs.end() != it; it++)
  3813. {
  3814. // 去除目录级文件;
  3815. // 去除ok文件;
  3816. // 去除modifytime文件;
  3817. // 去除s+m缩略图;
  3818. strName = it->c_str();
  3819. strName.MakeLower();
  3820. if ( strName.Find('.') == -1)
  3821. continue;
  3822. else
  3823. {
  3824. CString str = strName.Mid( strName.ReverseFind('\\') + 1 );
  3825. if ( str.Find('.') == -1)
  3826. continue;
  3827. }
  3828. if ( strName.GetAt( strName.ReverseFind('\\') + 1 ) == 's' )continue;
  3829. if ( strName.GetAt( strName.ReverseFind('\\') + 1 ) == 'm' )continue;
  3830. // 剔除nef,cr2,raw之类的原始相片格式;
  3831. //if ( strName.Find(_T(".jpg")) == -1 )continue;
  3832. if ( strName.Right(4).CompareNoCase(_T(".jpg")) != 0 )
  3833. {
  3834. if ( strName.Right(5).CompareNoCase(_T(".jpeg")) != 0 )
  3835. continue;
  3836. }
  3837. // 再判断是否为数字编号;
  3838. strTemp = strName.Mid( strName.ReverseFind('\\') + 1);
  3839. strTemp = strTemp.Left( strTemp.ReverseFind('.'));
  3840. if ( !g_bOriginal )
  3841. {// 系统数字命名;
  3842. if ( !myisdigit(strTemp) )
  3843. {
  3844. if ( bEffect )
  3845. {// 初修效果图;
  3846. if ( strTemp.Find('-') != -1)
  3847. {
  3848. strTemp = strTemp.Left( strTemp.Find('-') );
  3849. strTemp.TrimRight(_T(" ")); // 去除空格;
  3850. if ( myisdigit(strTemp) )
  3851. strArray.Add(strName);
  3852. }
  3853. }
  3854. continue;
  3855. }
  3856. }
  3857. // 判断strTemp是否在strArray中存在同名的相片;
  3858. BOOL bIsonym = FALSE;
  3859. CString strNumber;
  3860. for ( int n = 0; n < strArray.GetSize(); n++ )
  3861. {
  3862. strNumber = strArray.ElementAt(n);
  3863. strNumber = strNumber.Mid(strNumber.ReverseFind('\\') + 1);
  3864. strNumber = strNumber.Left(strNumber.ReverseFind('.'));
  3865. if ( strNumber.CompareNoCase(strTemp) == 0 )
  3866. {
  3867. bIsonym = TRUE;
  3868. break;
  3869. }
  3870. }
  3871. if ( !bIsonym )
  3872. nIndex = strArray.Add(strName);// 同时记录索引值,有初修使用初修替换;
  3873. }
  3874. }
  3875. #endif //#if USE_SHARE_FLORD