newclientDlg.cpp 137 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894
  1. // newclientDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "StoneU_HC_OCX.h"
  5. #include "newclientDlg.h"
  6. #include "MyOutput.h"
  7. #include "DBConnection.h"
  8. #include "EventLog.h"
  9. #include "VoiceExchange.h"
  10. #include "SetAlarm.h"
  11. #include "PlayBack.h"
  12. #include "SystemConfig.h"
  13. #include "DecodeCardSDK.h"
  14. #include "SYS\TIMEB.H"
  15. #include "GetCapture.h"
  16. #include "CruiseRoute.h"
  17. #include "Global.h"
  18. #include "mdlProject.h"
  19. #include ".\newclientdlg.h"
  20. #include "Shlwapi.h"
  21. #ifdef _DEBUG
  22. #define new DEBUG_NEW
  23. #undef THIS_FILE
  24. static char THIS_FILE[] = __FILE__;
  25. #endif
  26. #define LEFT_DISTANCE 0
  27. #define TOP_DISTANCE 0
  28. #define W_RATIO 1.0
  29. #define H_RATIO 1.0
  30. #pragma comment(lib,"Ws2_32.lib")
  31. #pragma comment(lib,"lib\\playm4.lib")
  32. #pragma comment(lib,"lib\\AudioCodecSDK.lib")
  33. #pragma comment(lib,"lib\\DsSdk.lib")
  34. #pragma comment(lib,"lib\\HCNetSDK.lib")
  35. #pragma comment(lib,"Winmm.lib")
  36. #define WM_MYCOMMAND WM_USER+1 //for sdk
  37. typedef struct _RECORDINFO
  38. {
  39. bool bHaveSignal; //真:有信号
  40. bool bCapture; //真:正在下载
  41. DWORD dwVideoStartTime; //开始下载时间
  42. DWORD dwNoMotionStartTime; //没移动开始时间
  43. char sDvsName[50]; //DVS
  44. int nDvrChannel; //DVS 通道号
  45. }RECORD_INFO;
  46. RECORD_INFO g_RecordInfo[64];
  47. int g_nRecordIndex=0; //Record 索引
  48. COLORREF g_Color1=RGB( 32,41,46 );//RGB( 59,61,63 );//
  49. COLORREF g_Color2=RGB( 162,154,33 );//59,61,63 );//RGB(0xD1,0xE1,0xF8);//RGB( 162,154,33 );//
  50. COLORREF g_Color3=RGB( 255,255,255 );
  51. BOOL __stdcall MessCallBack_EX(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen)
  52. {
  53. return TRUE;
  54. }
  55. ALARM_INFO alarminfo[MAXALARMIN];
  56. extern WORD m_iSubWndCreated;
  57. CGetCapture getpic;
  58. char cWorkDir[256];
  59. BOOL bLargeWnd = FALSE; //播放窗口是否在放大,如果是放大的窗口,则关闭该窗口时,恢复到原来多窗口画面;
  60. WORD numberpos = 0;
  61. HBRUSH hBrush;
  62. extern void F_AddEvent(CString csEvent);
  63. int MYVIEW_LEFT = 20;
  64. int MYVIEW_TOP = 20;
  65. HANDLE hVideoBeeper; //报警事件
  66. HANDLE hBeepThread; //报警线程
  67. extern int nUseCard;
  68. BOOL g_bShareSound = FALSE;
  69. int g_nNetDelay = 2;
  70. BOOL g_bPTZStart = FALSE;
  71. int g_nPTZUP = 0;
  72. int g_nPTZNum = 0;
  73. DWORD runTimes = 0;
  74. const int interval = 5000;
  75. DWORD g_dwTime1 = 0;
  76. DWORD g_dwTime2 = 0;
  77. DWORD g_dwThread = 0;
  78. UINT Beeper(LPVOID pParam)
  79. {
  80. while(true)
  81. {
  82. Beep(800,500);
  83. Beep(1000,500);
  84. Beep(800,500);
  85. Beep(1000,500);
  86. if(WaitForSingleObject(hVideoBeeper,1000) == WAIT_OBJECT_0)
  87. {
  88. ResetEvent(hVideoBeeper);
  89. hBeepThread = NULL;
  90. return FALSE;
  91. }
  92. }
  93. return TRUE;
  94. }
  95. //根据IP和通道号得到索引
  96. int g_FunGetRecordIndex( CString sDvrIP,int nChannel )
  97. {
  98. int nRet=-1;
  99. for( int i=0;i<g_nRecordIndex;i++ )
  100. {
  101. if( g_RecordInfo[i].sDvsName==sDvrIP && g_RecordInfo[i].nDvrChannel==nChannel )
  102. {
  103. nRet = i;
  104. break;
  105. }
  106. }
  107. return nRet;
  108. }
  109. //消息回调处理函数
  110. int CALLBACK MessageCallback(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen,WORD dwLinkDVRPort)
  111. {
  112. CString csTemp;
  113. int i = 0;
  114. BOOL bDisk = FALSE;
  115. csTemp.Format("dwLinkDVRPor[%d]", dwLinkDVRPort);
  116. TRACE(csTemp);
  117. csTemp.Format("%s", sDVRIP);
  118. bool bBreak=false;
  119. int nOCXIndex=0;
  120. for(i=0; i<MAXIPNUMBER; i++)
  121. {
  122. for( nOCXIndex=0;nOCXIndex<g_nOCXCount;nOCXIndex++ )
  123. {
  124. if(strcmp(g_pOCXCtrl[nOCXIndex]->m_pDlgMain->m_Serverinfo[i].m_csServerIP, csTemp) == 0)
  125. {
  126. bBreak=true;
  127. break;
  128. }
  129. }
  130. if( bBreak )
  131. break;
  132. }
  133. int nStartChan = g_pOCXCtrl[nOCXIndex]->m_pDlgMain->m_Serverinfo[i].m_lStartChannel;
  134. switch(lCommand)
  135. {
  136. case COMM_ALARM:
  137. NET_DVR_ALARMINFO m_alarminfo;
  138. memcpy(&m_alarminfo, pBuf, sizeof(NET_DVR_ALARMINFO));
  139. switch(m_alarminfo.dwAlarmType)
  140. {
  141. case 0:
  142. csTemp.Format("服务器%s发生信号量报警 报警输入%d ", sDVRIP, m_alarminfo.dwAlarmInputNumber+1);
  143. F_AddEvent(csTemp);
  144. TRACE(csTemp);
  145. for(i=0; i<MAX_CHANNUM; i++)
  146. {
  147. if (m_alarminfo.dwAlarmRelateChannel[i] == 1)
  148. {
  149. int nIndex = g_FunGetRecordIndex( sDVRIP,m_alarminfo.dwAlarmInputNumber );
  150. if( !g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal )
  151. {
  152. if(g_pOCXCtrl[nOCXIndex]->m_pDlgMain->F_MakeDir())
  153. {
  154. g_RecordInfo[nIndex].dwVideoStartTime = GetTickCount();
  155. g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount();
  156. g_pOCXCtrl[nOCXIndex]->m_pDlgMain->F_StartClientRecord(nIndex);
  157. }
  158. }
  159. else if( g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal )
  160. {
  161. g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount();
  162. }
  163. }
  164. //if (m_alarminfo.dwAlarmRelateChannel[i] == 1)
  165. //{
  166. // csTemp.Format("触发通道号%d ", i+nStartChan);
  167. // F_AddEvent(csTemp);
  168. // TRACE(csTemp);
  169. //}
  170. }
  171. break;
  172. case 1:
  173. for(i=0; i<MAX_DISKNUM; i++)
  174. {
  175. if(m_alarminfo.dwDiskNumber[i] == 1)
  176. {
  177. csTemp.Format("服务器%s发生硬盘满报警 硬盘号%d ", sDVRIP, i);
  178. F_AddEvent(csTemp);
  179. TRACE(csTemp);
  180. }
  181. }
  182. break;
  183. case 2:
  184. for(i=0; i<MAX_CHANNUM; i++)
  185. {
  186. if (m_alarminfo.dwChannel[i] == 1)
  187. {
  188. csTemp.Format("服务器%s发生信号丢失报警 通道号%d ", sDVRIP, i+nStartChan);
  189. F_AddEvent(csTemp);
  190. TRACE(csTemp);
  191. int nIndex = g_FunGetRecordIndex( sDVRIP,i );
  192. if( !g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal )
  193. {
  194. if(g_pOCXCtrl[nOCXIndex]->m_pDlgMain->F_MakeDir())
  195. {
  196. g_RecordInfo[nIndex].dwVideoStartTime = GetTickCount();
  197. g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount();
  198. g_pOCXCtrl[nOCXIndex]->m_pDlgMain->F_StartClientRecord(nIndex);
  199. }
  200. }
  201. else if( g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal )
  202. {
  203. g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount();
  204. }
  205. }
  206. }
  207. break;
  208. case 3:
  209. for(i=0; i<MAX_CHANNUM; i++)
  210. {
  211. if (m_alarminfo.dwChannel[i] == 1)
  212. {
  213. csTemp.Format("服务器%s发生移动侦测报警 通道号%d ", sDVRIP, i+nStartChan);
  214. F_AddEvent(csTemp);
  215. TRACE(csTemp);
  216. //if( (g_pOCXCtrl->m_pDlgMain->m_MyOutput[i].m_iPlayhandle >= 0) )
  217. {
  218. int nIndex = g_FunGetRecordIndex( sDVRIP,i );
  219. if( !g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal )
  220. {
  221. if(g_pOCXCtrl[nOCXIndex]->m_pDlgMain->F_MakeDir())
  222. {
  223. g_RecordInfo[nIndex].dwVideoStartTime = GetTickCount();
  224. g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount();
  225. g_pOCXCtrl[nOCXIndex]->m_pDlgMain->F_StartClientRecord(nIndex);
  226. }
  227. }
  228. else if( g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal )
  229. {
  230. g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount();
  231. }
  232. }
  233. }
  234. /*if (m_alarminfo.dwChannel[i] == 1)
  235. {
  236. csTemp.Format("服务器%s发生移动侦测报警 通道号%d ", sDVRIP, i+nStartChan);
  237. F_AddEvent(csTemp);
  238. TRACE(csTemp);
  239. if( !g_pOCXCtrl->m_pDlgMain->m_bCapture[i] )
  240. {
  241. if( (m_MyOutput[i].m_iPlayhandle >= 0) )
  242. {
  243. if(g_pOCXCtrl->m_pDlgMain->F_MakeDir())
  244. {
  245. g_pOCXCtrl->m_pDlgMain->F_StartClientRecord(i);
  246. g_pOCXCtrl->m_pDlgMain->m_dwNoMotionStartTime[i] = GetTickCount();
  247. }
  248. }
  249. }
  250. }*/
  251. }
  252. break;
  253. case 4:
  254. for(i=0; i<MAX_DISKNUM; i++)
  255. {
  256. if(m_alarminfo.dwDiskNumber[i] == 1)
  257. {
  258. csTemp.Format("服务器%s发生硬盘未格式化报警 硬盘号%d ", sDVRIP, i);
  259. F_AddEvent(csTemp);
  260. TRACE(csTemp);
  261. }
  262. }
  263. break;
  264. case 5:
  265. for(i=0; i<MAX_DISKNUM; i++)
  266. {
  267. if(m_alarminfo.dwDiskNumber[i] == 1)
  268. {
  269. bDisk = TRUE;
  270. csTemp.Format("服务器%s发生读写硬盘出错报警 硬盘号%d ", sDVRIP, i);
  271. F_AddEvent(csTemp);
  272. TRACE(csTemp);
  273. }
  274. }
  275. if (bDisk == FALSE)
  276. {
  277. csTemp.Format("服务器%s发生未接硬盘出错报警 ", sDVRIP);
  278. F_AddEvent(csTemp);
  279. TRACE(csTemp);
  280. }
  281. bDisk = FALSE;
  282. break;
  283. case 6:
  284. for(i=0; i<MAX_CHANNUM; i++)
  285. {
  286. if (m_alarminfo.dwChannel[i] == 1)
  287. {
  288. csTemp.Format("服务器%s发生遮挡报警 通道号%d ", sDVRIP, i+nStartChan);
  289. F_AddEvent(csTemp);
  290. TRACE(csTemp);
  291. int nIndex = g_FunGetRecordIndex( sDVRIP,i );
  292. if( !g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal )
  293. {
  294. if(g_pOCXCtrl[nOCXIndex]->m_pDlgMain->F_MakeDir())
  295. {
  296. g_RecordInfo[nIndex].dwVideoStartTime = GetTickCount();
  297. g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount();
  298. g_pOCXCtrl[nOCXIndex]->m_pDlgMain->F_StartClientRecord(nIndex);
  299. }
  300. }
  301. else if( g_RecordInfo[nIndex].bCapture && g_RecordInfo[nIndex].bHaveSignal )
  302. {
  303. g_RecordInfo[nIndex].dwNoMotionStartTime = GetTickCount();
  304. }
  305. }
  306. }
  307. break;
  308. case 7:
  309. for(i=0; i<MAX_CHANNUM; i++)
  310. {
  311. if (m_alarminfo.dwChannel[i] == 1)
  312. {
  313. csTemp.Format("服务器%s发生制式不匹配 通道号%d ", sDVRIP, i+nStartChan);
  314. F_AddEvent(csTemp);
  315. TRACE(csTemp);
  316. }
  317. }
  318. break;
  319. case 8:
  320. csTemp.Format("服务器%s发生非法访问 ", sDVRIP);
  321. F_AddEvent(csTemp);
  322. TRACE(csTemp);
  323. break;
  324. case 9:
  325. csTemp.Format("串口状态%d", m_alarminfo.dwAlarmInputNumber);
  326. F_AddEvent(csTemp);
  327. TRACE(csTemp);
  328. break;
  329. default:
  330. csTemp.Format("报警类型:未知 %d",m_alarminfo.dwAlarmType);
  331. F_AddEvent(csTemp);
  332. TRACE(csTemp);
  333. break;
  334. }
  335. if(!hBeepThread)
  336. {
  337. ResetEvent(hVideoBeeper);
  338. // hBeepThread = AfxBeginThread(Beeper,NULL);
  339. }
  340. csTemp.Format("%s", sDVRIP);
  341. for(i=0; i<16; i++)//只能对16台布防的设备显示灯
  342. {
  343. if(strcmp(g_pOCXCtrl[nOCXIndex]->m_pDlgMain->m_Serverinfo[i].m_csServerIP, csTemp) == 0)
  344. break;
  345. }
  346. if(i != MAX_CHANNUM)
  347. {
  348. if(g_pOCXCtrl[nOCXIndex]->m_pDlgMain->m_ClientParam.m_iAlarmHandle[i] >= 0)
  349. {
  350. }
  351. else
  352. {
  353. }
  354. }
  355. break;
  356. case COMM_TRADEINFO:
  357. NET_DVR_TRADEINFO m_TradeInfo;
  358. memcpy(&m_TradeInfo, pBuf, sizeof(NET_DVR_TRADEINFO));
  359. csTemp.Format("服务器%s收到卡号信息%s ", sDVRIP, m_TradeInfo.CardNumber);
  360. F_AddEvent(csTemp);
  361. TRACE(csTemp);
  362. break;
  363. default:
  364. break;
  365. }
  366. return 0;
  367. }
  368. /////////////////////////////////////////////////////////////////////////////
  369. // CNewclientDlg dialog
  370. CNewclientDlg::CNewclientDlg(CWnd* pParent /*=NULL*/)
  371. : CDialog(CNewclientDlg::IDD, pParent)
  372. {
  373. //{{AFX_DATA_INIT(CNewclientDlg)
  374. m_yzd = 0;
  375. //}}AFX_DATA_INIT
  376. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  377. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  378. memset( g_RecordInfo,0,sizeof(RECORD_INFO)*64 );
  379. m_nSurveillanceNumber = 0;
  380. m_nOCXIndex = 0;
  381. m_lVoiceIndex = -1;
  382. m_nActiveWndNumber = 0;
  383. m_dwPreviewTime = 0;
  384. }
  385. void CNewclientDlg::DoDataExchange(CDataExchange* pDX)
  386. {
  387. CDialog::DoDataExchange(pDX);
  388. //{{AFX_DATA_MAP(CNewclientDlg)
  389. DDX_Control(pDX, IDC_COMBONETDELAY, m_NetDelayCtrl);
  390. DDX_Control(pDX, IDC_ALARMLED9, m_AlarmLed9);
  391. DDX_Control(pDX, IDC_ALARMLED8, m_AlarmLed8);
  392. DDX_Control(pDX, IDC_ALARMLED7, m_AlarmLed7);
  393. DDX_Control(pDX, IDC_ALARMLED6, m_AlarmLed6);
  394. DDX_Control(pDX, IDC_ALARMLED5, m_AlarmLed5);
  395. DDX_Control(pDX, IDC_ALARMLED4, m_AlarmLed4);
  396. DDX_Control(pDX, IDC_ALARMLED3, m_AlarmLed3);
  397. DDX_Control(pDX, IDC_ALARMLED2, m_AlarmLed2);
  398. DDX_Control(pDX, IDC_ALARMLED16, m_AlarmLed16);
  399. DDX_Control(pDX, IDC_ALARMLED15, m_AlarmLed15);
  400. DDX_Control(pDX, IDC_ALARMLED14, m_AlarmLed14);
  401. DDX_Control(pDX, IDC_ALARMLED13, m_AlarmLed13);
  402. DDX_Control(pDX, IDC_ALARMLED12, m_AlarmLed12);
  403. DDX_Control(pDX, IDC_ALARMLED11, m_AlarmLed11);
  404. DDX_Control(pDX, IDC_ALARMLED10, m_AlarmLed10);
  405. DDX_Control(pDX, IDC_ALARMLED1, m_AlarmLed1);
  406. DDX_Control(pDX, IDC_LED9, m_CapLed9);
  407. DDX_Control(pDX, IDC_LED8, m_CapLed8);
  408. DDX_Control(pDX, IDC_LED7, m_CapLed7);
  409. DDX_Control(pDX, IDC_LED6, m_CapLed6);
  410. DDX_Control(pDX, IDC_LED5, m_CapLed5);
  411. DDX_Control(pDX, IDC_LED4, m_CapLed4);
  412. DDX_Control(pDX, IDC_LED3, m_CapLed3);
  413. DDX_Control(pDX, IDC_LED2, m_CapLed2);
  414. DDX_Control(pDX, IDC_LED16, m_CapLed16);
  415. DDX_Control(pDX, IDC_LED15, m_CapLed15);
  416. DDX_Control(pDX, IDC_LED14, m_CapLed14);
  417. DDX_Control(pDX, IDC_LED13, m_CapLed13);
  418. DDX_Control(pDX, IDC_LED12, m_CapLed12);
  419. DDX_Control(pDX, IDC_LED11, m_CapLed11);
  420. DDX_Control(pDX, IDC_LED10, m_CapLed10);
  421. DDX_Control(pDX, IDC_LED1, m_CapLed1);
  422. DDX_Control(pDX, IDC_COMBOWNDNUM, m_windownum);
  423. DDX_Control(pDX, IDC_SLIDERYL, m_yl);
  424. DDX_Control(pDX, IDC_SLIDERSD, m_sd);
  425. DDX_Control(pDX, IDC_SLIDERLD, m_ld);
  426. DDX_Control(pDX, IDC_SLIDERDBD, m_dbd);
  427. DDX_Control(pDX, IDC_SLIDERBHD, m_bhd);
  428. DDX_Text(pDX, IDC_YZD, m_yzd);
  429. //}}AFX_DATA_MAP
  430. DDX_Control(pDX, IDC_PLAY, m_btn_Preview);
  431. DDX_Control(pDX, IDC_GETPICTURE, m_btn_GetPic);
  432. DDX_Control(pDX, IDC_SYSTEMCFG, m_btn_SetConfig);
  433. DDX_Control(pDX, IDC_VIDEOFILEPLAY, m_btn_Playback);
  434. //DDX_Control(pDX, IDC_BUTTONUP, m_Btn_Up);
  435. //DDX_Control(pDX, IDC_BUTTONDOWN, m_Btn_Down);
  436. //DDX_Control(pDX, IDC_BUTTONLEFT, m_Btn_Left);
  437. //DDX_Control(pDX, IDC_BUTTONRIGHT, m_Btn_Right);
  438. //DDX_Control(pDX, IDC_BUTTONTJLEFT, m_Btn_TJLeft);
  439. //DDX_Control(pDX, IDC_BUTTONTJRIGHT, m_Btn_TJRight);
  440. //DDX_Control(pDX, IDC_BUTTONJJLEFT, m_Btn_JJLeft);
  441. //DDX_Control(pDX, IDC_BUTTONJJRIGHT, m_Btn_JJRight);
  442. //DDX_Control(pDX, IDC_BUTTONGQLEFT, m_Btn_GQLeft);
  443. //DDX_Control(pDX, IDC_BUTTONGQRIGHT, m_Btn_GQRight);
  444. DDX_Control(pDX, IDC_BUTTONYZW, m_Btn_XZW);
  445. }
  446. BEGIN_MESSAGE_MAP(CNewclientDlg, CDialog)
  447. //{{AFX_MSG_MAP(CNewclientDlg)
  448. ON_WM_SYSCOMMAND()
  449. ON_WM_PAINT()
  450. ON_WM_QUERYDRAGICON()
  451. ON_BN_CLICKED(IDC_EXIT, OnExit)
  452. ON_BN_CLICKED(IDC_AUDIOEXCHANGE, OnAudioexchange)
  453. ON_BN_CLICKED(IDC_SYSTEMCFG, OnSystemcfg)
  454. ON_BN_CLICKED(IDC_PLAY, OnVideonetplay)
  455. ON_BN_CLICKED(IDC_GETPICTURE, OnGetpicture)
  456. ON_BN_CLICKED(IDC_RECORD, OnRecord)
  457. ON_BN_CLICKED(IDC_EVENTLIST, OnEventlist)
  458. ON_BN_CLICKED(IDC_BUTTONALARMSET, OnButtonalarmset)
  459. ON_BN_CLICKED(IDC_VIDEOFILEPLAY, OnVideofileplay)
  460. ON_WM_TIMER()
  461. ON_WM_HSCROLL()
  462. ON_BN_CLICKED(IDC_BUTTONPOLL, OnButtonpoll)
  463. ON_BN_CLICKED(IDC_BUTTONYZW, OnButtonyzw)
  464. ON_CBN_SELCHANGE(IDC_COMBOWNDNUM, OnSelchangeCombowndnum)
  465. ON_CBN_SELCHANGE(IDC_COMBONETDELAY, OnSelchangeCombonetdelay)
  466. ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
  467. ON_WM_MOVE()
  468. ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
  469. ON_MESSAGE(WM_MYCOMMAND,OnMyCommand)
  470. ON_BN_CLICKED(IDC_CRUISE, OnCruise)
  471. //}}AFX_MSG_MAP
  472. ON_BN_CLICKED(IDC_BUTTONUP, OnBnClickedButtonup)
  473. ON_BN_CLICKED(IDC_BUTTONDOWN, OnBnClickedButtondown)
  474. ON_WM_CTLCOLOR()
  475. ON_WM_ERASEBKGND()
  476. ON_WM_LBUTTONUP()
  477. ON_BN_CLICKED(IDC_BUTTONTJLEFT, OnBnClickedButtontjleft)
  478. END_MESSAGE_MAP()
  479. /////////////////////////////////////////////////////////////////////////////
  480. //wParam: 消息类型 lParam: 发生异常的索引值。
  481. LRESULT CNewclientDlg::OnMyCommand(WPARAM wParam, LPARAM lParam)
  482. {
  483. char tempbuf[256];
  484. int i = 0;
  485. DWORD dwType = wParam; //异常类型
  486. LONG lIndex = lParam; //相对应得操作返回的句柄
  487. ZeroMemory(tempbuf,256);
  488. switch(dwType)
  489. {
  490. case EXCEPTION_AUDIOEXCHANGE: //语音对讲时网络异常
  491. sprintf(tempbuf,"语音对讲时网络异常!!!");
  492. TRACE("%s",tempbuf);
  493. if(m_lVoiceIndex != -1)
  494. {
  495. if(lIndex == m_lVoiceIndex)
  496. {
  497. if(NET_DVR_StopVoiceCom(m_lVoiceIndex))
  498. {
  499. GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("语音对讲");
  500. m_lVoiceIndex = -1;
  501. }
  502. else
  503. {
  504. MessageBox("停止语音对讲失败!", "温馨提示", MB_ICONINFORMATION);
  505. }
  506. }
  507. }
  508. break;
  509. case EXCEPTION_ALARM: //报警上传时网络异常
  510. sprintf(tempbuf,"报警上传时网络异常!!!");
  511. TRACE("%s",tempbuf);
  512. for(i = 0; i < MAXIPNUMBER; i++)
  513. {
  514. if(m_ClientParam.m_iAlarmHandle[i] >= 0)
  515. {
  516. if(lIndex == m_ClientParam.m_iAlarmHandle[i])
  517. {
  518. if(NET_DVR_CloseAlarmChan(m_ClientParam.m_iAlarmHandle[i]))
  519. {
  520. m_ClientParam.m_iAlarmHandle[i] = -1;
  521. }
  522. else
  523. {
  524. CString sTemp;
  525. sTemp.Format("%s报警撤防失败!",m_Serverinfo[i].m_csServerName);
  526. MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION);
  527. }
  528. //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_GREEN,CLed::LED_DISABLED,CLed::LED_ROUND);
  529. }
  530. }
  531. }
  532. break;
  533. case EXCEPTION_PREVIEW: //网络预览时异常
  534. sprintf(tempbuf,"网络预览时网络异常!!!");
  535. TRACE("%s",tempbuf);
  536. if(m_ClientParam.m_bPlaying)
  537. {
  538. for(i = 0; i < MAXVIEWNUM; i++)
  539. {
  540. if(lIndex == m_MyOutput[i].m_iPlayhandle)
  541. {
  542. if(m_MyOutput[i].m_bFileSave)
  543. {
  544. F_StopClientRecord(i);
  545. }
  546. m_MyOutput[i].StopNet();
  547. }
  548. }
  549. }
  550. break;
  551. case EXCEPTION_SERIAL: //透明通道传输时异常
  552. sprintf(tempbuf,"透明通道传输时网络异常!!!");
  553. TRACE("%s",tempbuf);
  554. //TODO: 关闭透明通道
  555. break;
  556. case EXCEPTION_RECONNECT: //预览的时候重连
  557. sprintf(tempbuf,"预览时网络重连!!!");
  558. TRACE("%s",tempbuf);
  559. break;
  560. default:
  561. break;
  562. }
  563. return 0L;
  564. }
  565. // CNewclientDlg message handlers
  566. BOOL CNewclientDlg::OnInitDialog()
  567. {
  568. CDialog::OnInitDialog();
  569. // Add "About..." menu item to system menu.
  570. // Set the icon for this dialog. The framework does this automatically
  571. // when the application's main window is not a dialog
  572. //SetIcon(m_hIcon, TRUE); // Set big icon
  573. //SetIcon(m_hIcon, FALSE); // Set small icon
  574. //GetSysData();
  575. DBConnectionThreadStart();
  576. CRect rc( 0,0,g_nFrameWeight,g_nFrameHeight );
  577. this->MoveWindow( rc );
  578. //调整控件位置
  579. SetPos();
  580. short shBtnColor = 30;
  581. m_btn_Preview.SetIcon(IDI_PREVIEW);
  582. //m_btn_Preview.SetTooltipText(_T("预览视频"));
  583. //m_btn_Preview.DrawTransparent(TRUE);
  584. m_btn_Preview.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color1);
  585. m_btn_Preview.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2);
  586. m_btn_Preview.SetColor(CButtonST::BTNST_COLOR_BK_OUT, g_Color1);
  587. m_btn_Preview.SetColor(CButtonST::BTNST_COLOR_FG_OUT, g_Color3);
  588. m_btn_Preview.SetColor(CButtonST::BTNST_COLOR_FG_IN, g_Color3);
  589. m_btn_GetPic.SetIcon(IDI_SAVEPIC);
  590. //m_btn_GetPic.SetTooltipText(_T("保存图片"));
  591. //m_btn_GetPic.DrawTransparent(TRUE);
  592. m_btn_GetPic.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color1);
  593. m_btn_GetPic.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2);
  594. m_btn_GetPic.SetColor(CButtonST::BTNST_COLOR_BK_OUT, g_Color1);
  595. m_btn_GetPic.SetColor(CButtonST::BTNST_COLOR_FG_OUT, g_Color3);
  596. m_btn_GetPic.SetColor(CButtonST::BTNST_COLOR_FG_IN, g_Color3);
  597. m_btn_SetConfig.SetIcon(IDI_SETCONFIG);
  598. //m_btn_SetConfig.SetTooltipText(_T("系统配置"));
  599. //m_btn_SetConfig.DrawTransparent(TRUE);
  600. m_btn_SetConfig.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color1);
  601. m_btn_SetConfig.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2);
  602. m_btn_SetConfig.SetColor(CButtonST::BTNST_COLOR_BK_OUT, g_Color1);
  603. m_btn_SetConfig.SetColor(CButtonST::BTNST_COLOR_FG_OUT, g_Color3);
  604. m_btn_SetConfig.SetColor(CButtonST::BTNST_COLOR_FG_IN, g_Color3);
  605. m_btn_Playback.SetIcon(IDI_PLAYBACK);//, (int)BTNST_AUTO_GRAY);
  606. //m_btn_Playback.SetTooltipText(_T("视频回放"));
  607. //m_btn_Playback.DrawTransparent(TRUE);
  608. m_btn_Playback.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color1);
  609. m_btn_Playback.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2);
  610. m_btn_Playback.SetColor(CButtonST::BTNST_COLOR_BK_OUT, g_Color1);
  611. m_btn_Playback.SetColor(CButtonST::BTNST_COLOR_FG_OUT, g_Color3);
  612. m_btn_Playback.SetColor(CButtonST::BTNST_COLOR_FG_IN, g_Color3);
  613. TRACE("\nCurrent SDK Version is 0x%08x\n", NET_DVR_GetSDKBuildVersion());
  614. // TODO: Add extra initialization here
  615. int i,j;
  616. CString sTemp;
  617. NET_DVR_DEVICEINFO DeviceInfo;
  618. LONG lUserID = 0;
  619. char csServerIP[16];
  620. char cUserName[100];
  621. char cPassword[100];
  622. BOOL bLogin = FALSE;
  623. char cTemp[100];
  624. DWORD dwReturned = 0;
  625. m_PTZTesttimer = 0;
  626. nUseCard =0;
  627. m_byException = 0;
  628. hBrush=::CreateSolidBrush(COLORREF(0xff0000));
  629. ZeroMemory(cWorkDir, 256);
  630. GetCurrentDirectory(256, cWorkDir);
  631. TRACE("cWordDir = %s", cWorkDir);
  632. CStoneU_HC_OCXApp* pApp = (CStoneU_HC_OCXApp*)AfxGetApp();
  633. m_iHardDriverNum = pApp->m_iDriverNum;
  634. for(i = 0; i < m_iHardDriverNum; i++)
  635. {
  636. m_cHardDriver[i] = pApp->m_cHardDriver[i];
  637. }
  638. m_ClientParam.m_bCheckServerTime = FALSE;
  639. m_ClientParam.m_iCheckServerTime = 0;
  640. for(i = 0; i < MAXIPNUMBER; i++)
  641. {
  642. m_Serverinfo[i].m_csServerName.Format(_T(""));
  643. m_Serverinfo[i].m_iServerChannelNumber = -1;
  644. m_Serverinfo[i].m_wServerPort = 8000;
  645. m_Serverinfo[i].m_lServerID = -1;
  646. m_Serverinfo[i].m_dwDevSoftVersion = 0;
  647. for(j = 0; j < MAXCHANNUM; j++)
  648. {
  649. m_Allipinfo[i][j].m_lServerID = -1;
  650. m_Allipinfo[i][j].m_iChannel = -1;
  651. m_Allipinfo[i][j].m_iServerNum = -1;
  652. m_Allipinfo[i][j].m_iChannelNum = -1;
  653. m_Allipinfo[i][j].m_wServerport = 8000;
  654. m_Allipinfo[i][j].m_bChoosed = FALSE;
  655. m_Allipinfo[i][j].m_iSequence = -1;
  656. }
  657. }
  658. for(i=0; i<10; i++)
  659. {
  660. cTemp[i] = i;
  661. }
  662. ReadSurveillanceConfig();
  663. for(i=0; i<MAXIPNUMBER; i++)
  664. {
  665. if(m_Serverinfo[i].m_iServerChannelNumber >= 0)
  666. {
  667. strcpy(csServerIP, m_Serverinfo[i].m_csServerIP);
  668. strncpy(cUserName, m_Serverinfo[i].m_csServerAdminName, MAX_NAMELEN);
  669. strncpy(cPassword, m_Serverinfo[i].m_csServerAdminPasswd, PASSWD_LEN);
  670. lUserID = NET_DVR_Login(csServerIP, m_Serverinfo[i].m_wServerPort, cUserName, cPassword, &DeviceInfo);
  671. if(lUserID < 0)
  672. {
  673. CString sTemp;
  674. int nErr = NET_DVR_GetLastError();
  675. if(nErr == NET_DVR_PASSWORD_ERROR)
  676. {
  677. sTemp.Format("%s 用户名密码错误! ", csServerIP);
  678. TRACE(sTemp);
  679. MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION);
  680. }
  681. //TODO: 其他错误值
  682. else
  683. {
  684. sTemp.Format("%s 由于网络原因或DVR忙, 注册失败! ", csServerIP);
  685. TRACE(sTemp);
  686. MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION);
  687. }
  688. }
  689. else
  690. {
  691. NET_DVR_DEVICECFG DeviceCfg;
  692. if (!NET_DVR_GetDVRConfig(lUserID, NET_DVR_GET_DEVICECFG, 0, &DeviceCfg, sizeof(DeviceCfg), &dwReturned))
  693. {
  694. sTemp.Format("%s 获取设备参数失败! ", csServerIP);
  695. TRACE(sTemp);
  696. MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION);
  697. }
  698. else
  699. {
  700. m_Serverinfo[i].m_dwDevSoftVersion = DeviceCfg.dwSoftwareVersion;
  701. }
  702. bLogin = TRUE;
  703. m_Serverinfo[i].m_lServerID = lUserID;
  704. m_Serverinfo[i].m_wServerType = DeviceInfo.byDVRType;
  705. m_Serverinfo[i].m_lStartChannel = DeviceInfo.byStartChan;
  706. m_Serverinfo[i].m_dwAlarmInNum = DeviceInfo.byAlarmInPortNum;
  707. m_Serverinfo[i].m_dwAlarmOutNum = DeviceInfo.byAlarmOutPortNum;
  708. m_Serverinfo[i].m_iServerChannelNumber = DeviceInfo.byChanNum;
  709. m_Serverinfo[i].m_dwDiskNum = DeviceInfo.byDiskNum;
  710. ZeroMemory(cTemp, 100);
  711. memcpy(cTemp, DeviceInfo.sSerialNumber, SERIALNO_LEN);
  712. m_Serverinfo[i].m_csSerialNumber.Format("%s", cTemp);
  713. for(j = 0; j < MAXCHANNUM; j++)
  714. {
  715. if(j < DeviceInfo.byChanNum)
  716. {
  717. m_Allipinfo[i][j].m_lServerID = lUserID;
  718. m_Allipinfo[i][j].m_csChanName.Format("通道%d",(j+DeviceInfo.byStartChan));
  719. m_Allipinfo[i][j].m_iChannel = j+DeviceInfo.byStartChan;
  720. if( (m_Allipinfo[i][j].m_bChoosed) && (m_Allipinfo[i][j].m_iSequence != -1) )
  721. {
  722. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_bChoosed = m_Allipinfo[i][j].m_bChoosed;
  723. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_csChanName = m_Allipinfo[i][j].m_csChanName;
  724. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_csIP = m_Allipinfo[i][j].m_csIP;
  725. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_csMultiIP = m_Allipinfo[i][j].m_csMultiIP;
  726. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_csPassword = m_Allipinfo[i][j].m_csPassword;
  727. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_csUser = m_Allipinfo[i][j].m_csUser;
  728. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_dwAddress = m_Allipinfo[i][j].m_dwAddress;
  729. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_dwAlarmlevel = m_Allipinfo[i][j].m_dwAlarmlevel;
  730. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_dwIPvalue = m_Allipinfo[i][j].m_dwIPvalue;
  731. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_dwMultiIPvalue = m_Allipinfo[i][j].m_dwMultiIPvalue;
  732. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_dwProtocol = m_Allipinfo[i][j].m_dwProtocol;
  733. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_iChannel = m_Allipinfo[i][j].m_iChannel;
  734. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_iSequence = m_Allipinfo[i][j].m_iSequence;
  735. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_lServerID = m_Allipinfo[i][j].m_lServerID;
  736. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_wJMQtype = m_Allipinfo[i][j].m_wJMQtype;
  737. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_wServerport = m_Allipinfo[i][j].m_wServerport;
  738. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_iServerNum = i;
  739. m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_iChannelNum = j;
  740. m_nSurveillanceNumber++;
  741. //TRACE("m_iSequence = %d csServerIP = %s m_lServerID = %d", m_Allipinfo[i][j].m_iSequence, m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_csIP, m_Selipinfo[m_Allipinfo[i][j].m_iSequence].m_lServerID);
  742. }
  743. }
  744. else
  745. {
  746. m_Allipinfo[i][j].m_lServerID = -1;
  747. m_Allipinfo[i][j].m_csChanName.Format("");
  748. m_Allipinfo[i][j].m_iChannel = -1;
  749. }
  750. }
  751. }
  752. }
  753. }
  754. m_ClientParam.m_bCyclePlay = FALSE;
  755. m_ClientParam.m_iCycleTime = 20;
  756. m_ClientParam.m_bUseCard = FALSE;
  757. m_ClientParam.m_bNTSC = FALSE;
  758. m_ClientParam.m_bAutoRecord = FALSE;
  759. m_ClientParam.m_bCycleRecord = FALSE;
  760. m_ClientParam.m_iRecordFileInterval = 60;
  761. m_ClientParam.m_iStartRecordDriver = 1;
  762. m_ClientParam.m_iEndRecordDriver = m_iHardDriverNum - 1;
  763. m_ClientParam.m_csDownLoadPath.Format(_T("D:\\isP-Other\\HK\\DownLoad"));
  764. m_ClientParam.m_csPictureSavePath.Format(_T("D:\\isP-Other\\HK\\Picture"));
  765. m_ClientParam.m_csLogSavePath.Format(_T("D:\\isP-Other\\HK\\EventLog"));
  766. sTemp.Format("%s\\", m_ClientParam.m_csDownLoadPath);
  767. MakeFolderExist( sTemp );//CreateDirectory(sTemp, NULL);
  768. sTemp.Format("%s\\", m_ClientParam.m_csPictureSavePath);
  769. MakeFolderExist( sTemp );//CreateDirectory(sTemp, NULL);
  770. sTemp.Format("%s\\", m_ClientParam.m_csLogSavePath);
  771. MakeFolderExist( sTemp );//CreateDirectory(sTemp, NULL);
  772. for(i = 0; i < 7; i++)
  773. {
  774. for(j = 0; j < 4; j++)
  775. {
  776. m_ClientParam.m_ClientRecordTime[i][j].m_iStartHour = 0;
  777. m_ClientParam.m_ClientRecordTime[i][j].m_iStartMinute = 0;
  778. m_ClientParam.m_ClientRecordTime[i][j].m_iStartTime = 0;
  779. m_ClientParam.m_ClientRecordTime[i][j].m_iStopHour = 0;
  780. m_ClientParam.m_ClientRecordTime[i][j].m_iStopMinute = 0;
  781. m_ClientParam.m_ClientRecordTime[i][j].m_iStopTime = 0;
  782. }
  783. }
  784. m_ClientParam.m_bAllDiskFull = FALSE;
  785. m_ClientParam.m_bPlaying = FALSE;
  786. m_ClientParam.m_bCycling = FALSE;
  787. m_ClientParam.m_bNextPage = FALSE;
  788. m_ClientParam.m_bFrontPage = FALSE;
  789. m_ClientParam.m_bEnlarged = FALSE;
  790. m_ClientParam.m_bFullScreen = FALSE;
  791. m_ClientParam.m_bMultiScreen = FALSE;
  792. for(i = 0; i < MAXIPNUMBER; i++)
  793. m_ClientParam.m_iAlarmHandle[i] = -1;
  794. for(i = 0; i < MAXVIEWNUM; i++)
  795. {
  796. m_ClientParam.m_VideoInfo[i].m_iBrightness = DEFAULTBRIGHTNESS;
  797. m_ClientParam.m_VideoInfo[i].m_iContrast = DEFAULTCONTRAST;
  798. m_ClientParam.m_VideoInfo[i].m_iSaturation = DEFAULTSATURATION;
  799. m_ClientParam.m_VideoInfo[i].m_iHue = DEFAULTHUE;
  800. }
  801. m_ClientParam.m_Volume = DEFAULTVOLUME;
  802. ReadClientConfig();
  803. m_cCurrentRecordDriver = m_cHardDriver[m_ClientParam.m_iStartRecordDriver];
  804. autorecordtimer = 0;
  805. autorecordtimer = SetTimer(AUTORECORD_TIMER, 2000, NULL);
  806. if(m_ClientParam.m_bCheckServerTime)
  807. {
  808. TRACE("启动硬盘录像机校时时钟,校时时间是每天的%06d", m_ClientParam.m_iCheckServerTime);
  809. checkservertimer = 0;
  810. checkservertimer = SetTimer(CHECKSERVER_TIMER, 1000, NULL);
  811. }
  812. for(i = 0; i < MAXALARMIN; i++)
  813. {
  814. alarminfo[i].m_csIP.Format(_T(""));
  815. alarminfo[i].m_csUsername.Format(_T(""));
  816. alarminfo[i].m_csPassword.Format(_T(""));
  817. alarminfo[i].m_lServerID = -1;
  818. alarminfo[i].m_iChannel = -1;
  819. alarminfo[i].m_iAlarmLevel = -1;
  820. alarminfo[i].m_iAlarmType = -1;
  821. alarminfo[i].m_iPortIndex = -1;
  822. alarminfo[i].m_wServerPort = 8000;
  823. }
  824. m_iAlarmNumber = 0;
  825. m_ld.SetRange(1,10,TRUE);
  826. m_sd.SetRange(1,10,TRUE);
  827. m_bhd.SetRange(1,10,TRUE);
  828. m_dbd.SetRange(1,10,TRUE);
  829. m_yl.SetRange(1,100,TRUE);
  830. m_ld.SetPos(DEFAULTBRIGHTNESS);
  831. m_sd.SetPos(DEFAULTHUE);
  832. m_bhd.SetPos(DEFAULTSATURATION);
  833. m_dbd.SetPos(DEFAULTCONTRAST);
  834. m_yl.SetPos(DEFAULTVOLUME);
  835. m_mybuttonup.SubclassDlgItemTest(IDC_BUTTONUP,this);
  836. m_mybuttondown.SubclassDlgItemTest(IDC_BUTTONDOWN,this);
  837. m_mybuttonleft.SubclassDlgItemTest(IDC_BUTTONLEFT,this);
  838. m_mybuttonright.SubclassDlgItemTest(IDC_BUTTONRIGHT,this);
  839. m_mybuttontjright.SubclassDlgItemTest(IDC_BUTTONTJRIGHT,this);
  840. m_mybuttontjleft.SubclassDlgItemTest(IDC_BUTTONTJLEFT,this);
  841. m_mybuttonjjleft.SubclassDlgItemTest(IDC_BUTTONJJLEFT,this);
  842. m_mybuttonjjright.SubclassDlgItemTest(IDC_BUTTONJJRIGHT,this);
  843. m_mybuttongqleft.SubclassDlgItemTest(IDC_BUTTONGQLEFT,this);
  844. m_mybuttongqright.SubclassDlgItemTest(IDC_BUTTONGQRIGHT,this);
  845. InitLed();
  846. m_iSubWndCreated = 0;
  847. for (i=0;i<MAXVIEWNUM;i++)
  848. {
  849. m_MyOutput[i].Create(IDD_MYOUTPUT,this);
  850. }
  851. m_windownum.SetCurSel(1);
  852. //初始化窗口个数
  853. if( m_nSurveillanceNumber<=1 )
  854. WINDOWNUM = 1;
  855. else if( m_nSurveillanceNumber>=2 && m_nSurveillanceNumber<=4 )
  856. WINDOWNUM = 4;
  857. else if( m_nSurveillanceNumber>=5 && m_nSurveillanceNumber<=9 )
  858. WINDOWNUM = 9;
  859. else if( m_nSurveillanceNumber>=10 && m_nSurveillanceNumber<=16 )
  860. WINDOWNUM = 16;
  861. else if( m_nSurveillanceNumber>=17 && m_nSurveillanceNumber<=33 )
  862. WINDOWNUM = 33;
  863. else if( m_nSurveillanceNumber>=34 && m_nSurveillanceNumber<=64 )
  864. WINDOWNUM = 64;
  865. channelcount = 0;
  866. if(m_ClientParam.m_bUseCard)
  867. {
  868. F_InitDecodeCard();
  869. }
  870. m_Mycurwin.Create(IDD_CURWIN,this);
  871. ArrayWindow(0,WINDOWNUM);
  872. MoveCurWin(WINDOWNUM,0);
  873. hVideoBeeper=NULL; //报警事件
  874. hBeepThread=NULL; //报警线程
  875. hVideoBeeper = ::CreateEvent(NULL, // no security attributes
  876. TRUE, // auto-reset event
  877. FALSE, // initial state is signaled
  878. NULL // object name
  879. );
  880. ResetEvent(hVideoBeeper);
  881. freespacetimer = 0;
  882. freespacetimer = SetTimer(FREESPACE_TIMER, 5000, NULL);
  883. fileintervaltimer = 0;
  884. fileintervaltimer = SetTimer(FILEINTERVAL_TIMER, 2000, NULL);
  885. //SDK中收到DVR发过来的信息需要上传的通过回调函数实现,比如报警信息,日志信息等。
  886. bool f = NET_DVR_SetDVRMessCallBack_NEW(MessageCallback);
  887. //SDK中检测到异常通过消息的方式上传,比如网络断开
  888. NET_DVR_SetDVRMessage(WM_MYCOMMAND, this->m_hWnd);
  889. // 设置连接的超时设置
  890. NET_DVR_SetConnectTime(5000,1);
  891. //7200端口是监听端口
  892. if(!NET_DVR_StartListen(NULL,7200))
  893. {
  894. CString sTemp;
  895. sTemp.Format("ERROR: NET_DVR_StartListen = %d \n", NET_DVR_GetLastError());
  896. //MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION);
  897. }
  898. cycletimer = 0;
  899. m_NetDelayCtrl.SetCurSel(g_nNetDelay);
  900. //预览,布防
  901. OnVideonetplay();
  902. SetTimer(55, 2000, NULL);
  903. CRect rc1,rc2;
  904. GetDlgItem(IDC_STATIC4)->GetWindowRect(rc1);
  905. GetDlgItem(IDC_VEDIO_SHOW)->GetWindowRect(rc2);
  906. //this->MoveWindow( CRect( 0,0,rc1.right,rc2.bottom ) );
  907. return TRUE; // return TRUE unless you set the focus to a control
  908. }
  909. void CNewclientDlg::SetPos()
  910. {
  911. CRect rMain;
  912. this->GetWindowRect( rMain );
  913. ScreenToClient( &rMain );
  914. int W=0,H=0;
  915. CRect rcSta2;
  916. GetDlgItem(IDC_STATIC2)->GetWindowRect( rcSta2 );
  917. W = rcSta2.Width();
  918. H = rcSta2.Height();
  919. rcSta2.right = rMain.right-10;
  920. rcSta2.left = rcSta2.right-W ;
  921. rcSta2.top = rMain.top+10;
  922. rcSta2.bottom = rcSta2.top+H;
  923. GetDlgItem(IDC_STATIC2)->MoveWindow( rcSta2 );
  924. CRect rcGrid1;
  925. GetDlgItem(IDC_STA_GRID1)->GetWindowRect( rcGrid1 );
  926. W = rcGrid1.Width();
  927. H = rcGrid1.Height();
  928. rcGrid1.left = rcSta2.left+7 ;
  929. rcGrid1.right = rcGrid1.left+W;
  930. rcGrid1.top = rcSta2.top+13;
  931. rcGrid1.bottom = rcGrid1.top+H;
  932. GetDlgItem(IDC_STA_GRID1)->MoveWindow( rcGrid1 );
  933. CRect rcGrid2;
  934. rcGrid2.left = rcGrid1.right+2 ;
  935. rcGrid2.right = rcGrid2.left+W;
  936. rcGrid2.top = rcGrid1.top;
  937. rcGrid2.bottom = rcGrid1.bottom;
  938. GetDlgItem(IDC_STA_GRID2)->MoveWindow( rcGrid2 );
  939. CRect rcGrid3;
  940. rcGrid3.left = rcGrid2.right+2 ;
  941. rcGrid3.right = rcGrid3.left+W;
  942. rcGrid3.top = rcGrid2.top;
  943. rcGrid3.bottom = rcGrid2.bottom;
  944. GetDlgItem(IDC_STA_GRID3)->MoveWindow( rcGrid3 );
  945. CRect rcGrid4;
  946. rcGrid4.left = rcSta2.left+7 ;
  947. rcGrid4.right = rcGrid4.left+W;
  948. rcGrid4.top = rcGrid1.bottom+2;
  949. rcGrid4.bottom = rcGrid4.top+H;
  950. GetDlgItem(IDC_STA_GRID4)->MoveWindow( rcGrid4 );
  951. CRect rcGrid5;
  952. rcGrid5.left = rcGrid4.right+2 ;
  953. rcGrid5.right = rcGrid5.left+W;
  954. rcGrid5.top = rcGrid4.top;
  955. rcGrid5.bottom = rcGrid4.bottom;
  956. GetDlgItem(IDC_STA_GRID5)->MoveWindow( rcGrid5 );
  957. CRect rcGrid6;
  958. rcGrid6.left = rcGrid5.right+2 ;
  959. rcGrid6.right = rcGrid6.left+W;
  960. rcGrid6.top = rcGrid4.top;
  961. rcGrid6.bottom = rcGrid4.bottom;
  962. GetDlgItem(IDC_STA_GRID6)->MoveWindow( rcGrid6 );
  963. ////////////////////
  964. CRect rcSta17;
  965. GetDlgItem(IDC_STATIC17)->GetWindowRect( rcSta17 );
  966. W = rcSta17.Width();
  967. H = rcSta17.Height();
  968. rcSta17.right = rcSta2.right;
  969. rcSta17.left = rcSta2.left ;
  970. rcSta17.top = rcSta2.bottom+20;
  971. rcSta17.bottom = rcSta17.top+H;
  972. GetDlgItem(IDC_STATIC17)->MoveWindow( rcSta17 );
  973. CRect rcBtnPlay;
  974. GetDlgItem(IDC_PLAY)->GetWindowRect( rcBtnPlay );
  975. W = rcBtnPlay.Width();
  976. H = rcBtnPlay.Height();
  977. rcBtnPlay.left = rcSta17.left+3 ;
  978. rcBtnPlay.right = rcSta17.right-3;
  979. rcBtnPlay.top = rcSta17.top+10;
  980. rcBtnPlay.bottom = rcBtnPlay.top+H;
  981. GetDlgItem(IDC_PLAY)->MoveWindow( rcBtnPlay );
  982. CRect rcBtnGetPic;
  983. rcBtnGetPic.left = rcSta17.left+3 ;
  984. rcBtnGetPic.right = rcSta17.right-3;
  985. rcBtnGetPic.top = rcBtnPlay.bottom+2;
  986. rcBtnGetPic.bottom = rcBtnGetPic.top+H;
  987. GetDlgItem(IDC_GETPICTURE)->MoveWindow( rcBtnGetPic );
  988. CRect rcBtnSet;
  989. rcBtnSet.left = rcSta17.left+3 ;
  990. rcBtnSet.right = rcSta17.right-3;
  991. rcBtnSet.top = rcBtnGetPic.bottom+2;
  992. rcBtnSet.bottom = rcBtnSet.top+H;
  993. GetDlgItem(IDC_SYSTEMCFG)->MoveWindow( rcBtnSet );
  994. CRect rcBtnPlayBack;
  995. rcBtnPlayBack.left = rcSta17.left+3 ;
  996. rcBtnPlayBack.right = rcSta17.right-3;
  997. rcBtnPlayBack.top = rcBtnSet.bottom+2;
  998. rcBtnPlayBack.bottom = rcBtnPlayBack.top+H;
  999. GetDlgItem(IDC_VIDEOFILEPLAY)->MoveWindow( rcBtnPlayBack );
  1000. ////////////////
  1001. CRect rcSta4;
  1002. GetDlgItem(IDC_STATIC4)->GetWindowRect( rcSta4 );
  1003. W = rcSta4.Width();
  1004. H = rcSta4.Height();
  1005. rcSta4.right = rcSta2.right;
  1006. rcSta4.left = rcSta2.left ;
  1007. rcSta4.top = rcSta17.bottom+20;
  1008. rcSta4.bottom = rcSta4.top+H;
  1009. GetDlgItem(IDC_STATIC4)->MoveWindow( rcSta4 );
  1010. CRect rcBtnUp;
  1011. GetDlgItem(IDC_BUTTONUP)->GetWindowRect( rcBtnUp );
  1012. W = rcBtnUp.Width();
  1013. H = rcBtnUp.Height();
  1014. rcBtnUp.left = rcSta4.left+rcSta4.Width()/2-W/2 ;
  1015. rcBtnUp.right = rcBtnUp.left+W;
  1016. rcBtnUp.top = rcSta4.top+15;
  1017. rcBtnUp.bottom = rcBtnUp.top+H;
  1018. GetDlgItem(IDC_BUTTONUP)->MoveWindow( rcBtnUp );
  1019. CRect rcSta5;
  1020. GetDlgItem(IDC_STATIC5)->GetWindowRect( rcSta5 );
  1021. W = rcSta5.Width();
  1022. H = rcSta5.Height();
  1023. rcSta5.left = rcSta4.left+rcSta4.Width()/2-W/2 ;
  1024. rcSta5.right = rcBtnUp.left+W;
  1025. rcSta5.top = rcBtnUp.bottom+5;
  1026. rcSta5.bottom = rcSta5.top+H;
  1027. GetDlgItem(IDC_STATIC5)->MoveWindow( rcSta5 );
  1028. CRect rcBtnDown;
  1029. GetDlgItem(IDC_BUTTONDOWN)->GetWindowRect( rcBtnDown );
  1030. W = rcBtnDown.Width();
  1031. H = rcBtnDown.Height();
  1032. rcBtnDown.left = rcSta4.left+rcSta4.Width()/2-W/2 ;
  1033. rcBtnDown.right = rcBtnDown.left+W;
  1034. rcBtnDown.top = rcSta5.bottom+5;
  1035. rcBtnDown.bottom = rcBtnDown.top+H;
  1036. GetDlgItem(IDC_BUTTONDOWN)->MoveWindow( rcBtnDown );
  1037. CRect rcBtnLeft;
  1038. GetDlgItem(IDC_BUTTONLEFT)->GetWindowRect( rcBtnLeft );
  1039. W = rcBtnLeft.Width();
  1040. H = rcBtnLeft.Height();
  1041. rcBtnLeft.right = rcSta5.left-10;
  1042. rcBtnLeft.left = rcBtnLeft.right-W;
  1043. rcBtnLeft.top = rcSta5.top+0;
  1044. rcBtnLeft.bottom = rcBtnLeft.top+H;
  1045. GetDlgItem(IDC_BUTTONLEFT)->MoveWindow( rcBtnLeft );
  1046. CRect rcBtnRight;
  1047. GetDlgItem(IDC_BUTTONRIGHT)->GetWindowRect( rcBtnRight );
  1048. W = rcBtnRight.Width();
  1049. H = rcBtnRight.Height();
  1050. rcBtnRight.left = rcSta5.right+10;
  1051. rcBtnRight.right = rcBtnRight.left+W;
  1052. rcBtnRight.top = rcSta5.top+0;
  1053. rcBtnRight.bottom = rcBtnLeft.top+H;
  1054. GetDlgItem(IDC_BUTTONRIGHT)->MoveWindow( rcBtnRight );
  1055. CRect rcSta6;
  1056. GetDlgItem(IDC_STATIC6)->GetWindowRect( rcSta6 );
  1057. W = rcSta6.Width();
  1058. H = rcSta6.Height();
  1059. rcSta6.left = rcSta4.left+rcSta4.Width()/2-W/2 ;
  1060. rcSta6.right = rcSta6.left+W;
  1061. rcSta6.top = rcBtnDown.bottom+20;
  1062. rcSta6.bottom = rcSta6.top+H;
  1063. GetDlgItem(IDC_STATIC6)->MoveWindow( rcSta6 );
  1064. CRect rcBtnJLLeft;
  1065. GetDlgItem(IDC_BUTTONTJLEFT)->GetWindowRect( rcBtnJLLeft );
  1066. W = rcBtnJLLeft.Width();
  1067. H = rcBtnJLLeft.Height();
  1068. rcBtnJLLeft.right = rcSta6.left-10;
  1069. rcBtnJLLeft.left = rcBtnJLLeft.right-W;
  1070. rcBtnJLLeft.top = rcSta6.top;
  1071. rcBtnJLLeft.bottom = rcBtnJLLeft.top+H;
  1072. GetDlgItem(IDC_BUTTONTJLEFT)->MoveWindow( rcBtnJLLeft );
  1073. CRect rcBtnJLRight;
  1074. GetDlgItem(IDC_BUTTONTJRIGHT)->GetWindowRect( rcBtnJLRight );
  1075. W = rcBtnJLRight.Width();
  1076. H = rcBtnJLRight.Height();
  1077. rcBtnJLRight.left = rcSta6.right+10;
  1078. rcBtnJLRight.right = rcBtnJLRight.left+W;
  1079. rcBtnJLRight.top = rcSta6.top;
  1080. rcBtnJLRight.bottom = rcBtnJLRight.top+H;
  1081. GetDlgItem(IDC_BUTTONTJRIGHT)->MoveWindow( rcBtnJLRight );
  1082. CRect rcSta7;
  1083. GetDlgItem(IDC_STATIC7)->GetWindowRect( rcSta7 );
  1084. W = rcSta7.Width();
  1085. H = rcSta7.Height();
  1086. rcSta7.left = rcSta4.left+rcSta4.Width()/2-W/2 ;
  1087. rcSta7.right = rcSta7.left+W;
  1088. rcSta7.top = rcSta6.bottom+10;
  1089. rcSta7.bottom = rcSta7.top+H;
  1090. GetDlgItem(IDC_STATIC7)->MoveWindow( rcSta7 );
  1091. CRect rcBtnOJJLeft;
  1092. GetDlgItem(IDC_BUTTONJJLEFT)->GetWindowRect( rcBtnOJJLeft );
  1093. W = rcBtnOJJLeft.Width();
  1094. H = rcBtnOJJLeft.Height();
  1095. rcBtnOJJLeft.right = rcSta7.left-10;
  1096. rcBtnOJJLeft.left = rcBtnOJJLeft.right-W;
  1097. rcBtnOJJLeft.top = rcSta7.top;
  1098. rcBtnOJJLeft.bottom = rcBtnOJJLeft.top+H;
  1099. GetDlgItem(IDC_BUTTONJJLEFT)->MoveWindow( rcBtnOJJLeft );
  1100. CRect rcBtnJJRight;
  1101. GetDlgItem(IDC_BUTTONJJRIGHT)->GetWindowRect( rcBtnJJRight );
  1102. W = rcBtnJJRight.Width();
  1103. H = rcBtnJJRight.Height();
  1104. rcBtnJJRight.left = rcSta7.right+10;
  1105. rcBtnJJRight.right = rcBtnJJRight.left+W;
  1106. rcBtnJJRight.top = rcSta7.top;
  1107. rcBtnJJRight.bottom = rcBtnJJRight.top+H;
  1108. GetDlgItem(IDC_BUTTONJJRIGHT)->MoveWindow( rcBtnJJRight );
  1109. CRect rcSta8;
  1110. GetDlgItem(IDC_STATIC8)->GetWindowRect( rcSta8 );
  1111. W = rcSta8.Width();
  1112. H = rcSta8.Height();
  1113. rcSta8.left = rcSta4.left+rcSta4.Width()/2-W/2 ;
  1114. rcSta8.right = rcSta8.left+W;
  1115. rcSta8.top = rcSta7.bottom+10;
  1116. rcSta8.bottom = rcSta8.top+H;
  1117. GetDlgItem(IDC_STATIC8)->MoveWindow( rcSta8 );
  1118. CRect rcBtnOGQLeft;
  1119. GetDlgItem(IDC_BUTTONGQLEFT)->GetWindowRect( rcBtnOGQLeft );
  1120. W = rcBtnOGQLeft.Width();
  1121. H = rcBtnOGQLeft.Height();
  1122. rcBtnOGQLeft.right = rcSta8.left-10;
  1123. rcBtnOGQLeft.left = rcBtnOGQLeft.right-W;
  1124. rcBtnOGQLeft.top = rcSta8.top;
  1125. rcBtnOGQLeft.bottom = rcBtnOGQLeft.top+H;
  1126. GetDlgItem(IDC_BUTTONGQLEFT)->MoveWindow( rcBtnOGQLeft );
  1127. CRect rcBtnGQRight;
  1128. GetDlgItem(IDC_BUTTONGQRIGHT)->GetWindowRect( rcBtnGQRight );
  1129. W = rcBtnGQRight.Width();
  1130. H = rcBtnGQRight.Height();
  1131. rcBtnGQRight.left = rcSta8.right+10;
  1132. rcBtnGQRight.right = rcBtnGQRight.left+W;
  1133. rcBtnGQRight.top = rcSta8.top;
  1134. rcBtnGQRight.bottom = rcBtnGQRight.top+H;
  1135. GetDlgItem(IDC_BUTTONGQRIGHT)->MoveWindow( rcBtnGQRight );
  1136. CRect rcEditYZD;
  1137. GetDlgItem(IDC_YZD)->GetWindowRect( rcEditYZD );
  1138. W = rcEditYZD.Width();
  1139. H = rcEditYZD.Height();
  1140. rcEditYZD.left = rcSta4.left+rcSta4.Width()/2-W/2 ;
  1141. rcEditYZD.right = rcEditYZD.left+W;
  1142. rcEditYZD.top = rcBtnGQRight.bottom+20;
  1143. rcEditYZD.bottom = rcEditYZD.top+H;
  1144. GetDlgItem(IDC_YZD)->MoveWindow( rcEditYZD );
  1145. CRect rcBtnYZW;
  1146. GetDlgItem(IDC_BUTTONYZW)->GetWindowRect( rcBtnYZW );
  1147. W = rcBtnYZW.Width();
  1148. H = rcBtnYZW.Height();
  1149. rcBtnYZW.left = rcSta4.left+rcSta4.Width()/2-W/2 ;
  1150. rcBtnYZW.right = rcBtnYZW.left+W;
  1151. rcBtnYZW.top = rcEditYZD.bottom+3;
  1152. rcBtnYZW.bottom = rcBtnYZW.top+H;
  1153. GetDlgItem(IDC_BUTTONYZW)->MoveWindow( rcBtnYZW );
  1154. CRect rcStaShow;
  1155. rcStaShow.left = 10;
  1156. rcStaShow.right = rcSta2.left-5;;
  1157. rcStaShow.top = 0;
  1158. rcStaShow.bottom = rMain.bottom-0;
  1159. GetDlgItem(IDC_VEDIO_SHOW)->MoveWindow( rcStaShow );
  1160. }
  1161. void CNewclientDlg::SetAlarm()
  1162. {
  1163. int imageindex,selectindex;
  1164. int ipnum;
  1165. CString sTemp;
  1166. int nIndex=0;
  1167. for(int i = 0; i < MAXIPNUMBER; i++)
  1168. {
  1169. if(m_Serverinfo[i].m_iServerChannelNumber >= 0)
  1170. {
  1171. //是否有信号
  1172. NET_DVR_WORKSTATE WorkState;
  1173. if(!NET_DVR_GetDVRWorkState(m_Serverinfo[i].m_lServerID, &WorkState))
  1174. {
  1175. //CString sTemp;
  1176. //sTemp.Format("ERROR: NET_DVR_GetDVRWorkState = %d \n", NET_DVR_GetLastError());
  1177. //TRACE(sTemp);
  1178. //AfxMessageBox("获取设备状态失败!");
  1179. //return;
  1180. }
  1181. for(int k=0; k<m_Serverinfo[i].m_iServerChannelNumber; k++)
  1182. {
  1183. nIndex = g_FunGetRecordIndex( m_Serverinfo[i].m_csServerIP,k );
  1184. if( nIndex==-1 )//不存在
  1185. {
  1186. if(WorkState.struChanStatic[k].bySignalStatic == 0)
  1187. {
  1188. memcpy( g_RecordInfo[g_nRecordIndex].sDvsName,m_Serverinfo[i].m_csServerIP,m_Serverinfo[i].m_csServerIP.GetLength() );
  1189. g_RecordInfo[g_nRecordIndex].nDvrChannel = k;
  1190. g_RecordInfo[g_nRecordIndex].bHaveSignal = true;
  1191. g_nRecordIndex++;
  1192. }
  1193. else if(WorkState.struChanStatic[k].bySignalStatic == 1)
  1194. {
  1195. memcpy( g_RecordInfo[g_nRecordIndex].sDvsName,m_Serverinfo[i].m_csServerIP,m_Serverinfo[i].m_csServerIP.GetLength() );
  1196. g_RecordInfo[g_nRecordIndex].nDvrChannel = k;
  1197. g_RecordInfo[g_nRecordIndex].bHaveSignal = false;
  1198. g_nRecordIndex++;
  1199. }
  1200. }
  1201. else//存在
  1202. {
  1203. if(WorkState.struChanStatic[k].bySignalStatic == 0)
  1204. {
  1205. g_RecordInfo[nIndex].bHaveSignal = true;
  1206. }
  1207. else if(WorkState.struChanStatic[k].bySignalStatic == 1)
  1208. {
  1209. g_RecordInfo[nIndex].bHaveSignal = false;
  1210. }
  1211. }
  1212. }
  1213. //布防
  1214. if(m_ClientParam.m_iAlarmHandle[i] == -1)
  1215. {
  1216. m_ClientParam.m_iAlarmHandle[i] = NET_DVR_SetupAlarmChan(m_Serverinfo[i].m_lServerID);
  1217. if(m_ClientParam.m_iAlarmHandle[i] == -1)
  1218. {
  1219. sTemp.Format("%s报警设防失败 lasterror = %d!",m_Serverinfo[i].m_csServerName, NET_DVR_GetLastError());
  1220. MessageBox(sTemp, "温馨提示", MB_ICONINFORMATION);
  1221. }
  1222. }
  1223. }
  1224. }
  1225. //while(node1!=NULL)
  1226. //{
  1227. // m_tree.GetItemImage(node1,imageindex,selectindex);
  1228. // ipnum=m_tree.GetItemData(node1);
  1229. //
  1230. // if(imageindex==1)
  1231. // {
  1232. // if(m_ClientParam.m_iAlarmHandle[ipnum] == -1)
  1233. // {
  1234. // m_ClientParam.m_iAlarmHandle[ipnum] = NET_DVR_SetupAlarmChan(m_Serverinfo[ipnum].m_lServerID);
  1235. // if(m_ClientParam.m_iAlarmHandle[ipnum] == -1)
  1236. // {
  1237. // m_tree.SetItemImage(node1,0,0);
  1238. // sTemp.Format("%s报警设防失败 lasterror = %d!",m_Serverinfo[ipnum].m_csServerName, NET_DVR_GetLastError());
  1239. // AfxMessageBox(sTemp);
  1240. // }
  1241. // }
  1242. // }
  1243. // else
  1244. // {
  1245. // if(m_ClientParam.m_iAlarmHandle[ipnum] >= 0)
  1246. // {
  1247. // if(NET_DVR_CloseAlarmChan(m_ClientParam.m_iAlarmHandle[ipnum]))
  1248. // {
  1249. // m_ClientParam.m_iAlarmHandle[ipnum] = -1;
  1250. // }
  1251. // else
  1252. // {
  1253. // m_tree.SetItemImage(node1,1,1);
  1254. // sTemp.Format("%s报警撤防失败! lasterror = %d ",m_Serverinfo[ipnum].m_csServerName, NET_DVR_GetLastError());
  1255. // AfxMessageBox(sTemp);
  1256. // }
  1257. // }
  1258. // }
  1259. // node1=m_tree.GetNextSiblingItem(node1);
  1260. //}
  1261. //m_bOK = TRUE;
  1262. //AfxMessageBox("布防撤防完成!");
  1263. }
  1264. void CNewclientDlg::OnSysCommand(UINT nID, LPARAM lParam)
  1265. {
  1266. //if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  1267. //{
  1268. // CAboutDlg dlgAbout;
  1269. // dlgAbout.DoModal();
  1270. //}
  1271. //else
  1272. {
  1273. CDialog::OnSysCommand(nID, lParam);
  1274. }
  1275. }
  1276. // If you add a minimize button to your dialog, you will need the code below
  1277. // to draw the icon. For MFC applications using the document/view model,
  1278. // this is automatically done for you by the framework.
  1279. void CNewclientDlg::OnPaint()
  1280. {
  1281. if (IsIconic())
  1282. {
  1283. CPaintDC dc(this); // device context for painting
  1284. SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
  1285. // Center icon in client rectangle
  1286. int cxIcon = GetSystemMetrics(SM_CXICON);
  1287. int cyIcon = GetSystemMetrics(SM_CYICON);
  1288. CRect rect;
  1289. GetClientRect(&rect);
  1290. int x = (rect.Width() - cxIcon + 1) / 2;
  1291. int y = (rect.Height() - cyIcon + 1) / 2;
  1292. // Draw the icon
  1293. dc.DrawIcon(x, y, m_hIcon);
  1294. }
  1295. else
  1296. {
  1297. CDialog::OnPaint();
  1298. ShowGrid();
  1299. }
  1300. }
  1301. // The system calls this to obtain the cursor to display while the user drags
  1302. // the minimized window.
  1303. HCURSOR CNewclientDlg::OnQueryDragIcon()
  1304. {
  1305. return (HCURSOR) m_hIcon;
  1306. }
  1307. void CNewclientDlg::OnExit()
  1308. {
  1309. // TODO: Add your control notification handler code here
  1310. if(IDOK != MessageBox("确定要退出吗?","警告",IDOK))
  1311. return;
  1312. Resoure();
  1313. CDialog::OnCancel();
  1314. }
  1315. void CNewclientDlg::Resoure()
  1316. {
  1317. int i = 0;
  1318. F_StopPlay();
  1319. if(m_lVoiceIndex != -1)
  1320. {
  1321. if(NET_DVR_StopVoiceCom(m_lVoiceIndex))
  1322. {
  1323. GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("语音对讲");
  1324. m_lVoiceIndex = -1;
  1325. }
  1326. else
  1327. {
  1328. MessageBox("停止语音对讲失败!", "温馨提示", MB_ICONINFORMATION);
  1329. }
  1330. }
  1331. if(cycletimer)
  1332. {
  1333. KillTimer(CYCLE_TIMER);
  1334. cycletimer = 0;
  1335. }
  1336. if(freespacetimer)
  1337. {
  1338. KillTimer(FREESPACE_TIMER);
  1339. freespacetimer = 0;
  1340. }
  1341. if(fileintervaltimer)
  1342. {
  1343. KillTimer(FILEINTERVAL_TIMER);
  1344. fileintervaltimer = 0;
  1345. }
  1346. if(checkservertimer)
  1347. {
  1348. // TRACE("关闭校时时钟");
  1349. KillTimer(CHECKSERVER_TIMER);
  1350. checkservertimer = 0;
  1351. }
  1352. if(hVideoBeeper)
  1353. SetEvent(hVideoBeeper);
  1354. if(m_ClientParam.m_bUseCard)
  1355. {
  1356. NET_DVR_ReleaseDevice_Card();
  1357. NET_DVR_ReleaseDDraw_Card();
  1358. }
  1359. NET_DVR_StopListen();
  1360. for(i=0; i<MAXIPNUMBER; i++)
  1361. {
  1362. if(m_Serverinfo[i].m_iServerChannelNumber >= 0)
  1363. {
  1364. if(m_Serverinfo[i].m_lServerID != -1)
  1365. {
  1366. if(m_ClientParam.m_iAlarmHandle[i] >= 0)
  1367. {
  1368. if(NET_DVR_CloseAlarmChan(m_ClientParam.m_iAlarmHandle[i]))
  1369. {
  1370. m_ClientParam.m_iAlarmHandle[i] = -1;
  1371. }
  1372. }
  1373. if(!NET_DVR_Logout(m_Serverinfo[i].m_lServerID))
  1374. {
  1375. CString sTemp;
  1376. sTemp.Format("ERROR: %s NET_DVR_Logout = %d",m_Serverinfo[i].m_csServerIP, NET_DVR_GetLastError());
  1377. TRACE(sTemp);
  1378. }
  1379. }
  1380. }
  1381. }
  1382. DBConnectionThreadEnd();
  1383. }
  1384. void CNewclientDlg::ArrayWindow(WORD iPos, WORD iNumber)
  1385. {
  1386. int i = 0;
  1387. CRect crect;
  1388. GetClientRect(&crect);
  1389. WORD iWidth,iHeight;
  1390. NET_DVR_DISPLAY_PARA displaypara;
  1391. CRect rc;
  1392. GetDlgItem(IDC_VEDIO_SHOW)->GetWindowRect(rc);
  1393. WORD WIDTH = rc.Width();
  1394. WORD HEIGHT = rc.Height();
  1395. for (i = 0;i < MAXVIEWNUM;i++)
  1396. {
  1397. m_MyOutput[i].ShowWindow(SW_HIDE);
  1398. }
  1399. switch(iNumber)
  1400. {
  1401. case 4:
  1402. if(m_ClientParam.m_bMultiScreen)
  1403. {
  1404. MYVIEW_LEFT = 0;
  1405. MYVIEW_TOP = 0;
  1406. iWidth = 510;
  1407. iHeight = 383;
  1408. }
  1409. else
  1410. {
  1411. MYVIEW_LEFT = LEFT_DISTANCE;
  1412. MYVIEW_TOP = TOP_DISTANCE;
  1413. iWidth = int( (float)WIDTH/2 );
  1414. iHeight = int( (float)HEIGHT/2 );
  1415. iWidth += WIDTH%2;
  1416. iHeight += HEIGHT%2;
  1417. }
  1418. bLargeWnd = FALSE;
  1419. for(i = 0; i < 2; i++)
  1420. {
  1421. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*1,MYVIEW_TOP,iWidth,iHeight,true);
  1422. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*1;
  1423. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP;
  1424. m_MyOutput[i].m_display_para.nWidth = iWidth;
  1425. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1426. m_MyOutput[i].ShowWindow(SW_SHOW);
  1427. }
  1428. for(i = 2; i < 4; i++)
  1429. {
  1430. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-2)*iWidth+(i-2)*1,MYVIEW_TOP+iHeight+2,iWidth,iHeight,true);
  1431. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-2)*iWidth+(i-2)*1/*-2*/;
  1432. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2;
  1433. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1434. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1435. m_MyOutput[i].ShowWindow(SW_SHOW);
  1436. }
  1437. break;
  1438. case 9:
  1439. if(m_ClientParam.m_bMultiScreen)
  1440. {
  1441. MYVIEW_LEFT = 0;
  1442. MYVIEW_TOP = 0;
  1443. iWidth = 339;
  1444. iHeight = 254;
  1445. }
  1446. else
  1447. {
  1448. MYVIEW_LEFT = LEFT_DISTANCE;
  1449. MYVIEW_TOP = TOP_DISTANCE;
  1450. iWidth = int( (float)WIDTH/3 );
  1451. iHeight = int( (float)HEIGHT/3 );
  1452. int n = 0;
  1453. n = WIDTH%3;
  1454. if( n==2 )
  1455. iWidth += 1;
  1456. n = HEIGHT%3;
  1457. if( n==2 )
  1458. iHeight += 1;
  1459. }
  1460. bLargeWnd = FALSE;
  1461. for (i=0;i<3;i++)
  1462. {
  1463. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*1,MYVIEW_TOP,iWidth,iHeight,true);
  1464. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*1/*-2*/;
  1465. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP;
  1466. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1467. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1468. m_MyOutput[i].ShowWindow(SW_SHOW);
  1469. }
  1470. for (i=3;i<6;i++)
  1471. {
  1472. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-3)*iWidth+(i-3)*1,MYVIEW_TOP+iHeight+2,iWidth,iHeight,true);
  1473. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-3)*iWidth+(i-3)*1/*-2*/;
  1474. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2;
  1475. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1476. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1477. m_MyOutput[i].ShowWindow(SW_SHOW);
  1478. }
  1479. for (i=6;i<9;i++)
  1480. {
  1481. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-6)*iWidth+(i-6)*1,MYVIEW_TOP+2*iHeight+4,iWidth,iHeight,true);
  1482. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-6)*iWidth+(i-6)*1/*-2*/;
  1483. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*2;
  1484. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1485. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1486. m_MyOutput[i].ShowWindow(SW_SHOW);
  1487. }
  1488. break;
  1489. case 16:
  1490. if(m_ClientParam.m_bMultiScreen)
  1491. {
  1492. iWidth = 254;
  1493. iHeight = 190;
  1494. MYVIEW_LEFT = 0;
  1495. MYVIEW_TOP = 0;
  1496. }
  1497. else
  1498. {
  1499. MYVIEW_LEFT = LEFT_DISTANCE;
  1500. MYVIEW_TOP = TOP_DISTANCE;
  1501. iWidth = int( (float)WIDTH/4 );
  1502. iHeight = int( (float)HEIGHT/4 );
  1503. int n = 0;
  1504. n = WIDTH%4;
  1505. if( n>=2 )
  1506. iWidth += 1;
  1507. n = HEIGHT%4;
  1508. if( n>=2 )
  1509. iHeight += 1;
  1510. }
  1511. bLargeWnd = FALSE;
  1512. for(i = 0; i < 4; i++)
  1513. {
  1514. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*1, MYVIEW_TOP, iWidth, iHeight, true);
  1515. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*1/*-2*/;
  1516. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP;
  1517. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1518. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1519. m_MyOutput[i].ShowWindow(SW_SHOW);
  1520. }
  1521. for(i = 4; i < 8; i++)
  1522. {
  1523. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-4)*iWidth+(i-4)*1, MYVIEW_TOP+iHeight+2, iWidth, iHeight, true);
  1524. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-4)*iWidth+(i-4)*1/*-2*/;
  1525. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2;
  1526. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1527. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1528. m_MyOutput[i].ShowWindow(SW_SHOW);
  1529. }
  1530. for(i = 8; i < 12; i++)
  1531. {
  1532. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-8)*iWidth+(i-8)*1, MYVIEW_TOP+iHeight*2+4, iWidth, iHeight, true);
  1533. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-8)*iWidth+(i-8)*1/*-2*/;
  1534. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*2;
  1535. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1536. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1537. m_MyOutput[i].ShowWindow(SW_SHOW);
  1538. }
  1539. for(i = 12; i < 16; i++)
  1540. {
  1541. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-12)*iWidth+(i-12)*1, MYVIEW_TOP+iHeight*3+6, iWidth, iHeight, true);
  1542. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-12)*iWidth+(i-12)*1/*-2*/;
  1543. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*3;
  1544. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1545. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1546. m_MyOutput[i].ShowWindow(SW_SHOW);
  1547. }
  1548. break;
  1549. case 33:
  1550. if(m_ClientParam.m_bMultiScreen)
  1551. {
  1552. iWidth = 254;
  1553. iHeight = 190;
  1554. MYVIEW_LEFT = 0;
  1555. MYVIEW_TOP = 0;
  1556. }
  1557. else
  1558. {
  1559. MYVIEW_LEFT = LEFT_DISTANCE;
  1560. MYVIEW_TOP = TOP_DISTANCE;
  1561. iWidth = int( (float)WIDTH/6 );
  1562. iHeight = int( (float)HEIGHT/6 );
  1563. int n = 0;
  1564. n = WIDTH%6;
  1565. if( n>=4 )
  1566. iWidth += 1;
  1567. n = HEIGHT%6;
  1568. if( n>=4 )
  1569. iHeight += 1;
  1570. }
  1571. bLargeWnd = FALSE;
  1572. for(i = 0; i < 1; i++)
  1573. {
  1574. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*1, MYVIEW_TOP, 2*iWidth, 2*iHeight+2, true);
  1575. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*1/*-2*/;
  1576. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP;
  1577. m_MyOutput[i].m_display_para.nWidth = iWidth*2;
  1578. m_MyOutput[i].m_display_para.nHeight = iHeight*2+2;
  1579. m_MyOutput[i].ShowWindow(SW_SHOW);
  1580. }
  1581. for(i = 1; i < 5; i++)
  1582. {
  1583. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i+1)*iWidth+i*1, MYVIEW_TOP, iWidth, iHeight, true);
  1584. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i+1)*iWidth+i*1/*-2*/;
  1585. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP;
  1586. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1587. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1588. m_MyOutput[i].ShowWindow(SW_SHOW);
  1589. }
  1590. for(i = 5; i < 9; i++)
  1591. {
  1592. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-3)*iWidth+(i-3)*1, MYVIEW_TOP+iHeight+2, iWidth, iHeight, true);
  1593. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-3)*iWidth+(i-3)*1/*-2*/;
  1594. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2;
  1595. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1596. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1597. m_MyOutput[i].ShowWindow(SW_SHOW);
  1598. }
  1599. for(i = 9; i < 15; i++)
  1600. {
  1601. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-9)*iWidth+(i-9)*1, MYVIEW_TOP+iHeight*2+4, iWidth, iHeight, true);
  1602. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-9)*iWidth+(i-9)*1/*-2*/;
  1603. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*2;
  1604. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1605. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1606. m_MyOutput[i].ShowWindow(SW_SHOW);
  1607. }
  1608. for(i = 15; i < 21; i++)
  1609. {
  1610. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-15)*iWidth+(i-15)*1, MYVIEW_TOP+iHeight*3+6, iWidth, iHeight, true);
  1611. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-15)*iWidth+(i-15)*1/*-2*/;
  1612. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*3;
  1613. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1614. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1615. m_MyOutput[i].ShowWindow(SW_SHOW);
  1616. }
  1617. for(i = 21; i < 27; i++)
  1618. {
  1619. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-21)*iWidth+(i-21)*1, MYVIEW_TOP+iHeight*4+8, iWidth, iHeight, true);
  1620. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-21)*iWidth+(i-21)*1/*-2*/;
  1621. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*4;
  1622. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1623. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1624. m_MyOutput[i].ShowWindow(SW_SHOW);
  1625. }
  1626. for(i = 27; i < 33; i++)
  1627. {
  1628. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-27)*iWidth+(i-27)*1, MYVIEW_TOP+iHeight*5+10, iWidth, iHeight, true);
  1629. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-27)*iWidth+(i-27)*1/*-2*/;
  1630. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*5;
  1631. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1632. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1633. m_MyOutput[i].ShowWindow(SW_SHOW);
  1634. }
  1635. break;
  1636. case 64:
  1637. if(m_ClientParam.m_bMultiScreen)
  1638. {
  1639. iWidth = 254;
  1640. iHeight = 190;
  1641. MYVIEW_LEFT = 0;
  1642. MYVIEW_TOP = 0;
  1643. }
  1644. else
  1645. {
  1646. MYVIEW_LEFT = LEFT_DISTANCE;
  1647. MYVIEW_TOP = TOP_DISTANCE;
  1648. iWidth = int( (float)WIDTH/8 );
  1649. iHeight = int( (float)HEIGHT/8 );
  1650. int n = 0;
  1651. n = WIDTH%8;
  1652. if( n>=4 )
  1653. iWidth += 1;
  1654. n = HEIGHT%8;
  1655. if( n>=4 )
  1656. iHeight += 1;
  1657. }
  1658. bLargeWnd = FALSE;
  1659. for(i = 0; i < 8; i++)
  1660. {
  1661. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+i*iWidth+i*1, MYVIEW_TOP, iWidth, iHeight, true);
  1662. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+i*iWidth+i*1/*-2*/;
  1663. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP;
  1664. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1665. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1666. m_MyOutput[i].ShowWindow(SW_SHOW);
  1667. }
  1668. for(i = 8; i < 16; i++)
  1669. {
  1670. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-8)*iWidth+(i-8)*1, MYVIEW_TOP+iHeight+2, iWidth, iHeight, true);
  1671. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-8)*iWidth+(i-8)*1/*-2*/;
  1672. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+iHeight+2;
  1673. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1674. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1675. m_MyOutput[i].ShowWindow(SW_SHOW);
  1676. }
  1677. for(i = 16; i < 24; i++)
  1678. {
  1679. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-16)*iWidth+(i-16)*1, MYVIEW_TOP+iHeight*2+4, iWidth, iHeight, true);
  1680. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-16)*iWidth+(i-16)*1/*-2*/;
  1681. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*2;
  1682. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1683. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1684. m_MyOutput[i].ShowWindow(SW_SHOW);
  1685. }
  1686. for(i = 24; i < 32; i++)
  1687. {
  1688. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-24)*iWidth+(i-24)*1, MYVIEW_TOP+iHeight*3+6, iWidth, iHeight, true);
  1689. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-24)*iWidth+(i-24)*1/*-2*/;
  1690. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*3;
  1691. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1692. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1693. m_MyOutput[i].ShowWindow(SW_SHOW);
  1694. }
  1695. for(i = 32; i < 40; i++)
  1696. {
  1697. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-32)*iWidth+(i-32)*1, MYVIEW_TOP+iHeight*4+8, iWidth, iHeight, true);
  1698. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-32)*iWidth+(i-32)*1/*-2*/;
  1699. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*4;
  1700. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1701. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1702. m_MyOutput[i].ShowWindow(SW_SHOW);
  1703. }
  1704. for(i = 40; i < 48; i++)
  1705. {
  1706. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-40)*iWidth+(i-40)*1, MYVIEW_TOP+iHeight*5+10, iWidth, iHeight, true);
  1707. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-40)*iWidth+(i-40)*1/*-2*/;
  1708. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*5;
  1709. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1710. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1711. m_MyOutput[i].ShowWindow(SW_SHOW);
  1712. }
  1713. for(i = 48; i < 56; i++)
  1714. {
  1715. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-48)*iWidth+(i-48)*1, MYVIEW_TOP+iHeight*6+12, iWidth, iHeight, true);
  1716. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-48)*iWidth+(i-48)*1/*-2*/;
  1717. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*6;
  1718. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1719. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1720. m_MyOutput[i].ShowWindow(SW_SHOW);
  1721. }
  1722. for(i = 56; i < 64; i++)
  1723. {
  1724. m_MyOutput[i].MoveWindow(MYVIEW_LEFT+(i-56)*iWidth+(i-56)*1, MYVIEW_TOP+iHeight*7+14, iWidth, iHeight, true);
  1725. m_MyOutput[i].m_display_para.nLeft = MYVIEW_LEFT+(i-56)*iWidth+(i-56)*1/*-2*/;
  1726. m_MyOutput[i].m_display_para.nTop = MYVIEW_TOP+(iHeight+2)*7;
  1727. m_MyOutput[i].m_display_para.nWidth = iWidth/*+2*/;
  1728. m_MyOutput[i].m_display_para.nHeight = iHeight;
  1729. m_MyOutput[i].ShowWindow(SW_SHOW);
  1730. }
  1731. break;
  1732. case 1:
  1733. if(m_ClientParam.m_bMultiScreen)
  1734. {
  1735. iWidth = 1024;
  1736. iHeight = 768;
  1737. MYVIEW_LEFT = 0;
  1738. MYVIEW_TOP = 0;
  1739. }
  1740. else
  1741. {
  1742. MYVIEW_LEFT = LEFT_DISTANCE;
  1743. MYVIEW_TOP = TOP_DISTANCE;
  1744. iWidth = WIDTH;
  1745. iHeight = HEIGHT;
  1746. }
  1747. m_MyOutput[iPos].MoveWindow(MYVIEW_LEFT,MYVIEW_TOP,iWidth,iHeight,true);
  1748. m_MyOutput[iPos].m_display_para.nLeft = MYVIEW_LEFT;
  1749. m_MyOutput[iPos].m_display_para.nTop = MYVIEW_TOP;
  1750. m_MyOutput[iPos].m_display_para.nWidth = iWidth;
  1751. m_MyOutput[iPos].m_display_para.nHeight = iHeight;
  1752. m_MyOutput[iPos].ShowWindow(SW_SHOW);
  1753. break;
  1754. default:
  1755. break;
  1756. }
  1757. if(m_ClientParam.m_bUseCard)
  1758. {
  1759. TRACE("Use Decode Card");
  1760. TRACE("iNumber = %d", iNumber);
  1761. NET_DVR_ClearSurface_Card();
  1762. for(i = 0; i < MAXVIEWNUM; i++)
  1763. {
  1764. displaypara.bToScreen = 0;
  1765. displaypara.bToVideoOut = 1;
  1766. displaypara.nLeft = m_MyOutput[i].m_display_para.nLeft;
  1767. displaypara.nTop = m_MyOutput[i].m_display_para.nTop;
  1768. displaypara.nWidth = m_MyOutput[i].m_display_para.nWidth;
  1769. displaypara.nHeight = m_MyOutput[i].m_display_para.nHeight;
  1770. NET_DVR_ResetPara_Card(m_MyOutput[i].m_iPlayhandle,&displaypara);
  1771. }
  1772. if(iNumber == 1)
  1773. {//放大
  1774. displaypara.bToScreen = 1;
  1775. displaypara.bToVideoOut = 1;
  1776. displaypara.nLeft = m_MyOutput[iPos].m_display_para.nLeft;
  1777. displaypara.nTop = m_MyOutput[iPos].m_display_para.nTop;
  1778. displaypara.nWidth = m_MyOutput[iPos].m_display_para.nWidth;
  1779. displaypara.nHeight = m_MyOutput[iPos].m_display_para.nHeight;
  1780. NET_DVR_ResetPara_Card(m_MyOutput[iPos].m_iPlayhandle,&displaypara);
  1781. }
  1782. else
  1783. {//缩小
  1784. for(i = 0; i < iNumber; i++)
  1785. {
  1786. displaypara.bToScreen = 1;
  1787. displaypara.bToVideoOut = 1;
  1788. displaypara.nLeft = m_MyOutput[i].m_display_para.nLeft;
  1789. displaypara.nTop = m_MyOutput[i].m_display_para.nTop;
  1790. displaypara.nWidth = m_MyOutput[i].m_display_para.nWidth;
  1791. displaypara.nHeight = m_MyOutput[i].m_display_para.nHeight;
  1792. NET_DVR_ResetPara_Card(m_MyOutput[i].m_iPlayhandle,&displaypara);
  1793. }
  1794. }
  1795. }
  1796. }
  1797. void CNewclientDlg::MoveCurWin(int iWindowNum,int iCurWinPos)
  1798. {
  1799. //CNewclientDlg* mainwnd =(CNewclientDlg*) AfxGetMainWnd();
  1800. CRect rc;
  1801. GetDlgItem(IDC_VEDIO_SHOW)->GetWindowRect(rc);
  1802. WORD WIDTH = rc.Width();
  1803. WORD HEIGHT = rc.Height();
  1804. int rectWidth = 0;
  1805. int rectHeight = 0;
  1806. int rectTop = 0;
  1807. int rectLeft = 0;
  1808. switch(iWindowNum)
  1809. {
  1810. case 1:
  1811. rectWidth = 706*W_RATIO;
  1812. rectHeight = 578*H_RATIO;
  1813. rectTop = WIDTH;
  1814. rectLeft = HEIGHT;
  1815. break;
  1816. case 4:
  1817. rectWidth = int( (float)WIDTH/2 );
  1818. rectHeight = int( (float)HEIGHT/2 );
  1819. switch(iCurWinPos)
  1820. {
  1821. case 0:
  1822. case 1:
  1823. rectTop = MYVIEW_TOP;
  1824. rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*1;
  1825. break;
  1826. case 2:
  1827. case 3:
  1828. rectTop = MYVIEW_TOP+rectHeight+2;
  1829. rectLeft = MYVIEW_LEFT+(iCurWinPos-2)*rectWidth+(iCurWinPos-2)*1;
  1830. break;
  1831. default:
  1832. break;
  1833. }
  1834. break;
  1835. case 9:
  1836. rectWidth = int( (float)WIDTH/3 );
  1837. rectHeight = int( (float)HEIGHT/3 );
  1838. switch(iCurWinPos)
  1839. {
  1840. case 0:
  1841. case 1:
  1842. case 2:
  1843. rectTop = MYVIEW_TOP;
  1844. rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*1;
  1845. break;
  1846. case 3:
  1847. case 4:
  1848. case 5:
  1849. rectTop = MYVIEW_TOP+rectHeight + 2;
  1850. rectLeft = MYVIEW_LEFT+(iCurWinPos-3)*rectWidth+(iCurWinPos-3)*1;
  1851. break;
  1852. case 6:
  1853. case 7:
  1854. case 8:
  1855. rectTop = MYVIEW_TOP+2*rectHeight+4;
  1856. rectLeft = MYVIEW_LEFT+(iCurWinPos-6)*rectWidth+(iCurWinPos-6)*1;
  1857. break;
  1858. default:
  1859. break;
  1860. }
  1861. break;
  1862. case 16:
  1863. rectWidth = int( (float)WIDTH/4 );
  1864. rectHeight = int( (float)HEIGHT/4 );
  1865. switch(iCurWinPos)
  1866. {
  1867. case 0:
  1868. case 1:
  1869. case 2:
  1870. case 3:
  1871. rectTop = MYVIEW_TOP;
  1872. rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*1;
  1873. break;
  1874. case 4:
  1875. case 5:
  1876. case 6:
  1877. case 7:
  1878. rectTop = MYVIEW_TOP+rectHeight+2;
  1879. rectLeft = MYVIEW_LEFT+(iCurWinPos-4)*rectWidth+(iCurWinPos-4)*1;
  1880. break;
  1881. case 8:
  1882. case 9:
  1883. case 10:
  1884. case 11:
  1885. rectTop = MYVIEW_TOP+2*rectHeight+4;
  1886. rectLeft = MYVIEW_LEFT+(iCurWinPos-8)*rectWidth+(iCurWinPos-8)*1;
  1887. break;
  1888. case 12:
  1889. case 13:
  1890. case 14:
  1891. case 15:
  1892. rectTop = MYVIEW_TOP+3*rectHeight+6;
  1893. rectLeft = MYVIEW_LEFT+(iCurWinPos-12)*rectWidth+(iCurWinPos-12)*1;
  1894. break;
  1895. default:
  1896. break;
  1897. }
  1898. break;
  1899. case 33:
  1900. rectWidth = int( (float)WIDTH/6 );
  1901. rectHeight = int( (float)HEIGHT/6 );
  1902. switch(iCurWinPos)
  1903. {
  1904. case 0:
  1905. rectTop = MYVIEW_TOP;
  1906. rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*1;
  1907. rectWidth = rectWidth*2;
  1908. rectHeight = rectHeight*2+2;
  1909. break;
  1910. case 1:
  1911. case 2:
  1912. case 3:
  1913. case 4:
  1914. rectTop = MYVIEW_TOP;
  1915. rectLeft = MYVIEW_LEFT+(iCurWinPos+1)*rectWidth+(iCurWinPos+1)*1;
  1916. break;
  1917. case 5:
  1918. case 6:
  1919. case 7:
  1920. case 8:
  1921. rectTop = MYVIEW_TOP+rectHeight+2;
  1922. rectLeft = MYVIEW_LEFT+(iCurWinPos-3)*rectWidth+(iCurWinPos-3)*1;
  1923. break;
  1924. case 9:
  1925. case 10:
  1926. case 11:
  1927. case 12:
  1928. case 13:
  1929. case 14:
  1930. rectTop = MYVIEW_TOP+2*rectHeight+4;
  1931. rectLeft = MYVIEW_LEFT+(iCurWinPos-9)*rectWidth+(iCurWinPos-9)*1;
  1932. break;
  1933. case 15:
  1934. case 16:
  1935. case 17:
  1936. case 18:
  1937. case 19:
  1938. case 20:
  1939. rectTop = MYVIEW_TOP+3*rectHeight+6;
  1940. rectLeft = MYVIEW_LEFT+(iCurWinPos-15)*rectWidth+(iCurWinPos-15)*1;
  1941. break;
  1942. case 21:
  1943. case 22:
  1944. case 23:
  1945. case 24:
  1946. case 25:
  1947. case 26:
  1948. rectTop = MYVIEW_TOP+4*rectHeight+8;
  1949. rectLeft = MYVIEW_LEFT+(iCurWinPos-21)*rectWidth+(iCurWinPos-21)*1;
  1950. break;
  1951. case 27:
  1952. case 28:
  1953. case 29:
  1954. case 30:
  1955. case 31:
  1956. case 32:
  1957. rectTop = MYVIEW_TOP+5*rectHeight+10;
  1958. rectLeft = MYVIEW_LEFT+(iCurWinPos-27)*rectWidth+(iCurWinPos-27)*1;
  1959. break;
  1960. default:
  1961. break;
  1962. }
  1963. break;
  1964. case 64:
  1965. rectWidth = int( (float)WIDTH/8 );
  1966. rectHeight = int( (float)HEIGHT/8 );
  1967. switch(iCurWinPos)
  1968. {
  1969. case 0:
  1970. case 1:
  1971. case 2:
  1972. case 3:
  1973. case 4:
  1974. case 5:
  1975. case 6:
  1976. case 7:
  1977. rectTop = MYVIEW_TOP;
  1978. rectLeft = MYVIEW_LEFT+iCurWinPos*rectWidth+iCurWinPos*1;
  1979. break;
  1980. case 8:
  1981. case 9:
  1982. case 10:
  1983. case 11:
  1984. case 12:
  1985. case 13:
  1986. case 14:
  1987. case 15:
  1988. rectTop = MYVIEW_TOP+1*rectHeight+2;
  1989. rectLeft = MYVIEW_LEFT+(iCurWinPos-8)*rectWidth+(iCurWinPos-8)*1;
  1990. break;
  1991. case 16:
  1992. case 17:
  1993. case 18:
  1994. case 19:
  1995. case 20:
  1996. case 21:
  1997. case 22:
  1998. case 23:
  1999. rectTop = MYVIEW_TOP+2*rectHeight+4;
  2000. rectLeft = MYVIEW_LEFT+(iCurWinPos-16)*rectWidth+(iCurWinPos-16)*1;
  2001. break;
  2002. case 24:
  2003. case 25:
  2004. case 26:
  2005. case 27:
  2006. case 28:
  2007. case 29:
  2008. case 30:
  2009. case 31:
  2010. rectTop = MYVIEW_TOP+3*rectHeight+6;
  2011. rectLeft = MYVIEW_LEFT+(iCurWinPos-24)*rectWidth+(iCurWinPos-24)*1;
  2012. break;
  2013. case 32:
  2014. case 33:
  2015. case 34:
  2016. case 35:
  2017. case 36:
  2018. case 37:
  2019. case 38:
  2020. case 39:
  2021. rectTop = MYVIEW_TOP+4*rectHeight+8;
  2022. rectLeft = MYVIEW_LEFT+(iCurWinPos-32)*rectWidth+(iCurWinPos-32)*1;
  2023. break;
  2024. case 40:
  2025. case 41:
  2026. case 42:
  2027. case 43:
  2028. case 44:
  2029. case 45:
  2030. case 46:
  2031. case 47:
  2032. rectTop = MYVIEW_TOP+5*rectHeight+10;
  2033. rectLeft = MYVIEW_LEFT+(iCurWinPos-40)*rectWidth+(iCurWinPos-40)*1;
  2034. break;
  2035. case 48:
  2036. case 49:
  2037. case 50:
  2038. case 51:
  2039. case 52:
  2040. case 53:
  2041. case 54:
  2042. case 55:
  2043. rectTop = MYVIEW_TOP+6*rectHeight+12;
  2044. rectLeft = MYVIEW_LEFT+(iCurWinPos-48)*rectWidth+(iCurWinPos-48)*1;
  2045. break;
  2046. case 56:
  2047. case 57:
  2048. case 58:
  2049. case 59:
  2050. case 60:
  2051. case 61:
  2052. case 62:
  2053. case 63:
  2054. rectTop = MYVIEW_TOP+7*rectHeight+14;
  2055. rectLeft = MYVIEW_LEFT+(iCurWinPos-56)*rectWidth+(iCurWinPos-56)*1;
  2056. break;
  2057. default:
  2058. break;
  2059. }
  2060. break;
  2061. default:
  2062. break;
  2063. }
  2064. m_Mycurwin.m_black.ShowWindow(SW_HIDE);
  2065. m_Mycurwin.MoveWindow(rectLeft-1,rectTop-1,rectWidth+2,rectHeight+2);
  2066. m_Mycurwin.m_black.ShowWindow(SW_SHOW);
  2067. m_Mycurwin.EnableWindow(FALSE);
  2068. }
  2069. void CNewclientDlg::InitLed()
  2070. {
  2071. int i;
  2072. m_pCapLed[0] = &m_CapLed1;
  2073. m_pCapLed[1] = &m_CapLed2;
  2074. m_pCapLed[2] = &m_CapLed3;
  2075. m_pCapLed[3] = &m_CapLed4;
  2076. m_pCapLed[4] = &m_CapLed5;
  2077. m_pCapLed[5] = &m_CapLed6;
  2078. m_pCapLed[6] = &m_CapLed7;
  2079. m_pCapLed[7] = &m_CapLed8;
  2080. m_pCapLed[8] = &m_CapLed9;
  2081. m_pCapLed[9] = &m_CapLed10;
  2082. m_pCapLed[10] = &m_CapLed11;
  2083. m_pCapLed[11] = &m_CapLed12;
  2084. m_pCapLed[12] = &m_CapLed13;
  2085. m_pCapLed[13] = &m_CapLed14;
  2086. m_pCapLed[14] = &m_CapLed15;
  2087. m_pCapLed[15] = &m_CapLed16;
  2088. //for(i = 0; i < MAXVIEWNUM; i++)
  2089. {
  2090. //m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND);
  2091. }
  2092. m_pAlarmLed[0] = &m_AlarmLed1;
  2093. m_pAlarmLed[1] = &m_AlarmLed2;
  2094. m_pAlarmLed[2] = &m_AlarmLed3;
  2095. m_pAlarmLed[3] = &m_AlarmLed4;
  2096. m_pAlarmLed[4] = &m_AlarmLed5;
  2097. m_pAlarmLed[5] = &m_AlarmLed6;
  2098. m_pAlarmLed[6] = &m_AlarmLed7;
  2099. m_pAlarmLed[7] = &m_AlarmLed8;
  2100. m_pAlarmLed[8] = &m_AlarmLed9;
  2101. m_pAlarmLed[9] = &m_AlarmLed10;
  2102. m_pAlarmLed[10] = &m_AlarmLed11;
  2103. m_pAlarmLed[11] = &m_AlarmLed12;
  2104. m_pAlarmLed[12] = &m_AlarmLed13;
  2105. m_pAlarmLed[13] = &m_AlarmLed14;
  2106. m_pAlarmLed[14] = &m_AlarmLed15;
  2107. m_pAlarmLed[15] = &m_AlarmLed16;
  2108. //for(i = 0; i < MAXVIEWNUM; i++)
  2109. {
  2110. //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND);
  2111. }
  2112. }
  2113. void CNewclientDlg::F_InitDecodeCard()
  2114. {
  2115. int nDispNum = 0;
  2116. TRACE("初始化解码卡");
  2117. int iRet = NET_DVR_InitDDraw_Card(this->m_hWnd,0xff0000);
  2118. iRet=NET_DVR_InitDevice_Card(&channelcount);
  2119. TRACE("ChannelCount = %d", channelcount);
  2120. if(channelcount <= 0)
  2121. {
  2122. MessageBox("请插入解码卡!", "温馨提示", MB_ICONINFORMATION);
  2123. return;
  2124. }
  2125. else if(channelcount > 16)
  2126. {
  2127. channelcount = 16;
  2128. }
  2129. if(m_ClientParam.m_bNTSC)
  2130. {
  2131. nDispNum = GetDisplayChannelCount();
  2132. if (nDispNum >= 2)
  2133. {
  2134. REGION_PARAM param[MAX_DISPLAY_REGION];
  2135. int i;
  2136. memset(param, 0, sizeof(param));
  2137. for (i=0; i<MAX_DISPLAY_REGION; i++)
  2138. param[i].color = RGB(i, i*8, i*16);
  2139. for (i=0; i<nDispNum/2; i++)
  2140. {
  2141. SetDisplayStandard(2*i,StandardNTSC);
  2142. param[0].left=0; param[0].top=0; param[0].width=352; param[0].height=240;
  2143. param[1].left=352; param[1].top=0; param[1].width=352; param[1].height=240;
  2144. param[2].left=0; param[2].top=240; param[2].width=352; param[2].height=240;
  2145. param[3].left=352; param[3].top=240; param[3].width=352; param[3].height=240;
  2146. if (SetDisplayRegion(2*i, 4, param, 0) != HWERR_SUCCESS)
  2147. {
  2148. TRACE("SetDisplayRegion failed!");
  2149. }
  2150. SetDecoderVideoExtOutput(4*i, 0, 1, 2*i, 0, 0);
  2151. SetDecoderVideoExtOutput(4*i+1, 0, 1, 2*i, 1, 0);
  2152. SetDecoderVideoExtOutput(4*i+2, 0, 1, 2*i, 2, 0);
  2153. SetDecoderVideoExtOutput(4*i+3, 0, 1, 2*i, 3, 0);
  2154. SetDisplayStandard(2*i+1,StandardNTSC);
  2155. param[0].left=0; param[0].top=0; param[0].width=704; param[0].height=480;
  2156. if (SetDisplayRegion(2*i+1, 1, param, 0) != HWERR_SUCCESS)
  2157. {
  2158. TRACE("SetDisplayRegion failed!");
  2159. }
  2160. SetDecoderVideoExtOutput(4*i, 1, 1, 2*i+1, 0, 0);
  2161. }
  2162. }
  2163. }
  2164. else
  2165. {
  2166. nDispNum = GetDisplayChannelCount();
  2167. if (nDispNum >= 2)
  2168. {
  2169. REGION_PARAM param[MAX_DISPLAY_REGION];
  2170. int i;
  2171. memset(param, 0, sizeof(param));
  2172. for (i=0; i<MAX_DISPLAY_REGION; i++)
  2173. param[i].color = RGB(i, i*8, i*16);
  2174. for (i=0; i<nDispNum/2; i++)
  2175. {
  2176. SetDisplayStandard(2*i,StandardPAL);
  2177. param[0].left=0; param[0].top=0; param[0].width=352; param[0].height=288;
  2178. param[1].left=352; param[1].top=0; param[1].width=352; param[1].height=288;
  2179. param[2].left=0; param[2].top=288; param[2].width=352; param[2].height=288;
  2180. param[3].left=352; param[3].top=288; param[3].width=352; param[3].height=288;
  2181. if (SetDisplayRegion(2*i, 4, param, 0) != HWERR_SUCCESS)
  2182. {
  2183. TRACE("SetDisplayRegion failed!");
  2184. }
  2185. SetDecoderVideoExtOutput(4*i, 0, 1, 2*i, 0, 0);
  2186. SetDecoderVideoExtOutput(4*i+1, 0, 1, 2*i, 1, 0);
  2187. SetDecoderVideoExtOutput(4*i+2, 0, 1, 2*i, 2, 0);
  2188. SetDecoderVideoExtOutput(4*i+3, 0, 1, 2*i, 3, 0);
  2189. SetDisplayStandard(2*i+1,StandardPAL);
  2190. param[0].left=0; param[0].top=0; param[0].width=704; param[0].height=576;
  2191. if (SetDisplayRegion(2*i+1, 1, param, 0) != HWERR_SUCCESS)
  2192. {
  2193. TRACE("SetDisplayRegion failed!");
  2194. }
  2195. SetDecoderVideoExtOutput(4*i, 1, 1, 2*i+1, 0, 0);
  2196. }
  2197. }
  2198. }
  2199. if(channelcount==1)
  2200. {
  2201. WINDOWNUM=1;
  2202. m_windownum.SetCurSel(0);
  2203. }
  2204. else if (channelcount<=4)
  2205. {
  2206. WINDOWNUM=4;
  2207. m_windownum.SetCurSel(1);
  2208. }
  2209. else if(channelcount<=9)
  2210. {
  2211. WINDOWNUM = 9;
  2212. m_windownum.SetCurSel(2);
  2213. }
  2214. else
  2215. {
  2216. m_windownum.SetCurSel(3);
  2217. WINDOWNUM = 16;
  2218. }
  2219. }
  2220. void CNewclientDlg::OnAudioexchange()
  2221. {
  2222. // TODO: Add your control notification handler code here
  2223. if(m_lVoiceIndex == -1)
  2224. {
  2225. CVoiceExchange VoiceDlg;
  2226. VoiceDlg.DoModal();
  2227. if(m_lVoiceIndex != -1)
  2228. {
  2229. GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("停止对讲");
  2230. }
  2231. }
  2232. else
  2233. {
  2234. if(NET_DVR_StopVoiceCom(m_lVoiceIndex))
  2235. {
  2236. GetDlgItem(IDC_AUDIOEXCHANGE)->SetWindowText("语音对讲");
  2237. m_lVoiceIndex = -1;
  2238. }
  2239. else
  2240. {
  2241. MessageBox("停止语音对讲失败!", "温馨提示", MB_ICONINFORMATION);
  2242. }
  2243. }
  2244. }
  2245. void CNewclientDlg::OnSystemcfg()
  2246. {
  2247. // TODO: Add your control notification handler code here
  2248. CSystemConfig SysCfgDlg;
  2249. g_pNewclientDlg = this;
  2250. SysCfgDlg.DoModal();
  2251. if(nUseCard == 1)
  2252. {
  2253. channelcount = 0;
  2254. F_InitDecodeCard();
  2255. ArrayWindow(0,WINDOWNUM);
  2256. MoveCurWin(WINDOWNUM,0);
  2257. nUseCard = 0;
  2258. }
  2259. if(nUseCard == 2)
  2260. {
  2261. NET_DVR_ReleaseDevice_Card();
  2262. NET_DVR_ReleaseDDraw_Card();
  2263. nUseCard = 0;
  2264. }
  2265. if(m_ClientParam.m_bCheckServerTime)
  2266. {
  2267. if(checkservertimer == 0)
  2268. {
  2269. TRACE("启动硬盘录像机校时时钟,校时时间是每天的%06d", m_ClientParam.m_iCheckServerTime);
  2270. checkservertimer = SetTimer(CHECKSERVER_TIMER, 1000, NULL);
  2271. }
  2272. }
  2273. else
  2274. {
  2275. if(checkservertimer)
  2276. {
  2277. // TRACE("关闭硬盘录像机校时时钟");
  2278. KillTimer(CHECKSERVER_TIMER);
  2279. checkservertimer = 0;
  2280. }
  2281. }
  2282. F_JudgeDiskFull();
  2283. }
  2284. void CNewclientDlg::OnSelchangeCombowndnum()
  2285. {
  2286. // TODO: Add your control notification handler code here
  2287. int i;
  2288. WORD wndnum;
  2289. i = m_windownum.GetCurSel();
  2290. switch(i)
  2291. {
  2292. case 0:
  2293. wndnum = 1;
  2294. break;
  2295. case 1:
  2296. wndnum = 4;
  2297. break;
  2298. case 2:
  2299. wndnum = 9;
  2300. break;
  2301. case 3:
  2302. wndnum = 16;
  2303. break;
  2304. default:
  2305. break;
  2306. }
  2307. if(WINDOWNUM != wndnum)
  2308. {
  2309. WINDOWNUM = wndnum;
  2310. if(m_ClientParam.m_bCycling)
  2311. {
  2312. MessageBox("请停止循环播放!", "温馨提示", MB_ICONINFORMATION);
  2313. return;
  2314. }
  2315. if(m_ClientParam.m_bPlaying)
  2316. {
  2317. TRACE("Stop Play");
  2318. F_StopPlay();
  2319. OnVideonetplay();
  2320. }
  2321. ArrayWindow(0, WINDOWNUM);
  2322. MoveCurWin(WINDOWNUM,0);
  2323. }
  2324. }
  2325. void CNewclientDlg::F_StopPlay()
  2326. {
  2327. int i;
  2328. if(cycletimer)
  2329. {
  2330. KillTimer(CYCLE_TIMER);
  2331. cycletimer = 0;
  2332. }
  2333. if(!m_ClientParam.m_bUseCard)
  2334. {
  2335. if(!g_bShareSound)
  2336. NET_DVR_CloseSound();
  2337. }
  2338. for(i = 0; i < MAXVIEWNUM; i++)
  2339. {
  2340. if(m_MyOutput[i].m_bFileSave)
  2341. F_StopClientRecord(i);
  2342. if(g_bShareSound)
  2343. NET_DVR_CloseSoundShare(m_MyOutput[i].m_iPlayhandle);
  2344. m_MyOutput[i].StopNet();
  2345. }
  2346. GetDlgItem(IDC_PLAY)->SetWindowText("预览视频");
  2347. numberpos = 0;
  2348. if( (m_ClientParam.m_bEnlarged) || (m_ClientParam.m_bFullScreen) )
  2349. {
  2350. ArrayWindow(0, WINDOWNUM);
  2351. MoveCurWin(WINDOWNUM,0);
  2352. }
  2353. m_ClientParam.m_bPlaying = FALSE;
  2354. m_ClientParam.m_bCycling = FALSE;
  2355. m_ClientParam.m_bPaused = FALSE;
  2356. m_ClientParam.m_bNextPage = FALSE;
  2357. m_ClientParam.m_bFrontPage = FALSE;
  2358. //GetDlgItem(IDC_COMBOWNDNUM)->EnableWindow(TRUE);
  2359. }
  2360. void CNewclientDlg::OnVideonetplay()
  2361. {
  2362. // TODO: Add your control notification handler code here
  2363. int itemp,i;
  2364. UpdateData(TRUE);
  2365. if(m_nSurveillanceNumber == 0)
  2366. return;
  2367. if(m_ClientParam.m_bPlaying)
  2368. {
  2369. TRACE("Stop Play");
  2370. F_StopPlay();
  2371. return;
  2372. }
  2373. #if 0//预览30秒自动停止预览
  2374. SetTimer( 56,1000,NULL );
  2375. m_dwPreviewTime = GetTickCount();
  2376. #endif
  2377. m_ClientParam.m_bPlaying = TRUE;
  2378. if(m_nSurveillanceNumber < WINDOWNUM)
  2379. itemp = m_nSurveillanceNumber;
  2380. else
  2381. itemp = WINDOWNUM;
  2382. for(i=0;i<itemp;i++)
  2383. {
  2384. if(m_ClientParam.m_bUseCard)
  2385. m_MyOutput[i].StartCard(&m_Selipinfo[i]);
  2386. else
  2387. {
  2388. TRACE("start play %s m_lServerId = %d", m_Selipinfo[i].m_csIP, m_Selipinfo[i].m_lServerID);
  2389. m_MyOutput[i].StartNet(&m_Selipinfo[i]);
  2390. if(g_bShareSound && (m_MyOutput[i].m_iPlayhandle >= 0))
  2391. {
  2392. m_ClientParam.m_bPlaySound[i] = TRUE;
  2393. }
  2394. }
  2395. Sleep(100);
  2396. }
  2397. if(m_nSurveillanceNumber <= WINDOWNUM)
  2398. {
  2399. numberpos = m_nSurveillanceNumber;
  2400. }
  2401. else
  2402. {
  2403. numberpos = WINDOWNUM;
  2404. if(m_ClientParam.m_bCyclePlay) //循环播放
  2405. {
  2406. if(cycletimer == 0)
  2407. {
  2408. cycletimer = SetTimer(CYCLE_TIMER,m_ClientParam.m_iCycleTime*1000,NULL);
  2409. }
  2410. m_ClientParam.m_bCycling = TRUE;
  2411. m_bChangePage = TRUE;
  2412. m_ClientParam.m_bPaused = FALSE;
  2413. }
  2414. else
  2415. {
  2416. m_ClientParam.m_bNextPage = TRUE;
  2417. m_ClientParam.m_bFrontPage = FALSE;
  2418. }
  2419. }
  2420. // m_windownum.EnableWindow(FALSE);
  2421. GetDlgItem(IDC_PLAY)->SetWindowText("停止预览");
  2422. UpdateData(FALSE);
  2423. SetAlarm();
  2424. }
  2425. void CNewclientDlg::F_FullScreen()
  2426. {
  2427. GetWindowPlacement(&m_OldWndPlacement);
  2428. CRect WindowRect, ClientRect, FullScreenRect;
  2429. int FullWidth, FullHeight;
  2430. GetWindowRect(&WindowRect);
  2431. RepositionBars(0, 0xffff, AFX_IDW_PANE_FIRST, reposQuery, &ClientRect);
  2432. ClientToScreen(&ClientRect);
  2433. //获取屏幕的分辨率;
  2434. FullWidth = GetSystemMetrics(SM_CXSCREEN);
  2435. FullHeight = GetSystemMetrics(SM_CYSCREEN);
  2436. //将除控制条外的客户区全屏显示到从(0,0)到(nFullWidth, nFullHeight)区域, 将(0,0)和(nFullWidth, nFullHeight)两个点外扩充原窗口和除控制条之外的 客户区位置间的差值, 就得到全屏显示的窗口位置;
  2437. FullScreenRect.left = WindowRect.left-ClientRect.left;
  2438. FullScreenRect.top = WindowRect.top-ClientRect.top;
  2439. FullScreenRect.right = WindowRect.right-ClientRect.right+FullWidth;
  2440. FullScreenRect.bottom = WindowRect.bottom-ClientRect.bottom+FullHeight;
  2441. //进入全屏显示状态 ;
  2442. WINDOWPLACEMENT wndpl;
  2443. wndpl.length = sizeof(WINDOWPLACEMENT);
  2444. wndpl.flags = 0;
  2445. wndpl.showCmd = SW_SHOWNORMAL;
  2446. wndpl.rcNormalPosition = FullScreenRect;
  2447. SetWindowPlacement(&wndpl);
  2448. int i;
  2449. for(i = 0; i < WINDOWNUM; i++)
  2450. m_MyOutput[i].ShowWindow(SW_HIDE);
  2451. F_ShowHide(FALSE);
  2452. m_Mycurwin.ShowWindow(SW_HIDE);
  2453. i = m_nActiveWndNumber;
  2454. if(m_ClientParam.m_bUseCard)
  2455. {
  2456. NET_DVR_DISPLAY_PARA displaypara;
  2457. displaypara.bToVideoOut = 1;
  2458. displaypara.bToScreen = 1;
  2459. displaypara.nLeft = 0;
  2460. displaypara.nTop = 0;
  2461. displaypara.nWidth = 1024;
  2462. displaypara.nHeight = 768;
  2463. NET_DVR_ResetPara_Card(m_MyOutput[i].m_iPlayhandle,&displaypara);
  2464. }
  2465. }
  2466. void CNewclientDlg::F_EndFullScreen()
  2467. {
  2468. SetWindowPlacement(&m_OldWndPlacement);
  2469. F_ShowHide(TRUE);
  2470. m_Mycurwin.ShowWindow(SW_SHOW);
  2471. }
  2472. void CNewclientDlg::F_ShowHide(BOOL bShow)
  2473. {
  2474. if(bShow)
  2475. {
  2476. //云台
  2477. GetDlgItem(IDC_BUTTONUP)->ShowWindow(SW_SHOW);
  2478. GetDlgItem(IDC_BUTTONLEFT)->ShowWindow(SW_SHOW);
  2479. GetDlgItem(IDC_BUTTONRIGHT)->ShowWindow(SW_SHOW);
  2480. GetDlgItem(IDC_BUTTONDOWN)->ShowWindow(SW_SHOW);
  2481. GetDlgItem(IDC_BUTTONTJLEFT)->ShowWindow(SW_SHOW);
  2482. GetDlgItem(IDC_BUTTONTJRIGHT)->ShowWindow(SW_SHOW);
  2483. GetDlgItem(IDC_BUTTONJJLEFT)->ShowWindow(SW_SHOW);
  2484. GetDlgItem(IDC_BUTTONJJRIGHT)->ShowWindow(SW_SHOW);
  2485. GetDlgItem(IDC_BUTTONGQLEFT)->ShowWindow(SW_SHOW);
  2486. GetDlgItem(IDC_BUTTONGQRIGHT)->ShowWindow(SW_SHOW);
  2487. GetDlgItem(IDC_YZD)->ShowWindow(SW_SHOW);
  2488. GetDlgItem(IDC_BUTTONYZW)->ShowWindow(SW_SHOW);
  2489. //预览
  2490. GetDlgItem(IDC_PLAY)->ShowWindow(SW_SHOW);
  2491. //系统设置
  2492. GetDlgItem(IDC_SYSTEMCFG)->ShowWindow(SW_SHOW);
  2493. //抓图
  2494. GetDlgItem(IDC_GETPICTURE)->ShowWindow(SW_SHOW);
  2495. //录像
  2496. GetDlgItem(IDC_RECORD)->ShowWindow(SW_SHOW);
  2497. //时间日志
  2498. GetDlgItem(IDC_EVENTLIST)->ShowWindow(SW_SHOW);
  2499. ////布防,撤防
  2500. //GetDlgItem(IDC_BUTTONALARMSET)->ShowWindow(SW_SHOW);
  2501. ////语音对讲
  2502. //GetDlgItem(IDC_AUDIOEXCHANGE)->ShowWindow(SW_SHOW);
  2503. //回放
  2504. GetDlgItem(IDC_VIDEOFILEPLAY)->ShowWindow(SW_SHOW);
  2505. ////亮度
  2506. //GetDlgItem(IDC_SLIDERLD)->ShowWindow(SW_SHOW);
  2507. ////对比度
  2508. //GetDlgItem(IDC_SLIDERDBD)->ShowWindow(SW_SHOW);
  2509. ////饱和度
  2510. //GetDlgItem(IDC_SLIDERBHD)->ShowWindow(SW_SHOW);
  2511. ////色度
  2512. //GetDlgItem(IDC_SLIDERSD)->ShowWindow(SW_SHOW);
  2513. ////音量
  2514. //GetDlgItem(IDC_SLIDERYL)->ShowWindow(SW_SHOW);
  2515. ////恢复默认值
  2516. //GetDlgItem(IDC_BUTTONPOLL)->ShowWindow(SW_SHOW);
  2517. ////退出系统
  2518. //GetDlgItem(IDC_EXIT)->ShowWindow(SW_SHOW);
  2519. //窗口画面数
  2520. //GetDlgItem(IDC_COMBOWNDNUM)->ShowWindow(SW_SHOW);
  2521. //GetDlgItem(IDC_LED1)->ShowWindow(SW_SHOW);
  2522. //GetDlgItem(IDC_LED2)->ShowWindow(SW_SHOW);
  2523. //GetDlgItem(IDC_LED3)->ShowWindow(SW_SHOW);
  2524. //GetDlgItem(IDC_LED4)->ShowWindow(SW_SHOW);
  2525. //GetDlgItem(IDC_LED5)->ShowWindow(SW_SHOW);
  2526. //GetDlgItem(IDC_LED6)->ShowWindow(SW_SHOW);
  2527. //GetDlgItem(IDC_LED7)->ShowWindow(SW_SHOW);
  2528. //GetDlgItem(IDC_LED8)->ShowWindow(SW_SHOW);
  2529. //GetDlgItem(IDC_LED9)->ShowWindow(SW_SHOW);
  2530. //GetDlgItem(IDC_LED10)->ShowWindow(SW_SHOW);
  2531. //GetDlgItem(IDC_LED11)->ShowWindow(SW_SHOW);
  2532. //GetDlgItem(IDC_LED12)->ShowWindow(SW_SHOW);
  2533. //GetDlgItem(IDC_LED13)->ShowWindow(SW_SHOW);
  2534. //GetDlgItem(IDC_LED14)->ShowWindow(SW_SHOW);
  2535. //GetDlgItem(IDC_LED15)->ShowWindow(SW_SHOW);
  2536. //GetDlgItem(IDC_LED16)->ShowWindow(SW_SHOW);
  2537. //GetDlgItem(IDC_ALARMLED1)->ShowWindow(SW_SHOW);
  2538. //GetDlgItem(IDC_ALARMLED2)->ShowWindow(SW_SHOW);
  2539. //GetDlgItem(IDC_ALARMLED3)->ShowWindow(SW_SHOW);
  2540. //GetDlgItem(IDC_ALARMLED4)->ShowWindow(SW_SHOW);
  2541. //GetDlgItem(IDC_ALARMLED5)->ShowWindow(SW_SHOW);
  2542. //GetDlgItem(IDC_ALARMLED6)->ShowWindow(SW_SHOW);
  2543. //GetDlgItem(IDC_ALARMLED7)->ShowWindow(SW_SHOW);
  2544. //GetDlgItem(IDC_ALARMLED8)->ShowWindow(SW_SHOW);
  2545. //GetDlgItem(IDC_ALARMLED9)->ShowWindow(SW_SHOW);
  2546. //GetDlgItem(IDC_ALARMLED10)->ShowWindow(SW_SHOW);
  2547. //GetDlgItem(IDC_ALARMLED11)->ShowWindow(SW_SHOW);
  2548. //GetDlgItem(IDC_ALARMLED12)->ShowWindow(SW_SHOW);
  2549. //GetDlgItem(IDC_ALARMLED13)->ShowWindow(SW_SHOW);
  2550. //GetDlgItem(IDC_ALARMLED14)->ShowWindow(SW_SHOW);
  2551. //GetDlgItem(IDC_ALARMLED15)->ShowWindow(SW_SHOW);
  2552. //GetDlgItem(IDC_ALARMLED16)->ShowWindow(SW_SHOW);
  2553. //2006-01-11
  2554. //GetDlgItem(IDC_STATIC0)->ShowWindow(SW_SHOW);
  2555. //GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);
  2556. GetDlgItem(IDC_STATIC2)->ShowWindow(SW_SHOW);
  2557. //GetDlgItem(IDC_STATIC3)->ShowWindow(SW_SHOW);
  2558. //GetDlgItem(IDC_STATIC4)->ShowWindow(SW_SHOW);
  2559. //GetDlgItem(IDC_STATIC5)->ShowWindow(SW_SHOW);
  2560. //GetDlgItem(IDC_STATIC6)->ShowWindow(SW_SHOW);
  2561. //GetDlgItem(IDC_STATIC7)->ShowWindow(SW_SHOW);
  2562. //GetDlgItem(IDC_STATIC8)->ShowWindow(SW_SHOW);
  2563. //GetDlgItem(IDC_STATIC9)->ShowWindow(SW_SHOW);
  2564. //GetDlgItem(IDC_STATIC10)->ShowWindow(SW_SHOW);
  2565. //GetDlgItem(IDC_STATIC11)->ShowWindow(SW_SHOW);
  2566. //GetDlgItem(IDC_STATIC12)->ShowWindow(SW_SHOW);
  2567. //GetDlgItem(IDC_STATIC13)->ShowWindow(SW_SHOW);
  2568. //GetDlgItem(IDC_STATIC14)->ShowWindow(SW_SHOW);
  2569. //GetDlgItem(IDC_STATIC15)->ShowWindow(SW_SHOW);
  2570. //GetDlgItem(IDC_STATIC16)->ShowWindow(SW_SHOW);
  2571. GetDlgItem(IDC_STATIC17)->ShowWindow(SW_SHOW);
  2572. }
  2573. else
  2574. {
  2575. //云台
  2576. GetDlgItem(IDC_BUTTONUP)->ShowWindow(SW_HIDE);
  2577. GetDlgItem(IDC_BUTTONLEFT)->ShowWindow(SW_HIDE);
  2578. GetDlgItem(IDC_BUTTONRIGHT)->ShowWindow(SW_HIDE);
  2579. GetDlgItem(IDC_BUTTONDOWN)->ShowWindow(SW_HIDE);
  2580. GetDlgItem(IDC_BUTTONTJLEFT)->ShowWindow(SW_HIDE);
  2581. GetDlgItem(IDC_BUTTONTJRIGHT)->ShowWindow(SW_HIDE);
  2582. GetDlgItem(IDC_BUTTONJJLEFT)->ShowWindow(SW_HIDE);
  2583. GetDlgItem(IDC_BUTTONJJRIGHT)->ShowWindow(SW_HIDE);
  2584. GetDlgItem(IDC_BUTTONGQLEFT)->ShowWindow(SW_HIDE);
  2585. GetDlgItem(IDC_BUTTONGQRIGHT)->ShowWindow(SW_HIDE);
  2586. GetDlgItem(IDC_YZD)->ShowWindow(SW_HIDE);
  2587. GetDlgItem(IDC_BUTTONYZW)->ShowWindow(SW_HIDE);
  2588. //预览
  2589. GetDlgItem(IDC_PLAY)->ShowWindow(SW_HIDE);
  2590. //系统设置
  2591. GetDlgItem(IDC_SYSTEMCFG)->ShowWindow(SW_HIDE);
  2592. //抓图
  2593. GetDlgItem(IDC_GETPICTURE)->ShowWindow(SW_HIDE);
  2594. //录像
  2595. GetDlgItem(IDC_RECORD)->ShowWindow(SW_HIDE);
  2596. //时间日志
  2597. GetDlgItem(IDC_EVENTLIST)->ShowWindow(SW_HIDE);
  2598. //布防,撤防
  2599. GetDlgItem(IDC_BUTTONALARMSET)->ShowWindow(SW_HIDE);
  2600. //语音对讲
  2601. GetDlgItem(IDC_AUDIOEXCHANGE)->ShowWindow(SW_HIDE);
  2602. //回放
  2603. GetDlgItem(IDC_VIDEOFILEPLAY)->ShowWindow(SW_HIDE);
  2604. //亮度
  2605. GetDlgItem(IDC_SLIDERLD)->ShowWindow(SW_HIDE);
  2606. //对比度
  2607. GetDlgItem(IDC_SLIDERDBD)->ShowWindow(SW_HIDE);
  2608. //饱和度
  2609. GetDlgItem(IDC_SLIDERBHD)->ShowWindow(SW_HIDE);
  2610. //色度
  2611. GetDlgItem(IDC_SLIDERSD)->ShowWindow(SW_HIDE);
  2612. //音量
  2613. GetDlgItem(IDC_SLIDERYL)->ShowWindow(SW_HIDE);
  2614. //恢复默认值
  2615. GetDlgItem(IDC_BUTTONPOLL)->ShowWindow(SW_HIDE);
  2616. //退出系统
  2617. GetDlgItem(IDC_EXIT)->ShowWindow(SW_HIDE);
  2618. //窗口画面数
  2619. GetDlgItem(IDC_COMBOWNDNUM)->ShowWindow(SW_HIDE);
  2620. GetDlgItem(IDC_LED1)->ShowWindow(SW_HIDE);
  2621. GetDlgItem(IDC_LED2)->ShowWindow(SW_HIDE);
  2622. GetDlgItem(IDC_LED3)->ShowWindow(SW_HIDE);
  2623. GetDlgItem(IDC_LED4)->ShowWindow(SW_HIDE);
  2624. GetDlgItem(IDC_LED5)->ShowWindow(SW_HIDE);
  2625. GetDlgItem(IDC_LED6)->ShowWindow(SW_HIDE);
  2626. GetDlgItem(IDC_LED7)->ShowWindow(SW_HIDE);
  2627. GetDlgItem(IDC_LED8)->ShowWindow(SW_HIDE);
  2628. GetDlgItem(IDC_LED9)->ShowWindow(SW_HIDE);
  2629. GetDlgItem(IDC_LED10)->ShowWindow(SW_HIDE);
  2630. GetDlgItem(IDC_LED11)->ShowWindow(SW_HIDE);
  2631. GetDlgItem(IDC_LED12)->ShowWindow(SW_HIDE);
  2632. GetDlgItem(IDC_LED13)->ShowWindow(SW_HIDE);
  2633. GetDlgItem(IDC_LED14)->ShowWindow(SW_HIDE);
  2634. GetDlgItem(IDC_LED15)->ShowWindow(SW_HIDE);
  2635. GetDlgItem(IDC_LED16)->ShowWindow(SW_HIDE);
  2636. GetDlgItem(IDC_ALARMLED1)->ShowWindow(SW_HIDE);
  2637. GetDlgItem(IDC_ALARMLED2)->ShowWindow(SW_HIDE);
  2638. GetDlgItem(IDC_ALARMLED3)->ShowWindow(SW_HIDE);
  2639. GetDlgItem(IDC_ALARMLED4)->ShowWindow(SW_HIDE);
  2640. GetDlgItem(IDC_ALARMLED5)->ShowWindow(SW_HIDE);
  2641. GetDlgItem(IDC_ALARMLED6)->ShowWindow(SW_HIDE);
  2642. GetDlgItem(IDC_ALARMLED7)->ShowWindow(SW_HIDE);
  2643. GetDlgItem(IDC_ALARMLED8)->ShowWindow(SW_HIDE);
  2644. GetDlgItem(IDC_ALARMLED9)->ShowWindow(SW_HIDE);
  2645. GetDlgItem(IDC_ALARMLED10)->ShowWindow(SW_HIDE);
  2646. GetDlgItem(IDC_ALARMLED11)->ShowWindow(SW_HIDE);
  2647. GetDlgItem(IDC_ALARMLED12)->ShowWindow(SW_HIDE);
  2648. GetDlgItem(IDC_ALARMLED13)->ShowWindow(SW_HIDE);
  2649. GetDlgItem(IDC_ALARMLED14)->ShowWindow(SW_HIDE);
  2650. GetDlgItem(IDC_ALARMLED15)->ShowWindow(SW_HIDE);
  2651. GetDlgItem(IDC_ALARMLED16)->ShowWindow(SW_HIDE);
  2652. //2006-01-11
  2653. GetDlgItem(IDC_STATIC0)->ShowWindow(SW_HIDE);
  2654. GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);
  2655. GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);
  2656. GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);
  2657. GetDlgItem(IDC_STATIC4)->ShowWindow(SW_HIDE);
  2658. GetDlgItem(IDC_STATIC5)->ShowWindow(SW_HIDE);
  2659. GetDlgItem(IDC_STATIC6)->ShowWindow(SW_HIDE);
  2660. GetDlgItem(IDC_STATIC7)->ShowWindow(SW_HIDE);
  2661. GetDlgItem(IDC_STATIC8)->ShowWindow(SW_HIDE);
  2662. GetDlgItem(IDC_STATIC9)->ShowWindow(SW_HIDE);
  2663. GetDlgItem(IDC_STATIC10)->ShowWindow(SW_HIDE);
  2664. GetDlgItem(IDC_STATIC11)->ShowWindow(SW_HIDE);
  2665. GetDlgItem(IDC_STATIC12)->ShowWindow(SW_HIDE);
  2666. GetDlgItem(IDC_STATIC13)->ShowWindow(SW_HIDE);
  2667. GetDlgItem(IDC_STATIC14)->ShowWindow(SW_HIDE);
  2668. GetDlgItem(IDC_STATIC15)->ShowWindow(SW_HIDE);
  2669. GetDlgItem(IDC_STATIC16)->ShowWindow(SW_HIDE);
  2670. GetDlgItem(IDC_STATIC17)->ShowWindow(SW_HIDE);
  2671. }
  2672. }
  2673. void CNewclientDlg::F_ShowVideoParams()
  2674. {
  2675. m_ld.SetPos(m_ClientParam.m_VideoInfo[m_nActiveWndNumber].m_iBrightness);
  2676. m_sd.SetPos(m_ClientParam.m_VideoInfo[m_nActiveWndNumber].m_iHue);
  2677. m_bhd.SetPos(m_ClientParam.m_VideoInfo[m_nActiveWndNumber].m_iSaturation);
  2678. m_dbd.SetPos(m_ClientParam.m_VideoInfo[m_nActiveWndNumber].m_iContrast);
  2679. m_yl.SetPos(m_ClientParam.m_Volume);
  2680. }
  2681. void CNewclientDlg::F_NextPage()
  2682. {
  2683. int itemp,i;
  2684. itemp = numberpos % WINDOWNUM;
  2685. if ((itemp > 0) || (numberpos == m_nSurveillanceNumber))//只有当numberpos是WINDOWNUM的整数倍时才有可能按next
  2686. return;
  2687. for(i = 0; i < MAXVIEWNUM; i++)
  2688. {
  2689. if( (m_MyOutput[i].m_iPlayhandle >= 0) || (m_MyOutput[i].m_bFileSave) )
  2690. F_StopClientRecord(i);
  2691. }
  2692. if( (m_ClientParam.m_bEnlarged) || (m_ClientParam.m_bFullScreen) )
  2693. {
  2694. ArrayWindow(0, WINDOWNUM); //窗口放大状态时,循环到下一画面,恢复原窗口数;
  2695. MoveCurWin(WINDOWNUM,0);
  2696. m_ClientParam.m_bEnlarged = FALSE;
  2697. m_ClientParam.m_bFullScreen = FALSE;
  2698. }
  2699. itemp = m_nSurveillanceNumber - numberpos;
  2700. if(itemp > WINDOWNUM)
  2701. itemp = WINDOWNUM;
  2702. if(!m_ClientParam.m_bUseCard)
  2703. {
  2704. if(!g_bShareSound)
  2705. NET_DVR_CloseSound();
  2706. }
  2707. for(i=0;i<WINDOWNUM;i++)
  2708. {
  2709. if(g_bShareSound)
  2710. NET_DVR_CloseSoundShare(m_MyOutput[i].m_iPlayhandle);
  2711. m_MyOutput[i].StopNet();
  2712. }
  2713. for(i=0;i<itemp;i++)
  2714. {
  2715. if (i+numberpos < MAXNUMBER)
  2716. {
  2717. if(m_ClientParam.m_bUseCard)
  2718. m_MyOutput[i].StartCard(&m_Selipinfo[i+numberpos]);
  2719. else
  2720. {
  2721. m_MyOutput[i].StartNet(&m_Selipinfo[i+numberpos]);
  2722. if(g_bShareSound && (m_MyOutput[i].m_iPlayhandle >= 0))
  2723. {
  2724. m_ClientParam.m_bPlaySound[i] = TRUE;
  2725. }
  2726. }
  2727. Sleep(100);
  2728. }
  2729. }
  2730. itemp = m_nSurveillanceNumber - numberpos;
  2731. if(itemp <= WINDOWNUM)
  2732. {
  2733. numberpos = m_nSurveillanceNumber;
  2734. m_ClientParam.m_bNextPage = FALSE;
  2735. }
  2736. else
  2737. {
  2738. numberpos += WINDOWNUM;
  2739. }
  2740. m_ClientParam.m_bFrontPage = TRUE;
  2741. UpdateData(FALSE);
  2742. }
  2743. void CNewclientDlg::F_FrontPage()
  2744. {
  2745. int itemp,i;
  2746. if(numberpos <= WINDOWNUM)
  2747. return;
  2748. for(i = 0; i < MAXVIEWNUM; i++)
  2749. {
  2750. if( (m_MyOutput[i].m_iPlayhandle >= 0) || (m_MyOutput[i].m_bFileSave) )
  2751. F_StopClientRecord(i);
  2752. }
  2753. if( (m_ClientParam.m_bEnlarged) || (m_ClientParam.m_bFullScreen) )
  2754. {
  2755. ArrayWindow(0, WINDOWNUM); //窗口放大状态时,循环到下一画面,恢复原窗口数;
  2756. MoveCurWin(WINDOWNUM,0);
  2757. m_ClientParam.m_bEnlarged = FALSE;
  2758. m_ClientParam.m_bFullScreen = FALSE;
  2759. }
  2760. if(numberpos > WINDOWNUM)
  2761. {
  2762. if(numberpos < 2*WINDOWNUM)
  2763. {
  2764. itemp = 0;
  2765. }
  2766. else
  2767. {
  2768. i = numberpos % WINDOWNUM;
  2769. if (i == 0)
  2770. itemp = numberpos - 2*WINDOWNUM ;
  2771. else
  2772. itemp = numberpos - WINDOWNUM -i;
  2773. }
  2774. if(!m_ClientParam.m_bUseCard)
  2775. {
  2776. if(!g_bShareSound)
  2777. NET_DVR_CloseSound();
  2778. }
  2779. //itemp:确定上一页要播放监控点的起始编号;
  2780. for(i=0;i<WINDOWNUM;i++)
  2781. {
  2782. if(g_bShareSound)
  2783. NET_DVR_CloseSoundShare(m_MyOutput[i].m_iPlayhandle);
  2784. m_MyOutput[i].StopNet();
  2785. }
  2786. for(i=0;i<WINDOWNUM;i++)
  2787. {
  2788. if(itemp+i < MAXNUMBER)
  2789. {
  2790. if(m_ClientParam.m_bUseCard)
  2791. m_MyOutput[i].StartCard(&m_Selipinfo[i+itemp]);
  2792. else
  2793. {
  2794. m_MyOutput[i].StartNet(&m_Selipinfo[i+itemp]);
  2795. if(g_bShareSound && (m_MyOutput[i].m_iPlayhandle >= 0))
  2796. {
  2797. m_ClientParam.m_bPlaySound[i] = TRUE;
  2798. }
  2799. }
  2800. Sleep(100);
  2801. }
  2802. }
  2803. if (numberpos <= 2*WINDOWNUM)
  2804. {
  2805. numberpos = WINDOWNUM;
  2806. m_ClientParam.m_bFrontPage = FALSE; //没有上一页
  2807. }
  2808. else
  2809. {
  2810. i = numberpos % WINDOWNUM;
  2811. if(i == 0)
  2812. numberpos -= WINDOWNUM;
  2813. else
  2814. numberpos -= i;
  2815. }
  2816. }
  2817. m_ClientParam.m_bNextPage = TRUE;
  2818. UpdateData(FALSE);
  2819. }
  2820. void CNewclientDlg::F_CyclePause()
  2821. {
  2822. if(!m_ClientParam.m_bPaused)
  2823. {
  2824. m_ClientParam.m_bPaused = TRUE;
  2825. if(cycletimer)
  2826. {
  2827. KillTimer(CYCLE_TIMER);
  2828. cycletimer = 0;
  2829. }
  2830. }
  2831. else
  2832. {
  2833. m_bChangePage = TRUE;
  2834. F_CyclePlay();
  2835. if(cycletimer == 0)
  2836. cycletimer = SetTimer(CYCLE_TIMER,m_ClientParam.m_iCycleTime*1000,NULL);
  2837. m_ClientParam.m_bPaused = FALSE;
  2838. }
  2839. }
  2840. void CNewclientDlg::F_CyclePlay()
  2841. {
  2842. int itemp,i,j;
  2843. TRACE("F_CyclePlay");
  2844. if (m_nSurveillanceNumber <= WINDOWNUM)
  2845. return;
  2846. m_bChangePage = FALSE;
  2847. if( (m_ClientParam.m_bEnlarged) || (m_ClientParam.m_bFullScreen) )
  2848. {
  2849. if(m_ClientParam.m_bFullScreen)
  2850. {
  2851. F_EndFullScreen();
  2852. }
  2853. ArrayWindow(0, WINDOWNUM); //窗口放大状态时,循环到下一画面,恢复原窗口数;
  2854. MoveCurWin(WINDOWNUM,0);
  2855. m_ClientParam.m_bEnlarged = FALSE;
  2856. m_ClientParam.m_bFullScreen = FALSE;
  2857. }
  2858. if (m_nSurveillanceNumber == numberpos) //循环已到了最后一页,又开始第一页;
  2859. itemp = WINDOWNUM;
  2860. else
  2861. {
  2862. itemp = m_nSurveillanceNumber - numberpos;
  2863. if (itemp > WINDOWNUM)
  2864. itemp = WINDOWNUM;
  2865. }
  2866. if (m_nSurveillanceNumber == numberpos)
  2867. j = 0;
  2868. else
  2869. j = numberpos;
  2870. if(!m_ClientParam.m_bUseCard)
  2871. {
  2872. if(!g_bShareSound)
  2873. NET_DVR_CloseSound();
  2874. }
  2875. //如果一个循环结束,可能不是从9->9,或许是9->i,所以需要对对(9-i)做ClientStop
  2876. //循环到最后一个画面,要播放的窗口数可能小于WINDOWNUM,所以在播放最后一个画面时,关闭多余的播放窗口;
  2877. for(i=0;i<WINDOWNUM;i++)
  2878. {
  2879. // TRACE("cycle stopplay %d", m_MyOutput[i].m_iPlayhandle);
  2880. if(g_bShareSound)
  2881. NET_DVR_CloseSoundShare(m_MyOutput[i].m_iPlayhandle);
  2882. m_MyOutput[i].StopNet();
  2883. // TRACE("StopNet");
  2884. }
  2885. for(i=0;i<itemp;i++)
  2886. {
  2887. if (i+j < MAXNUMBER)
  2888. {
  2889. // TRACE("play sel = %d", i+j);
  2890. if(m_ClientParam.m_bUseCard)
  2891. m_MyOutput[i].StartCard(&m_Selipinfo[i+j]);
  2892. else
  2893. {
  2894. m_MyOutput[i].StartNet(&m_Selipinfo[i+j]);
  2895. if(g_bShareSound && (m_MyOutput[i].m_iPlayhandle >= 0))
  2896. {
  2897. m_ClientParam.m_bPlaySound[i] = TRUE;
  2898. }
  2899. }
  2900. Sleep(100);
  2901. // TRACE("cycle startplay %d", m_MyOutput[i].m_iPlayhandle);
  2902. }
  2903. }
  2904. // MyInvalidate();
  2905. itemp = m_nSurveillanceNumber - numberpos;
  2906. if(itemp ==0)
  2907. {
  2908. numberpos = WINDOWNUM;
  2909. }
  2910. else if(itemp <= WINDOWNUM)
  2911. {
  2912. numberpos = m_nSurveillanceNumber;
  2913. }
  2914. else
  2915. {
  2916. numberpos += WINDOWNUM;
  2917. }
  2918. m_bChangePage = TRUE;
  2919. UpdateData(FALSE);
  2920. }
  2921. void CNewclientDlg::OnGetpicture()
  2922. {
  2923. //F_DeleteClientRecordFile();
  2924. //return;
  2925. // TODO: Add your control notification handler code here
  2926. RECT rc,rc2;
  2927. GetClientRect(&rc);
  2928. if (!getpic.IsExisted())
  2929. {
  2930. getpic.Create(IDD_DLG_GETCAPTURE, NULL);
  2931. //::GetClientRect(getpic.m_hWnd, &rc2);
  2932. //::SetWindowPos(getpic.m_hWnd, wndTopMost, (rc.left+rc.right)/2, (rc.top+rc.bottom)/2, (rc.left+rc.right)/2+300, (rc.top+rc.bottom)/2+200, SWP_SHOWWINDOW);
  2933. CRect rectFrame,rect;
  2934. this->GetWindowRect( rectFrame );
  2935. rect.left = rectFrame.left+rectFrame.Width()/2-340/2;
  2936. rect.top = rectFrame.top+rectFrame.Height()/2-180/2;
  2937. rect.right = rect.left+340;
  2938. rect.bottom = rect.top+180;
  2939. getpic.MoveWindow( rect );
  2940. getpic.ShowWindow(SW_SHOW);
  2941. }
  2942. else
  2943. {
  2944. //::GetClientRect(getpic.m_hWnd, &rc2);
  2945. //::SetWindowPos(getpic.m_hWnd, wndTopMost, (rc.left+rc.right)/2, (rc.top+rc.bottom)/2, (rc2.right-rc2.left)+8, (rc2.bottom-rc2.top)+24, SWP_SHOWWINDOW);
  2946. CRect rectFrame,rect;
  2947. this->GetWindowRect( rectFrame );
  2948. rect.left = rectFrame.left+rectFrame.Width()/2-340/2;
  2949. rect.top = rectFrame.top+rectFrame.Height()/2-180/2;
  2950. rect.right = rect.left+340;
  2951. rect.bottom = rect.top+180;
  2952. //getpic.MoveWindow( rect );
  2953. getpic.ShowWindow(SW_SHOW);
  2954. }
  2955. }
  2956. void CNewclientDlg::OnRecord()
  2957. {
  2958. // TODO: Add your control notification handler code here
  2959. int i = m_nActiveWndNumber;
  2960. if(m_MyOutput[i].m_bIsAutoSave || m_ClientParam.m_bCycling)
  2961. return;
  2962. if( (m_MyOutput[i].m_iPlayhandle >= 0) && (!m_MyOutput[i].m_bFileSave) )
  2963. {
  2964. if(F_MakeDir())
  2965. {
  2966. F_StartClientRecord(i);
  2967. }
  2968. }
  2969. else if(m_MyOutput[i].m_bFileSave)
  2970. {
  2971. F_StopClientRecord(i);
  2972. }
  2973. }
  2974. BOOL CNewclientDlg::F_MakeDir()
  2975. {
  2976. CString sTemp;
  2977. DWORD dirattr;
  2978. CTime time;
  2979. time = CTime::GetCurrentTime();
  2980. sTemp.Format("%c:\\mpeg4record\\", m_cCurrentRecordDriver);
  2981. dirattr = GetFileAttributes(sTemp);
  2982. if(dirattr == FILE_ATTRIBUTE_DIRECTORY)
  2983. {
  2984. sTemp.Format("%c:\\mpeg4record\\%4d-%02d-%02d\\", m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay());
  2985. dirattr=GetFileAttributes(sTemp);
  2986. if(dirattr == FILE_ATTRIBUTE_DIRECTORY)
  2987. {
  2988. m_ClientParam.m_csClientRecordPath.Format("%s",sTemp);
  2989. TRACE("已经创建了目录%s", sTemp);
  2990. return TRUE;
  2991. }
  2992. else
  2993. {
  2994. if(!CreateDirectory(sTemp, NULL))
  2995. {
  2996. MessageBox("创建年月日目录失败!", "温馨提示", MB_ICONINFORMATION);
  2997. return FALSE;
  2998. }
  2999. else
  3000. {
  3001. m_ClientParam.m_csClientRecordPath.Format("%s",sTemp);
  3002. TRACE("在已有的目录%c:\\mpeg4record下创建子目录%4d-%02d-%02d", m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay());
  3003. return TRUE;
  3004. }
  3005. }
  3006. }
  3007. if(!CreateDirectory(sTemp, NULL))
  3008. {
  3009. TRACE("创建mpeg4record目录失败!");
  3010. return FALSE;
  3011. }
  3012. sTemp.Format("%c:\\mpeg4record\\%4d-%02d-%02d\\",m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay());
  3013. if(!CreateDirectory(sTemp, NULL))
  3014. {
  3015. return FALSE;
  3016. }
  3017. m_ClientParam.m_csClientRecordPath.Format("%s",sTemp);
  3018. TRACE("先创建%c:\\mpeg4record目录,再创建子目录%4d-%02d-%02d", m_cCurrentRecordDriver, time.GetYear(), time.GetMonth(), time.GetDay());
  3019. return TRUE;
  3020. }
  3021. void CNewclientDlg::F_StartClientRecord(int iRecordWndIndex)
  3022. {
  3023. int i;
  3024. char cFilename[256];
  3025. i = iRecordWndIndex;
  3026. TRACE("Start m_MyOutput[%d] Client Record", i);
  3027. CTime time = CTime::GetCurrentTime();
  3028. sprintf(cFilename, "%s%s_%02d_%4d%02d%02d_%02d%02d%02d.mp4", m_ClientParam.m_csClientRecordPath, g_RecordInfo[i].sDvsName, g_RecordInfo[i].nDvrChannel+1, \
  3029. time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond() );
  3030. int nNum = 0;
  3031. bool bRet = false;
  3032. for( int k=0;k<128;k++ )
  3033. {
  3034. if( m_MyOutput[k].m_csIP==g_RecordInfo[i].sDvsName && m_MyOutput[k].m_iChannel==g_RecordInfo[i].nDvrChannel+1 )
  3035. {
  3036. i=k;
  3037. break;
  3038. }
  3039. }
  3040. while( !bRet )
  3041. {
  3042. if( m_MyOutput[i].m_iPlayhandle<0 )
  3043. break;
  3044. bRet = NET_DVR_SaveRealData(m_MyOutput[i].m_iPlayhandle, cFilename);
  3045. Sleep( 1000 );
  3046. if( nNum++ >= 50 )
  3047. return;
  3048. }
  3049. TRACE("Client Record Filename = %s", cFilename);
  3050. m_MyOutput[i].m_lChangeFileNameTime = time.GetTime() + m_ClientParam.m_iRecordFileInterval * 60;
  3051. m_MyOutput[i].m_bFileSave = TRUE;
  3052. //m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_ON,CLed::LED_ROUND);
  3053. g_RecordInfo[iRecordWndIndex].bCapture = true;
  3054. }
  3055. void CNewclientDlg::F_StopClientRecord(int iRecordWndIndex)
  3056. {
  3057. int i = iRecordWndIndex;
  3058. int nNum = 0;
  3059. bool bRet = false;
  3060. for( int k=0;k<128;k++ )
  3061. {
  3062. if( m_MyOutput[k].m_csIP==g_RecordInfo[i].sDvsName && m_MyOutput[k].m_iChannel==g_RecordInfo[i].nDvrChannel+1 )
  3063. {
  3064. i=k;
  3065. break;
  3066. }
  3067. }
  3068. while( !bRet )
  3069. {
  3070. if( m_MyOutput[i].m_iPlayhandle<0 )
  3071. break;
  3072. bRet = NET_DVR_StopSaveRealData(m_MyOutput[i].m_iPlayhandle);
  3073. Sleep( 1000 );
  3074. if( bRet )
  3075. {
  3076. m_MyOutput[i].m_bFileSave = FALSE;
  3077. g_RecordInfo[iRecordWndIndex].bCapture = false;
  3078. }
  3079. if( nNum++ >= 50 )
  3080. break;
  3081. }
  3082. }
  3083. /*
  3084. void CNewclientDlg::OnHide()
  3085. {
  3086. // TODO: Add your control notification handler code here
  3087. ShowWindow(SW_MINIMIZE);
  3088. }
  3089. */
  3090. void CNewclientDlg::OnEventlist()
  3091. {
  3092. // TODO: Add your control notification handler code here
  3093. int i;
  3094. CEventLog EventLogDlg;
  3095. EventLogDlg.DoModal();
  3096. SetEvent(hVideoBeeper);
  3097. for(i = 0; i < MAXVIEWNUM; i++)
  3098. {
  3099. if(m_ClientParam.m_iAlarmHandle[i] >= 0)
  3100. {
  3101. //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_GREEN,CLed::LED_ON,CLed::LED_ROUND);
  3102. }
  3103. //else
  3104. //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND);
  3105. }
  3106. for(i = 0; i < MAXALARMIN; i++)
  3107. {
  3108. alarminfo[i].m_csIP.Format(_T(""));
  3109. alarminfo[i].m_csUsername.Format(_T(""));
  3110. alarminfo[i].m_csPassword.Format(_T(""));
  3111. alarminfo[i].m_iChannel = -1;
  3112. alarminfo[i].m_iAlarmLevel = -1;
  3113. alarminfo[i].m_iAlarmType = -1;
  3114. alarminfo[i].m_iPortIndex = -1;
  3115. alarminfo[i].m_wServerPort = 8000;
  3116. }
  3117. m_iAlarmNumber = 0;
  3118. }
  3119. void CNewclientDlg::OnButtonalarmset()
  3120. {
  3121. // TODO: Add your control notification handler code here
  3122. int i;
  3123. CSetAlarm SetAlarmDlg;
  3124. SetAlarmDlg.DoModal();
  3125. if(SetAlarmDlg.m_bOK)
  3126. {
  3127. for(i = 0; i < MAXVIEWNUM; i++)
  3128. {
  3129. if(m_ClientParam.m_iAlarmHandle[i] >= 0)
  3130. {
  3131. //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_GREEN,CLed::LED_ON,CLed::LED_ROUND);
  3132. }
  3133. else
  3134. {
  3135. //m_pAlarmLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_DISABLED,CLed::LED_ROUND);
  3136. }
  3137. }
  3138. }
  3139. }
  3140. void CNewclientDlg::OnVideofileplay()
  3141. {
  3142. // TODO: Add your control notification handler code here
  3143. CPlayBack PlayBackDlg;
  3144. g_pNewclientDlg = this;
  3145. PlayBackDlg.DoModal();
  3146. }
  3147. BOOL CNewclientDlg::F_JudgeDiskFull()
  3148. {
  3149. int i;
  3150. ULARGE_INTEGER FreeSpace,CallerSpace,TotalSpace;
  3151. CString csRootPath;
  3152. for(i = m_ClientParam.m_iStartRecordDriver; i < m_ClientParam.m_iEndRecordDriver + 1; i++)
  3153. {
  3154. csRootPath.Format("%c%s",m_cHardDriver[i],":\\"); //从录像起始驱动器开始
  3155. GetDiskFreeSpaceEx(csRootPath,&CallerSpace,&TotalSpace,&FreeSpace);
  3156. if(CallerSpace.QuadPart > MINSPACE)
  3157. {
  3158. m_cCurrentRecordDriver = m_cHardDriver[i];
  3159. // TRACE("m_cCurrentRecordDriver = %c:\\", m_cCurrentRecordDriver);
  3160. m_ClientParam.m_bAllDiskFull = FALSE;
  3161. return TRUE;
  3162. }
  3163. }
  3164. m_ClientParam.m_bAllDiskFull = TRUE;
  3165. return FALSE;
  3166. }
  3167. void CNewclientDlg::OnTimer(UINT nIDEvent)
  3168. {
  3169. // TODO: Add your message handler code here and/or call default
  3170. //在此调用此函数重置时区,以修正时区调整之后由于程序只在初始化时获取时区而造成不能随之调整的问题
  3171. _tzset();
  3172. time_t lCurrentTime;
  3173. CString csRootPath;
  3174. CString csTemp;
  3175. int i,j;
  3176. CTime time1 = CTime::GetCurrentTime();
  3177. //-1与星期相对应
  3178. int iWeekday = time1.GetDayOfWeek() - 1;
  3179. WORD iNowTime = time1.GetHour() * 100 + time1.GetMinute();
  3180. NET_DVR_TIME CurTime;
  3181. CurTime.dwYear = time1.GetYear();
  3182. CurTime.dwMonth = time1.GetMonth();
  3183. CurTime.dwDay = time1.GetDay();
  3184. CurTime.dwHour = time1.GetHour();
  3185. CurTime.dwMinute = time1.GetMinute();
  3186. CurTime.dwSecond = time1.GetSecond();
  3187. HANDLE hSnap = NULL;
  3188. switch(nIDEvent)
  3189. {
  3190. case CYCLE_TIMER:
  3191. if(m_bChangePage)
  3192. F_CyclePlay();
  3193. break;
  3194. case FREESPACE_TIMER:
  3195. csRootPath.Format("%c:\\", m_cCurrentRecordDriver);
  3196. ULARGE_INTEGER FreeSpace,CallerSpace,TotalSpace;
  3197. GetDiskFreeSpaceEx(csRootPath,&CallerSpace,&TotalSpace,&FreeSpace);
  3198. m_ClientParam.m_bAllDiskFull = FALSE;
  3199. if(CallerSpace.QuadPart < MINSPACE)
  3200. {
  3201. csTemp.Format("%4d-%02d-%02d %02d:%02d:%02d 硬盘驱动器%c已满", CurTime.dwYear, CurTime.dwMonth, CurTime.dwDay, CurTime.dwHour, CurTime.dwMinute, CurTime.dwSecond, m_cCurrentRecordDriver);
  3202. TRACE(csTemp);
  3203. if(!F_JudgeDiskFull()) //所有硬盘都满,删除8个最早的录像文件
  3204. {
  3205. //if(m_ClientParam.m_bCycleRecord)
  3206. //{
  3207. //F_DeleteClientRecordFile();
  3208. //}
  3209. //else
  3210. {
  3211. for(i = 0; i < MAXVIEWNUM; i++)
  3212. {
  3213. if( (m_MyOutput[i].m_iPlayhandle >= 0) && (m_MyOutput[i].m_bFileSave) )
  3214. {
  3215. F_StopClientRecord(i);
  3216. }
  3217. }
  3218. F_DeleteClientRecordFile();// add 2012-03-13
  3219. //MessageBox("客户端录像硬盘驱动器已满,无法继续录像!", "温馨提示", MB_ICONINFORMATION);
  3220. return;
  3221. }
  3222. }
  3223. else
  3224. { //其他分区还有空间,存放到其他分区
  3225. if(F_MakeDir())
  3226. {
  3227. TRACE("客户端录像文件存放到%c分区", m_cCurrentRecordDriver);
  3228. for(i = 0; i < MAXVIEWNUM; i++)
  3229. {
  3230. if( (m_MyOutput[i].m_iPlayhandle >= 0) && (m_MyOutput[i].m_bFileSave) )
  3231. F_ChangeRecordFileName(i);
  3232. }
  3233. }
  3234. }
  3235. }
  3236. break;
  3237. case FILEINTERVAL_TIMER:
  3238. //////////////////////
  3239. //////////////////////
  3240. for(i = 0; i < MAXVIEWNUM; i++)
  3241. {
  3242. if( (m_MyOutput[i].m_iPlayhandle >= 0) && (m_MyOutput[i].m_bFileSave) )
  3243. {
  3244. lCurrentTime = time1.GetTime();
  3245. if(lCurrentTime - m_MyOutput[i].m_lChangeFileNameTime >= 0)
  3246. {
  3247. TRACE("更改客户端录象文件名时间到");
  3248. if(F_MakeDir())
  3249. F_ChangeRecordFileName(i);
  3250. }
  3251. }
  3252. }
  3253. break;
  3254. case AUTORECORD_TIMER:
  3255. if(m_ClientParam.m_bCycling)
  3256. return; //循环播放客户端不允许录像
  3257. if(!m_ClientParam.m_bAutoRecord)
  3258. {
  3259. for(j = 0; j < MAXVIEWNUM; j++)
  3260. {
  3261. if(m_MyOutput[j].m_bIsAutoSave)
  3262. {
  3263. F_StopClientRecord(j);
  3264. m_MyOutput[j].m_bIsAutoSave = FALSE;
  3265. }
  3266. }
  3267. }
  3268. else
  3269. {
  3270. for(i = 0; i < 4; i++)
  3271. {
  3272. if( (iNowTime >= m_ClientParam.m_ClientRecordTime[iWeekday][i].m_iStartTime) &&
  3273. (iNowTime < m_ClientParam.m_ClientRecordTime[iWeekday][i].m_iStopTime) )
  3274. {
  3275. for(j = 0; j < MAXVIEWNUM; j++)
  3276. {
  3277. if(m_MyOutput[j].m_iPlayhandle >= 0)
  3278. {
  3279. //2008-02-25 既没有在自动录像又没有在手动录像才能开始自动录像
  3280. if(!m_MyOutput[j].m_bIsAutoSave && !m_MyOutput[j].m_bFileSave)
  3281. {
  3282. if(m_ClientParam.m_bAllDiskFull)
  3283. {
  3284. return;
  3285. }
  3286. if(F_MakeDir())
  3287. {
  3288. F_StartClientRecord(j);
  3289. m_MyOutput[j].m_bIsAutoSave = TRUE;
  3290. }
  3291. }
  3292. }
  3293. }
  3294. break;
  3295. }
  3296. }
  3297. //2008-02-25 当前时间不在设定的范围内要将开始的自动录像停掉
  3298. if (i == 4)
  3299. {
  3300. for(j = 0; j < MAXVIEWNUM; j++)
  3301. {
  3302. if(m_MyOutput[j].m_bIsAutoSave)
  3303. {
  3304. F_StopClientRecord(j);
  3305. m_MyOutput[j].m_bIsAutoSave = FALSE;
  3306. }
  3307. }
  3308. }
  3309. }
  3310. break;
  3311. case CHECKSERVER_TIMER:
  3312. if(m_ClientParam.m_iCheckServerTime == (LONG)(CurTime.dwHour*10000 + CurTime.dwMinute*100 + CurTime.dwSecond) )
  3313. {
  3314. for(i = 0; i < MAXIPNUMBER; i++)
  3315. {
  3316. if(m_Serverinfo[i].m_csServerName != "")
  3317. {
  3318. if(NET_DVR_SetDVRConfig(m_Serverinfo[i].m_lServerID, NET_DVR_SET_TIMECFG,0,&CurTime, sizeof(NET_DVR_TIME)))
  3319. {
  3320. TRACE("%4d年%02d月%02d日%02d时%02d分%02d秒进行硬盘录像机校时成功.", CurTime.dwYear, CurTime.dwMonth, CurTime.dwDay, CurTime.dwHour, CurTime.dwMinute, CurTime.dwSecond);
  3321. }
  3322. else
  3323. {
  3324. TRACE("%4d年%02d月%02d日%02d时%02d分%02d秒进行硬盘录像机校时失败.", CurTime.dwYear, CurTime.dwMonth, CurTime.dwDay, CurTime.dwHour, CurTime.dwMinute, CurTime.dwSecond);
  3325. }
  3326. }
  3327. }
  3328. }
  3329. break;
  3330. case 55:
  3331. {
  3332. DWORD dwTicks = GetTickCount();
  3333. for( int i=0;i<g_nRecordIndex;i++ )
  3334. {
  3335. int nTime=0;
  3336. //判断没移动多久了,
  3337. nTime = ( dwTicks-g_RecordInfo[i].dwNoMotionStartTime)/1000;
  3338. if( g_RecordInfo[i].bCapture && nTime > g_NoMotionTime( g_nNoMotionTime ) )
  3339. {
  3340. F_StopClientRecord(i);
  3341. }
  3342. //判断视频时间
  3343. nTime = ( dwTicks-g_RecordInfo[i].dwVideoStartTime)/1000;
  3344. if( g_RecordInfo[i].bCapture && nTime > g_VideoMaxTime( g_nVideoMaxTime ) )
  3345. {
  3346. F_StopClientRecord(i);
  3347. }
  3348. }
  3349. }
  3350. break;
  3351. case 56:
  3352. {
  3353. DWORD dwTicks = GetTickCount();
  3354. int nTime = ( dwTicks-m_dwPreviewTime)/1000;
  3355. if( nTime > 30 )
  3356. {
  3357. OnVideonetplay();
  3358. KillTimer( 56 );
  3359. }
  3360. }
  3361. break;
  3362. default:
  3363. break;
  3364. }
  3365. CDialog::OnTimer(nIDEvent);
  3366. }
  3367. bool CNewclientDlg::DeleteDirectory(CString strDir)
  3368. {
  3369. bool bRet = false;
  3370. if(strDir.IsEmpty())
  3371. return bRet;
  3372. // 首先删除文件及子文件夹
  3373. CFileFind ff;
  3374. BOOL bFound = ff.FindFile(strDir+ "\\* ", 0);
  3375. while(bFound)
  3376. {
  3377. bFound = ff.FindNextFile();
  3378. if(ff.GetFileName()== "."||ff.GetFileName()== "..")
  3379. continue;
  3380. // 去掉文件(夹)只读等属性
  3381. SetFileAttributes(ff.GetFilePath(), FILE_ATTRIBUTE_NORMAL);
  3382. if(ff.IsDirectory())
  3383. {
  3384. // 递归删除子文件夹
  3385. DeleteDirectory(ff.GetFilePath());
  3386. RemoveDirectory(ff.GetFilePath());
  3387. }
  3388. else
  3389. {
  3390. // 删除文件
  3391. bRet = true;
  3392. DeleteFile(ff.GetFilePath());
  3393. }
  3394. }
  3395. ff.Close();
  3396. // 然后删除该文件夹
  3397. RemoveDirectory(strDir);
  3398. return bRet;
  3399. }
  3400. void CNewclientDlg::F_DeleteClientRecordFile()
  3401. {
  3402. CStringArray saFilePath,saFileName;
  3403. CFileFind fdfile,fdfilemp4;
  3404. BOOL bFinded,bfilefind;
  3405. CString sDeleteDir,sTempDelete;
  3406. CString sDir;
  3407. CString sDate;
  3408. CString sFliePath,sFileName;
  3409. CTime time,temptime;
  3410. int i,deletenum = 0;
  3411. sDeleteDir.Format("0000-00-00");
  3412. sTempDelete.Format("3000-00-00");
  3413. time=CTime::GetCurrentTime();
  3414. for(i = m_ClientParam.m_iStartRecordDriver; i < (m_ClientParam.m_iEndRecordDriver + 1); i++)
  3415. {
  3416. sDir.Format("%c:\\mpeg4record\\*.*",m_cHardDriver[i]);
  3417. bFinded=fdfile.FindFile(sDir);
  3418. while (bFinded)
  3419. {
  3420. bFinded=fdfile.FindNextFile();
  3421. if (fdfile.IsDots())
  3422. {
  3423. continue;
  3424. }
  3425. if (fdfile.IsDirectory())
  3426. {
  3427. if(fdfile.GetFileName()==_T("download"))
  3428. {
  3429. continue;
  3430. }
  3431. if(fdfile.GetFileName()==_T("alarm"))
  3432. {
  3433. continue;
  3434. }
  3435. sFliePath.Format("%c:\\mpeg4record\\%s",m_cHardDriver[i],fdfile.GetFileName());
  3436. saFilePath.Add( sFliePath );
  3437. sFileName.Format("%s",fdfile.GetFileName());
  3438. sFileName.Delete( 7 );
  3439. sFileName.Delete( 4 );
  3440. saFileName.Add( sFileName );
  3441. //if( DeleteDirectory( sFileName ) )
  3442. // return;
  3443. //sFileName.Format("%c:\\mpeg4record\\%s\\*.mp4",m_cHardDriver[i],fdfile.GetFileName());
  3444. //bfilefind=fdfilemp4.FindFile(sFileName);
  3445. //if (!bfilefind)
  3446. //{
  3447. // CString sFilePath = fdfile.GetFilePath();
  3448. // RemoveDirectory(fdfile.GetFilePath());
  3449. // TRACE("删除目录:%s",fdfile.GetFilePath());
  3450. //}
  3451. //while(bfilefind)
  3452. //{
  3453. // bfilefind=fdfilemp4.FindNextFile();
  3454. // if (fdfile.IsDots())
  3455. // {
  3456. // continue;
  3457. // }
  3458. // fdfilemp4.GetCreationTime(temptime);
  3459. // if(temptime<time)
  3460. // {
  3461. // time=temptime;
  3462. // sTempDelete.Format("%s",fdfilemp4.GetFilePath());
  3463. // }
  3464. //}
  3465. }
  3466. }
  3467. }
  3468. //sFileName.Format("%s",sTempDelete);
  3469. //if (!DeleteFile(sFileName))
  3470. //{
  3471. // sTempDelete.Format("删除文件%s失败",sFileName);
  3472. // F_AddEvent(sTempDelete);
  3473. // for(i = 0; i < MAXVIEWNUM; i++)
  3474. // {
  3475. // if( (m_MyOutput[i].m_iPlayhandle >= 0) || (m_MyOutput[i].m_bFileSave) )
  3476. // F_StopClientRecord(i);
  3477. // }
  3478. // MessageBox("硬盘容量不足,自动删除文件失败,请清理硬盘后重新开始录像!", "温馨提示", MB_ICONINFORMATION);
  3479. //
  3480. //}
  3481. //else
  3482. //{
  3483. // sTempDelete.Format("删除文件%s成功",sFileName);
  3484. // TRACE("删除文件%s",sFileName);
  3485. // deletenum++;
  3486. //}
  3487. int nSize = saFileName.GetCount();
  3488. if( nSize>0 )
  3489. {
  3490. CString sPath,sName;
  3491. sPath = saFilePath.GetAt( 0 );
  3492. sName = saFileName.GetAt( 0 );
  3493. CString sPath2,sName2;
  3494. for( int m=0;m<nSize;m++ )
  3495. {
  3496. sName2 = saFileName.GetAt( m );
  3497. sPath2 = saFilePath.GetAt( m );
  3498. if( atoi(sName)>atoi(sName2) )
  3499. {
  3500. sPath = sPath2;
  3501. sName = sName2;
  3502. }
  3503. }
  3504. if( DeleteDirectory( sPath ) )
  3505. return;
  3506. }
  3507. }
  3508. void CNewclientDlg::F_ChangeRecordFileName(int iRecordWndIndex)
  3509. {
  3510. int i;
  3511. char cFilename[256];
  3512. CTime time = CTime::GetCurrentTime();
  3513. i = iRecordWndIndex;
  3514. if(m_MyOutput[i].m_bFileSave)
  3515. {
  3516. TRACE("停止m_MyOutput[%d]客户端录像,更换文件名", i);
  3517. NET_DVR_StopSaveRealData(m_MyOutput[i].m_iPlayhandle);
  3518. }
  3519. if(m_MyOutput[i].m_iPlayhandle >= 0)
  3520. {
  3521. sprintf(cFilename, "%s%s_%02d_%4d%02d%02d_%02d%02d%02d.mp4", m_ClientParam.m_csClientRecordPath, m_MyOutput[i].m_csIP, m_MyOutput[i].m_iChannel, \
  3522. time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond() );
  3523. int nNum = 0;
  3524. bool bRet = false;
  3525. while( !bRet )
  3526. {
  3527. bRet = NET_DVR_SaveRealData(m_MyOutput[i].m_iPlayhandle, cFilename);
  3528. Sleep( 1000 );
  3529. if( nNum++ >= 50 )
  3530. return;
  3531. }
  3532. m_MyOutput[i].m_lChangeFileNameTime = time.GetTime() + m_ClientParam.m_iRecordFileInterval * 60;
  3533. TRACE("Client Record Filename = %s", cFilename);
  3534. m_MyOutput[i].m_bFileSave = TRUE;
  3535. //m_pCapLed[i]->SetLed(CLed::LED_COLOR_RED,CLed::LED_ON,CLed::LED_ROUND);
  3536. }
  3537. }
  3538. void CNewclientDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
  3539. {
  3540. // TODO: Add your message handler code here and/or call default
  3541. int i;
  3542. WORD wTemp;
  3543. WORD wVolumevalue;
  3544. BOOL bRet;
  3545. i = m_nActiveWndNumber;
  3546. wTemp = (0xFFFF) / 100;
  3547. bRet = FALSE;
  3548. if(m_MyOutput[i].m_iPlayhandle >= 0)
  3549. {
  3550. if(GetDlgItem(IDC_SLIDERLD) == pScrollBar)
  3551. {
  3552. m_ClientParam.m_VideoInfo[i].m_iBrightness = /*10 - */m_ld.GetPos();
  3553. bRet = TRUE;
  3554. }
  3555. else if(GetDlgItem(IDC_SLIDERDBD) == pScrollBar)
  3556. {
  3557. m_ClientParam.m_VideoInfo[i].m_iContrast = /*10 - */m_dbd.GetPos();
  3558. bRet = TRUE;
  3559. }
  3560. else if(GetDlgItem(IDC_SLIDERBHD) == pScrollBar)
  3561. {
  3562. m_ClientParam.m_VideoInfo[i].m_iSaturation = /*10 - */m_bhd.GetPos();
  3563. bRet = TRUE;
  3564. }
  3565. else if(GetDlgItem(IDC_SLIDERSD) == pScrollBar)
  3566. {
  3567. m_ClientParam.m_VideoInfo[i].m_iHue= /*10 - */m_sd.GetPos();
  3568. bRet = TRUE;
  3569. }
  3570. if(bRet)
  3571. {
  3572. bRet = NET_DVR_ClientSetVideoEffect(m_MyOutput[i].m_iPlayhandle, m_ClientParam.m_VideoInfo[i].m_iBrightness, m_ClientParam.m_VideoInfo[i].m_iContrast,
  3573. m_ClientParam.m_VideoInfo[i].m_iSaturation, m_ClientParam.m_VideoInfo[i].m_iHue);
  3574. if(!bRet)
  3575. {
  3576. MessageBox("设置视频参数失败!", "温馨提示", MB_ICONINFORMATION);
  3577. }
  3578. }
  3579. }
  3580. if(GetDlgItem(IDC_SLIDERYL) == pScrollBar)
  3581. {
  3582. if(m_lVoiceIndex >= 0)
  3583. {
  3584. TRACE("调整语音对讲声音.");
  3585. m_ClientParam.m_Volume = m_yl.GetPos();
  3586. wVolumevalue = (WORD)(m_yl.GetPos()) * wTemp;
  3587. NET_DVR_SetVoiceComClientVolume(m_lVoiceIndex, wVolumevalue);
  3588. }
  3589. else if(m_ClientParam.m_bPlaySound[i] && (m_MyOutput[i].m_iPlayhandle >= 0))
  3590. {
  3591. TRACE("调整音频浏览声音.");
  3592. m_ClientParam.m_Volume = m_yl.GetPos();
  3593. wVolumevalue = (WORD)(m_yl.GetPos()) * wTemp;
  3594. if(g_bShareSound)
  3595. {
  3596. NET_DVR_OpenSoundShare(m_MyOutput[m_nActiveWndNumber].m_iPlayhandle);
  3597. }
  3598. else
  3599. {
  3600. NET_DVR_OpenSound(m_MyOutput[i].m_iPlayhandle);
  3601. }
  3602. NET_DVR_Volume(m_MyOutput[i].m_iPlayhandle, wVolumevalue);
  3603. }
  3604. }
  3605. CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
  3606. }
  3607. void CNewclientDlg::OnButtonpoll()
  3608. {
  3609. // TODO: Add your control notification handler code here
  3610. int i = m_nActiveWndNumber;
  3611. WORD wTemp = (0xFFFF) / 100;
  3612. WORD wVolumevalue;
  3613. m_ClientParam.m_VideoInfo[i].m_iBrightness = DEFAULTBRIGHTNESS;
  3614. m_ClientParam.m_VideoInfo[i].m_iContrast = DEFAULTCONTRAST;
  3615. m_ClientParam.m_VideoInfo[i].m_iSaturation = DEFAULTSATURATION;
  3616. m_ClientParam.m_VideoInfo[i].m_iHue = DEFAULTHUE;
  3617. NET_DVR_ClientSetVideoEffect(m_MyOutput[i].m_iPlayhandle, m_ClientParam.m_VideoInfo[i].m_iBrightness, m_ClientParam.m_VideoInfo[i].m_iContrast,
  3618. m_ClientParam.m_VideoInfo[i].m_iSaturation, m_ClientParam.m_VideoInfo[i].m_iHue);
  3619. m_ClientParam.m_Volume = DEFAULTVOLUME;
  3620. if(m_lVoiceIndex >= 0)
  3621. {
  3622. TRACE("调整语音对讲声音.");
  3623. wVolumevalue = (WORD)(m_ClientParam.m_Volume) * 10 *wTemp;
  3624. NET_DVR_SetVoiceComClientVolume(m_lVoiceIndex, wVolumevalue);
  3625. }
  3626. else if(m_ClientParam.m_bPlaySound)
  3627. {
  3628. TRACE("调整音频浏览声音.");
  3629. wVolumevalue = (WORD)(m_ClientParam.m_Volume) * 10 * wTemp;
  3630. if(g_bShareSound)
  3631. {
  3632. NET_DVR_OpenSoundShare(m_MyOutput[m_nActiveWndNumber].m_iPlayhandle);
  3633. }
  3634. else
  3635. {
  3636. NET_DVR_OpenSound(m_MyOutput[i].m_iPlayhandle);
  3637. }
  3638. NET_DVR_Volume(m_MyOutput[i].m_iPlayhandle, wVolumevalue);
  3639. }
  3640. m_ld.SetPos(m_ClientParam.m_VideoInfo[m_nActiveWndNumber].m_iBrightness);
  3641. m_sd.SetPos(m_ClientParam.m_VideoInfo[m_nActiveWndNumber].m_iHue);
  3642. m_bhd.SetPos(m_ClientParam.m_VideoInfo[m_nActiveWndNumber].m_iSaturation);
  3643. m_dbd.SetPos(m_ClientParam.m_VideoInfo[m_nActiveWndNumber].m_iContrast);
  3644. m_yl.SetPos(m_ClientParam.m_Volume);
  3645. }
  3646. void CNewclientDlg::OnButtonyzw()
  3647. {
  3648. // TODO: Add your control notification handler code here
  3649. UpdateData(TRUE);
  3650. int i = m_nActiveWndNumber;
  3651. if(m_MyOutput[i].m_iPlayhandle >= 0)
  3652. {
  3653. NET_DVR_PTZPreset(m_MyOutput[i].m_iPlayhandle, GOTO_PRESET, m_yzd);
  3654. }
  3655. }
  3656. void CNewclientDlg::OnCancel()
  3657. {
  3658. // TODO: Add extra cleanup here
  3659. // CDialog::OnCancel();
  3660. }
  3661. /*
  3662. void CNewclientDlg::OnButauto()
  3663. {
  3664. // TODO: Add your control notification handler code here
  3665. char buf[20];
  3666. buf[0] = 0xa0;
  3667. buf[1] = 0x00;
  3668. buf[2] = 0x00;
  3669. buf[3] = 0x07;
  3670. buf[4] = 0x00;
  3671. buf[5] = 0x63;
  3672. buf[6] = 0xaf;
  3673. buf[7] = 0x6b;
  3674. NET_DVR_TransPTZ_Other(m_MyOutput[0].m_lServerID, 1, buf, 8);
  3675. }
  3676. */
  3677. /*void CNewclientDlg::OnButsharesound()
  3678. {
  3679. // TODO: Add your control notification handler code here
  3680. if(g_bShareSound)
  3681. {
  3682. NET_DVR_SetAudioMode(1);
  3683. g_bShareSound = FALSE;
  3684. // GetDlgItem(IDC_BUTSHARESOUND)->SetWindowText("sound");
  3685. }
  3686. else
  3687. {
  3688. NET_DVR_SetAudioMode(2);
  3689. g_bShareSound = TRUE;
  3690. // GetDlgItem(IDC_BUTSHARESOUND)->SetWindowText("sharesound");
  3691. }
  3692. }
  3693. */
  3694. void CNewclientDlg::OnSelchangeCombonetdelay()
  3695. {
  3696. // TODO: Add your control notification handler code here
  3697. UpdateData(TRUE);
  3698. g_nNetDelay = m_NetDelayCtrl.GetCurSel();
  3699. }
  3700. void CNewclientDlg::OnButton1()
  3701. {
  3702. // TODO: Add your control notification handler code here
  3703. UpdateData(TRUE);
  3704. int i = m_nActiveWndNumber;
  3705. if(!NET_DVR_MakeKeyFrame(m_MyOutput[i].m_lServerID, m_MyOutput[i].m_iChannel))
  3706. {
  3707. }
  3708. }
  3709. void CNewclientDlg::OnMove(int x, int y)
  3710. {
  3711. CDialog::OnMove(x, y);
  3712. // TODO: Add your message handler code here
  3713. Invalidate(TRUE);
  3714. if (m_ClientParam.m_bUseCard)
  3715. NET_DVR_RefreshSurface_Card();
  3716. UpdateWindow();
  3717. }
  3718. void CNewclientDlg::OnButton2()
  3719. {
  3720. // TODO: Add your control notification handler code here
  3721. UpdateData(TRUE);
  3722. int i = m_nActiveWndNumber;
  3723. if(!NET_DVR_MakeKeyFrameSub(m_MyOutput[i].m_lServerID, m_MyOutput[i].m_iChannel))
  3724. {
  3725. }
  3726. }
  3727. void CNewclientDlg::OnCruise()
  3728. {
  3729. // TODO: Add your control notification handler code here
  3730. if (m_MyOutput[m_nActiveWndNumber].m_iPlayhandle < 0)
  3731. {
  3732. return;
  3733. }
  3734. CCruiseRoute CruiseRoute;
  3735. CruiseRoute.m_lServerID = m_MyOutput[m_nActiveWndNumber].m_lServerID;
  3736. CruiseRoute.DoModal();
  3737. }
  3738. void CNewclientDlg::OnBnClickedButtonup()
  3739. {
  3740. // TODO: 在此添加控件通知处理程序代码
  3741. }
  3742. void CNewclientDlg::OnBnClickedButtondown()
  3743. {
  3744. // TODO: 在此添加控件通知处理程序代码
  3745. }
  3746. HBRUSH CNewclientDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  3747. {
  3748. HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
  3749. // TODO: 在此更改 DC 的任何属性
  3750. HBRUSH B = CreateSolidBrush( g_Color1 );
  3751. if( nCtlColor == CTLCOLOR_STATIC )
  3752. {
  3753. pDC->SetBkColor( g_Color1 );
  3754. pDC->SetTextColor(RGB(255,255,255));
  3755. return B;
  3756. }
  3757. DeleteObject( B );
  3758. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  3759. return hbr;
  3760. }
  3761. BOOL CNewclientDlg::OnEraseBkgnd(CDC* pDC)
  3762. {
  3763. #if 0
  3764. CRect rc;
  3765. this->GetClientRect(&rc); //ScreenToClient(&rc);
  3766. pDC->StretchBlt(rc.left, rc.top, rc.Width(),rc.Height(),&m_dcMemBak,
  3767. 0,0,m_bmInfoBak.bmWidth-1,m_bmInfoBak.bmHeight-1,SRCCOPY);
  3768. #else
  3769. CBrush brush;
  3770. CRect rect;
  3771. COLORREF rgbBackGnd = g_Color1;//RGB( 0,0,0 ); //RGB( 59,61,63 ); //
  3772. GetWindowRect(&rect);
  3773. ScreenToClient(&rect);
  3774. brush.CreateSolidBrush(rgbBackGnd);
  3775. pDC->FillRect(rect,&brush);
  3776. /////////////////////////////
  3777. CRect rc1,rc2,rc3,rc4;
  3778. CBrush br1;
  3779. br1.CreateSolidBrush( RGB(0,0,0) );
  3780. int W=0,H=0;
  3781. GetDlgItem(IDC_STATIC2)->GetWindowRect( rc1 ); ScreenToClient( &rc1 );
  3782. GetDlgItem(IDC_STATIC17)->GetWindowRect( rc2 ); ScreenToClient( &rc2 );
  3783. GetDlgItem(IDC_STATIC4)->GetWindowRect( rc3 ); ScreenToClient( &rc3 );
  3784. GetDlgItem(IDC_VEDIO_SHOW)->GetWindowRect( rc4 ); ScreenToClient( &rc4 );
  3785. rect.left = rc4.right-20;
  3786. rect.right = rc1.right+10;
  3787. rect.top = rc1.bottom;
  3788. rect.bottom = rc2.top;
  3789. pDC->FillRect(rect,&br1);
  3790. rect.left = rc4.right-20;
  3791. rect.right = rc1.right+10;
  3792. rect.top = rc2.bottom;
  3793. rect.bottom = rc3.top;
  3794. pDC->FillRect(rect,&br1);
  3795. //rect2.left = rect.left+775;
  3796. //rect2.top = 0;
  3797. //rect2.right = rect.right-5;
  3798. //rect2.bottom = rect.top+735;
  3799. //CPen pen;
  3800. //pen.CreatePen(PS_SOLID,5,RGB(255,204,0));
  3801. //pDC->SelectObject(pen);
  3802. //CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)) ;
  3803. //CBrush *pOldBrush=pDC->SelectObject(pBrush);//选入设备描述表
  3804. //pDC->Rectangle(rect2);//绘制矩形
  3805. //pDC->SelectObject(pOldBrush);
  3806. //DeleteObject( pBrush );
  3807. DeleteObject( brush );
  3808. DeleteObject( br1 );
  3809. #endif
  3810. return TRUE;
  3811. //return CDialog::OnEraseBkgnd(pDC);
  3812. }
  3813. void CNewclientDlg::ShowGrid()
  3814. {
  3815. CClientDC dc(this);
  3816. HICON hIcon;
  3817. CRect rc1,rc2,rc3,rc4,rc5,rc6,rc7;
  3818. GetDlgItem(IDC_STA_GRID1)->GetWindowRect( rc1 );ScreenToClient( &rc1 );
  3819. GetDlgItem(IDC_STA_GRID2)->GetWindowRect( rc2 );ScreenToClient( &rc2 );
  3820. GetDlgItem(IDC_STA_GRID3)->GetWindowRect( rc3 );ScreenToClient( &rc3 );
  3821. GetDlgItem(IDC_STA_GRID4)->GetWindowRect( rc4 );ScreenToClient( &rc4 );
  3822. GetDlgItem(IDC_STA_GRID5)->GetWindowRect( rc5 );ScreenToClient( &rc5 );
  3823. GetDlgItem(IDC_STA_GRID6)->GetWindowRect( rc6 );ScreenToClient( &rc6 );
  3824. GetDlgItem(IDC_STA_GRID7)->GetWindowRect( rc7 );ScreenToClient( &rc7 );
  3825. if( WINDOWNUM==1 )
  3826. {
  3827. hIcon = AfxGetApp()->LoadIcon(IDI_GRID1_ON);
  3828. dc.DrawIcon(rc1.left,rc1.top,hIcon);
  3829. }
  3830. else
  3831. {
  3832. hIcon = AfxGetApp()->LoadIcon(IDI_GRID1_OFF);
  3833. dc.DrawIcon(rc1.left,rc1.top,hIcon);
  3834. }
  3835. if( WINDOWNUM==4 )
  3836. {
  3837. hIcon = AfxGetApp()->LoadIcon(IDI_GRID4_ON);
  3838. dc.DrawIcon(rc2.left,rc2.top,hIcon);
  3839. }
  3840. else
  3841. {
  3842. hIcon = AfxGetApp()->LoadIcon(IDI_GRID4_OFF);
  3843. dc.DrawIcon(rc2.left,rc2.top,hIcon);
  3844. }
  3845. if( WINDOWNUM==9 )
  3846. {
  3847. hIcon = AfxGetApp()->LoadIcon(IDI_GRID9_ON);
  3848. dc.DrawIcon(rc3.left,rc3.top,hIcon);
  3849. }
  3850. else
  3851. {
  3852. hIcon = AfxGetApp()->LoadIcon(IDI_GRID9_OFF);
  3853. dc.DrawIcon(rc3.left,rc3.top,hIcon);
  3854. }
  3855. if( WINDOWNUM==16 )
  3856. {
  3857. hIcon = AfxGetApp()->LoadIcon(IDI_GRID16_ON);
  3858. dc.DrawIcon(rc4.left,rc4.top,hIcon);
  3859. }
  3860. else
  3861. {
  3862. hIcon = AfxGetApp()->LoadIcon(IDI_GRID16_OFF);
  3863. dc.DrawIcon(rc4.left,rc4.top,hIcon);
  3864. }
  3865. if( WINDOWNUM==33 )
  3866. {
  3867. hIcon = AfxGetApp()->LoadIcon(IDI_GRID32_ON);
  3868. dc.DrawIcon(rc5.left,rc5.top,hIcon);
  3869. }
  3870. else
  3871. {
  3872. hIcon = AfxGetApp()->LoadIcon(IDI_GRID32_OFF);
  3873. dc.DrawIcon(rc5.left,rc5.top,hIcon);
  3874. }
  3875. if( WINDOWNUM==64 )
  3876. {
  3877. hIcon = AfxGetApp()->LoadIcon(IDI_GRID64_ON);
  3878. dc.DrawIcon(rc6.left,rc6.top,hIcon);
  3879. }
  3880. else
  3881. {
  3882. hIcon = AfxGetApp()->LoadIcon(IDI_GRID64_OFF);
  3883. dc.DrawIcon(rc6.left,rc6.top,hIcon);
  3884. }
  3885. //if( WINDOWNUM==128 )
  3886. //{
  3887. // hIcon = AfxGetApp()->LoadIcon(IDI_GRID128_ON);
  3888. // dc.DrawIcon(rc7.left,rc7.top,hIcon);
  3889. //}
  3890. //else
  3891. //{
  3892. // hIcon = AfxGetApp()->LoadIcon(IDI_GRID128_OFF);
  3893. // dc.DrawIcon(rc7.left,rc7.top,hIcon);
  3894. //}
  3895. }
  3896. void CNewclientDlg::OnLButtonUp(UINT nFlags, CPoint point)
  3897. {
  3898. // TODO: 在此添加消息处理程序代码和/或调用默认值
  3899. WORD wndnum=0;
  3900. CRect rc1,rc2,rc3,rc4,rc5,rc6,rc7;
  3901. GetDlgItem(IDC_STA_GRID1)->GetWindowRect( rc1 );ScreenToClient( &rc1 );
  3902. GetDlgItem(IDC_STA_GRID2)->GetWindowRect( rc2 );ScreenToClient( &rc2 );
  3903. GetDlgItem(IDC_STA_GRID3)->GetWindowRect( rc3 );ScreenToClient( &rc3 );
  3904. GetDlgItem(IDC_STA_GRID4)->GetWindowRect( rc4 );ScreenToClient( &rc4 );
  3905. GetDlgItem(IDC_STA_GRID5)->GetWindowRect( rc5 );ScreenToClient( &rc5 );
  3906. GetDlgItem(IDC_STA_GRID6)->GetWindowRect( rc6 );ScreenToClient( &rc6 );
  3907. GetDlgItem(IDC_STA_GRID7)->GetWindowRect( rc7 );ScreenToClient( &rc7 );
  3908. bool bIn = false;
  3909. if( rc1.PtInRect( point ) )
  3910. {
  3911. wndnum = 1; bIn = true;
  3912. }
  3913. if( rc2.PtInRect( point ) )
  3914. {
  3915. wndnum = 4; bIn = true;
  3916. }
  3917. if( rc3.PtInRect( point ) )
  3918. {
  3919. wndnum = 9; bIn = true;
  3920. }
  3921. if( rc4.PtInRect( point ) )
  3922. {
  3923. wndnum = 16; bIn = true;
  3924. }
  3925. if( rc5.PtInRect( point ) )
  3926. {
  3927. wndnum = 33; bIn = true;
  3928. }
  3929. if( rc6.PtInRect( point ) )
  3930. {
  3931. wndnum = 64; bIn = true;
  3932. }
  3933. //if( rc7.PtInRect( point ) )
  3934. //{
  3935. // wndnum = 128; bIn = true;
  3936. //}
  3937. if( bIn && WINDOWNUM != wndnum)
  3938. {
  3939. WINDOWNUM = wndnum;
  3940. if(m_ClientParam.m_bCycling)
  3941. {
  3942. MessageBox("请停止循环播放!", "温馨提示", MB_ICONINFORMATION);
  3943. return;
  3944. }
  3945. if(m_ClientParam.m_bPlaying)
  3946. {
  3947. TRACE("Stop Play");
  3948. F_StopPlay();
  3949. OnVideonetplay();
  3950. }
  3951. ArrayWindow(0, WINDOWNUM);
  3952. MoveCurWin(WINDOWNUM,0);
  3953. ShowGrid();
  3954. }
  3955. CDialog::OnLButtonUp(nFlags, point);
  3956. }
  3957. void CNewclientDlg::ReadSurveillanceConfig()
  3958. {
  3959. #if 1
  3960. int m=0;
  3961. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  3962. list<string> list1,list2,list3,list4,list5,list6;
  3963. list<string> list7,list8,list9,list10,list11,list12,list13;
  3964. list<string>::iterator it_list1,it_list2,it_list3,it_list4,it_list5,it_list6;
  3965. list<string>::iterator it_list7,it_list8,it_list9,it_list10,it_list11,it_list12,it_list13;
  3966. CString sIP,sPort,sUserName,sPwd,sChaanelNum,sServerMultiIP,sServerName,sVersion;
  3967. CString s1,s2,s3;
  3968. DWORD dwServerIPvalue = 0,dwServerMultiIPvalue = 0;
  3969. int nChannelNum = 0;
  3970. int nPort = 0;
  3971. if(!_stricmp(g_strDBType, "PGSQL"))
  3972. {
  3973. sprintf(strSQLText, "select id, ip, port,username,pwd,channelnum,serveripvalue1,serveripvalue2,servermultiip,servermultiipvalue1,servermultiipvalue2,servername,devsoftversion from t_video_dvrinfo order by id");
  3974. }
  3975. else
  3976. {
  3977. sprintf(strSQLText, "select id, ip, port,username,pwd,channelnum,serveripvalue1,serveripvalue2,servermultiip,servermultiipvalue1,servermultiipvalue2,servername,devsoftversion from t_video_dvrinfo order by id");
  3978. }
  3979. int nRet = GetFieldValueList13( strSQLText,list1,list2,list3,list4,list5,list6,list7,list8,list9,list10,list11,list12,list13 );
  3980. if( 0 == list1.size() || 0 == list2.size() )
  3981. {
  3982. return ;
  3983. }
  3984. m_nSurveillanceNumber=0;
  3985. if( nRet != -1 )
  3986. {
  3987. for( it_list1=list1.begin(),it_list2=list2.begin(),it_list3=list3.begin(),
  3988. it_list4=list4.begin(),it_list5=list5.begin(),it_list6=list6.begin(),
  3989. it_list7=list7.begin(),it_list8=list8.begin(),it_list9=list9.begin(),
  3990. it_list10=list10.begin(),it_list11=list11.begin(),it_list12=list12.begin(),
  3991. it_list13=list13.begin();
  3992. it_list1!=list1.end() && it_list2!=list2.end() && it_list3!=list3.end() &&
  3993. it_list4!=list4.end() && it_list5!=list5.end() && it_list6!=list6.end() &&
  3994. it_list7!=list7.end() && it_list8!=list8.end() && it_list9!=list9.end() &&
  3995. it_list10!=list10.end() && it_list11!=list11.end() && it_list12!=list12.end() &&
  3996. it_list13!=list13.end() ;
  3997. it_list1++,it_list2++,it_list3++,
  3998. it_list4++,it_list5++,it_list6++,
  3999. it_list7++,it_list8++,it_list9++,
  4000. it_list10++,it_list11++,it_list12++,
  4001. it_list13++)
  4002. {
  4003. sIP = (*it_list2).c_str();
  4004. nPort = atoi( (*it_list3).c_str() );;
  4005. sUserName = (*it_list4).c_str();
  4006. sPwd = (*it_list5).c_str();
  4007. nChannelNum = atoi( (*it_list6).c_str() );
  4008. s1 = (*it_list7).c_str();
  4009. s2 = (*it_list8).c_str();
  4010. dwServerIPvalue = atoi(s1) << 16;
  4011. dwServerIPvalue += atoi(s2);
  4012. sServerMultiIP = (*it_list9).c_str();
  4013. s1 = (*it_list10).c_str();
  4014. s2 = (*it_list11).c_str();
  4015. dwServerMultiIPvalue = atoi(s1) << 16;
  4016. dwServerMultiIPvalue += atoi(s2);
  4017. sServerName = (*it_list12).c_str();
  4018. sVersion = (*it_list13).c_str();
  4019. m_Serverinfo[m].m_csServerAdminName = sUserName;//用户名
  4020. m_Serverinfo[m].m_csServerAdminPasswd = sPwd;//密码
  4021. m_Serverinfo[m].m_iServerChannelNumber = nChannelNum;//通道数
  4022. m_Serverinfo[m].m_csServerIP = sIP;//ip地址
  4023. m_Serverinfo[m].m_dwServerIPvalue = dwServerIPvalue;
  4024. m_Serverinfo[m].m_csServerMultiIP = sServerMultiIP;//多播组地址
  4025. m_Serverinfo[m].m_dwServerMultiIPvalue = dwServerMultiIPvalue;
  4026. m_Serverinfo[m].m_csServerName = sServerName;//服务器名称
  4027. m_Serverinfo[m].m_wServerPort = nPort; //端口号
  4028. m_Serverinfo[m].m_dwDevSoftVersion = atoi(sVersion); //设备软件版本
  4029. ////////////////////////////////////////////////////////////////////////////////////////////////
  4030. int n=0;
  4031. list<string> lt1,lt2,lt3,lt4,lt5,lt6;
  4032. list<string> lt7,lt8,lt9;
  4033. list<string>::iterator it_lt1,it_lt2,it_lt3,it_lt4,it_lt5,it_lt6;
  4034. list<string>::iterator it_lt7,it_lt8,it_lt9;
  4035. CString sChanName;
  4036. int nUsed=0,dwaddress=0,dwalarmlevel,ichannel,wjmqtype,dwprotocol,isequence;
  4037. if(!_stricmp(g_strDBType, "PGSQL"))
  4038. {
  4039. sprintf(strSQLText, "select ip, channame,bused,dwaddress,dwalarmlevel,ichannel,wjmqtype,dwprotocol,isequence from t_video_channelinfo where ip=\'%s\' order by id",sIP);
  4040. }
  4041. else
  4042. {
  4043. sprintf(strSQLText, "select ip, channame,bused,dwaddress,dwalarmlevel,ichannel,wjmqtype,dwprotocol,isequence from t_video_channelinfo where ip=\'%s\' order by id",sIP);
  4044. }
  4045. nRet = GetFieldValueList9( strSQLText,lt1,lt2,lt3,lt4,lt5,lt6,lt7,lt8,lt9 );
  4046. if( 0 == lt1.size() || 0 == lt2.size() )
  4047. {
  4048. return ;
  4049. }
  4050. if( nRet != -1 )
  4051. {
  4052. for( it_lt1=lt1.begin(),it_lt2=lt2.begin(),it_lt3=lt3.begin(),
  4053. it_lt4=lt4.begin(),it_lt5=lt5.begin(),it_lt6=lt6.begin(),
  4054. it_lt7=lt7.begin(),it_lt8=lt8.begin(),it_lt9=lt9.begin();
  4055. it_lt1!=lt1.end() && it_lt2!=lt2.end() && it_lt3!=lt3.end() &&
  4056. it_lt4!=lt4.end() && it_lt5!=lt5.end() && it_lt6!=lt6.end() &&
  4057. it_lt7!=lt7.end() && it_lt8!=lt8.end() && it_lt9!=lt9.end();
  4058. it_lt1++,it_lt2++,it_lt3++,
  4059. it_lt4++,it_lt5++,it_lt6++,
  4060. it_lt7++,it_lt8++,it_lt9++ )
  4061. {
  4062. sChanName = (*it_lt2).c_str();
  4063. nUsed = atoi( (*it_lt3).c_str() );
  4064. dwaddress = atoi( (*it_lt4).c_str() );
  4065. dwalarmlevel = atoi( (*it_lt5).c_str() );
  4066. ichannel = atoi( (*it_lt6).c_str() );
  4067. wjmqtype = atoi( (*it_lt7).c_str() );
  4068. dwprotocol = atoi( (*it_lt8).c_str() );
  4069. isequence = atoi( (*it_lt9).c_str() );
  4070. m_Allipinfo[m][n].m_bChoosed = nUsed;//1
  4071. m_Allipinfo[m][n].m_dwAddress = dwaddress;//解码器地址1
  4072. m_Allipinfo[m][n].m_dwAlarmlevel = dwalarmlevel;//报警级别1
  4073. m_Allipinfo[m][n].m_iChannel = ichannel;//通道号1
  4074. m_Allipinfo[m][n].m_csIP = sIP;//ip地址1
  4075. m_Allipinfo[m][n].m_dwIPvalue = dwServerIPvalue;//1
  4076. m_Allipinfo[m][n].m_wJMQtype = wjmqtype;//解码器类型1
  4077. m_Allipinfo[m][n].m_csMultiIP = sServerMultiIP;//多播组地址1
  4078. m_Allipinfo[m][n].m_dwMultiIPvalue = dwServerMultiIPvalue;//1
  4079. m_Allipinfo[m][n].m_csChanName = sChanName;//通道名称1
  4080. m_Allipinfo[m][n].m_dwProtocol = dwprotocol;//协议1
  4081. m_Allipinfo[m][n].m_csPassword = sPwd;//通道密码1
  4082. m_Allipinfo[m][n].m_csUser = sUserName;//通道用户1
  4083. m_Allipinfo[m][n].m_wServerport = nPort;//端口号1
  4084. m_Allipinfo[m][n].m_iSequence = isequence;//1
  4085. n++;
  4086. }
  4087. }
  4088. for( it_lt1=lt1.begin(),it_lt2=lt2.begin(),it_lt3=lt3.begin(),
  4089. it_lt4=lt4.begin(),it_lt5=lt5.begin(),it_lt6=lt6.begin(),
  4090. it_lt7=lt7.begin(),it_lt8=lt8.begin(),it_lt9=lt9.begin();
  4091. it_lt1!=lt1.end(),it_lt2!=lt2.end(),it_lt3!=lt3.end(),
  4092. it_lt4!=lt4.end(),it_lt5!=lt5.end(),it_lt6!=lt6.end(),
  4093. it_lt7!=lt7.end(),it_lt8!=lt8.end(),it_lt9!=lt9.end(); )
  4094. {
  4095. lt1.erase(it_lt1++);
  4096. lt2.erase(it_lt2++);
  4097. lt3.erase(it_lt3++);
  4098. lt4.erase(it_lt4++);
  4099. lt5.erase(it_lt5++);
  4100. lt6.erase(it_lt6++);
  4101. lt7.erase(it_lt7++);
  4102. lt8.erase(it_lt8++);
  4103. lt9.erase(it_lt9++);
  4104. }
  4105. //////////////////////////////////////////////////////////////////////////////////////////////
  4106. m++;
  4107. }
  4108. }
  4109. for( it_list1=list1.begin(),it_list2=list2.begin(),it_list3=list3.begin(),
  4110. it_list4=list4.begin(),it_list5=list5.begin(),it_list6=list6.begin(),
  4111. it_list7=list7.begin(),it_list8=list8.begin(),it_list9=list9.begin(),
  4112. it_list10=list10.begin(),it_list11=list11.begin(),it_list12=list12.begin(),
  4113. it_list13=list13.begin();
  4114. it_list1!=list1.end(),it_list2!=list2.end(),it_list3!=list3.end(),
  4115. it_list4!=list4.end(),it_list5!=list5.end(),it_list6!=list6.end(),
  4116. it_list7!=list7.end(),it_list8!=list8.end(),it_list9!=list9.end(),
  4117. it_list10!=list10.end(),it_list11!=list11.end(),it_list12!=list12.end(),
  4118. it_list13!=list13.end();)
  4119. {
  4120. list1.erase(it_list1++);
  4121. list2.erase(it_list2++);
  4122. list3.erase(it_list3++);
  4123. list4.erase(it_list4++);
  4124. list5.erase(it_list5++);
  4125. list6.erase(it_list6++);
  4126. list7.erase(it_list7++);
  4127. list8.erase(it_list8++);
  4128. list9.erase(it_list9++);
  4129. list10.erase(it_list10++);
  4130. list11.erase(it_list11++);
  4131. list12.erase(it_list12++);
  4132. list13.erase(it_list13++);
  4133. }
  4134. #else
  4135. /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  4136. int i, j;
  4137. char buf[256];
  4138. DWORD dtemp;
  4139. CStdioFile myFile;
  4140. CString csFilename;
  4141. csFilename.Format("%s\\ChannelCfg%d.dat", cWorkDir,m_nOCXIndex );
  4142. if(myFile.Open(csFilename, CFile::modeRead) == FALSE)
  4143. {
  4144. myFile.Open(csFilename, CFile::modeCreate);
  4145. return;
  4146. }
  4147. m_nSurveillanceNumber=0;
  4148. while(myFile.ReadString(buf,256))
  4149. {
  4150. if(buf[1]==0x53)
  4151. {
  4152. myFile.ReadString(buf,256);//数组下标
  4153. i=atoi(buf);
  4154. myFile.ReadString(buf,256);
  4155. m_Serverinfo[i].m_csServerAdminName.Format("%s",buf);//用户名
  4156. m_Serverinfo[i].m_csServerAdminName.Format("%s",m_Serverinfo[i].m_csServerAdminName.Left(m_Serverinfo[i].m_csServerAdminName.GetLength()-2));
  4157. myFile.ReadString(buf,256);
  4158. m_Serverinfo[i].m_csServerAdminPasswd.Format("%s",buf);//密码
  4159. m_Serverinfo[i].m_csServerAdminPasswd.Format("%s",m_Serverinfo[i].m_csServerAdminPasswd.Left(m_Serverinfo[i].m_csServerAdminPasswd.GetLength()-2));
  4160. myFile.ReadString(buf,256);
  4161. m_Serverinfo[i].m_iServerChannelNumber=atoi(buf);//通道数
  4162. myFile.ReadString(buf,256);
  4163. m_Serverinfo[i].m_csServerIP.Format("%s",buf);//ip地址
  4164. m_Serverinfo[i].m_csServerIP.Format("%s",m_Serverinfo[i].m_csServerIP.Left(m_Serverinfo[i].m_csServerIP.GetLength()-2));
  4165. myFile.ReadString(buf,256);
  4166. dtemp = atoi(buf) << 16;
  4167. myFile.ReadString(buf,256);
  4168. dtemp += atoi(buf);
  4169. m_Serverinfo[i].m_dwServerIPvalue=dtemp;
  4170. myFile.ReadString(buf,256);
  4171. m_Serverinfo[i].m_csServerMultiIP.Format("%s",buf);//多播组地址
  4172. m_Serverinfo[i].m_csServerMultiIP.Format("%s",m_Serverinfo[i].m_csServerMultiIP.Left(m_Serverinfo[i].m_csServerMultiIP.GetLength()-2));
  4173. myFile.ReadString(buf,256);
  4174. dtemp = atoi(buf) << 16;
  4175. myFile.ReadString(buf,256);
  4176. dtemp += atoi(buf);
  4177. m_Serverinfo[i].m_dwServerMultiIPvalue=dtemp;
  4178. myFile.ReadString(buf,256);
  4179. m_Serverinfo[i].m_csServerName.Format("%s",buf);//服务器名称
  4180. m_Serverinfo[i].m_csServerName.Format("%s",m_Serverinfo[i].m_csServerName.Left(m_Serverinfo[i].m_csServerName.GetLength()-2));
  4181. myFile.ReadString(buf,256);
  4182. m_Serverinfo[i].m_wServerPort = atoi(buf); //端口号
  4183. myFile.ReadString(buf,256);
  4184. m_Serverinfo[i].m_dwDevSoftVersion = atoi(buf); //设备软件版本
  4185. }
  4186. else
  4187. {
  4188. myFile.ReadString(buf,256);//数组下标
  4189. i=atoi(buf);
  4190. myFile.ReadString(buf,256);//数组下标
  4191. j=atoi(buf);
  4192. myFile.ReadString(buf,256);
  4193. m_Allipinfo[i][j].m_bChoosed=atoi(buf);//1
  4194. myFile.ReadString(buf,256);
  4195. m_Allipinfo[i][j].m_dwAddress=atoi(buf);//解码器地址1
  4196. myFile.ReadString(buf,256);
  4197. m_Allipinfo[i][j].m_dwAlarmlevel=atoi(buf);//报警级别1
  4198. myFile.ReadString(buf,256);
  4199. m_Allipinfo[i][j].m_iChannel=atoi(buf);//通道号1
  4200. myFile.ReadString(buf,256);
  4201. m_Allipinfo[i][j].m_csIP.Format("%s",buf);//ip地址1
  4202. m_Allipinfo[i][j].m_csIP.Format("%s",m_Allipinfo[i][j].m_csIP.Left(m_Allipinfo[i][j].m_csIP.GetLength()-2));
  4203. myFile.ReadString(buf,256);
  4204. dtemp = atoi(buf) << 16;
  4205. myFile.ReadString(buf,256);
  4206. dtemp += atoi(buf);
  4207. m_Allipinfo[i][j].m_dwIPvalue=dtemp;//1
  4208. myFile.ReadString(buf,256);
  4209. m_Allipinfo[i][j].m_wJMQtype=atoi(buf);//解码器类型1
  4210. myFile.ReadString(buf,256);
  4211. m_Allipinfo[i][j].m_csMultiIP.Format("%s",buf);//多播组地址1
  4212. m_Allipinfo[i][j].m_csMultiIP.Format("%s",m_Allipinfo[i][j].m_csMultiIP.Left(m_Allipinfo[i][j].m_csMultiIP.GetLength()-2));
  4213. myFile.ReadString(buf,256);
  4214. dtemp = atoi(buf) << 16;
  4215. myFile.ReadString(buf,256);
  4216. dtemp += atoi(buf);
  4217. m_Allipinfo[i][j].m_dwMultiIPvalue=dtemp;//1
  4218. myFile.ReadString(buf,256);
  4219. m_Allipinfo[i][j].m_csChanName.Format("%s",buf);//通道名称1
  4220. m_Allipinfo[i][j].m_csChanName.Format("%s",m_Allipinfo[i][j].m_csChanName.Left(m_Allipinfo[i][j].m_csChanName.GetLength()-2));
  4221. myFile.ReadString(buf,256);
  4222. m_Allipinfo[i][j].m_dwProtocol=atoi(buf);//协议1
  4223. myFile.ReadString(buf,256);
  4224. m_Allipinfo[i][j].m_csPassword.Format("%s",buf);//通道密码1
  4225. m_Allipinfo[i][j].m_csPassword.Format("%s",m_Allipinfo[i][j].m_csPassword.Left(m_Allipinfo[i][j].m_csPassword.GetLength()-2));
  4226. myFile.ReadString(buf,256);
  4227. m_Allipinfo[i][j].m_csUser.Format("%s",buf);//通道用户1
  4228. m_Allipinfo[i][j].m_csUser.Format("%s",m_Allipinfo[i][j].m_csUser.Left(m_Allipinfo[i][j].m_csUser.GetLength()-2));
  4229. myFile.ReadString(buf,256);
  4230. m_Allipinfo[i][j].m_wServerport = atoi(buf);//端口号1
  4231. myFile.ReadString(buf, 256);
  4232. m_Allipinfo[i][j].m_iSequence = atoi(buf);//1
  4233. }
  4234. }
  4235. myFile.Close();
  4236. #endif
  4237. }
  4238. void CNewclientDlg::ReadClientConfig()
  4239. {
  4240. CString sDownloadPath,sPictureSavePath,sLogSavePath,sVideoMaxTime,sNoMotionTime,sStartRecordDriver,sEndRecordDriver;
  4241. ////////////////////////////////////////////////////////////////////////////////////////////////
  4242. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  4243. list<string> lt1,lt2,lt3,lt4,lt5,lt6;
  4244. list<string> lt7,lt8,lt9;
  4245. list<string>::iterator it_lt1,it_lt2,it_lt3,it_lt4,it_lt5,it_lt6;
  4246. list<string>::iterator it_lt7,it_lt8,it_lt9;
  4247. CString sChanName;
  4248. int nUsed=0,dwaddress=0,dwalarmlevel,ichannel,wjmqtype,dwprotocol,isequence;
  4249. if(!_stricmp(g_strDBType, "PGSQL"))
  4250. {
  4251. sprintf(strSQLText, "select id, sdownloadpath,spicturesavepath,slogsavepath,videomaxtime,nomotiontime,istartrecorddriver,iendrecorddriver,intreserved1 from t_video_localsetting order by id");
  4252. }
  4253. else
  4254. {
  4255. sprintf(strSQLText, "select id, sdownloadpath,spicturesavepath,slogsavepath,videomaxtime,nomotiontime,istartrecorddriver,iendrecorddriver,intreserved1 from t_video_localsetting order by id");
  4256. }
  4257. int nRet = GetFieldValueList9( strSQLText,lt1,lt2,lt3,lt4,lt5,lt6,lt7,lt8,lt9 );
  4258. if( 0 == lt1.size() || 0 == lt2.size() )
  4259. {
  4260. return ;
  4261. }
  4262. if( nRet != -1 )
  4263. {
  4264. for( it_lt1=lt1.begin(),it_lt2=lt2.begin(),it_lt3=lt3.begin(),
  4265. it_lt4=lt4.begin(),it_lt5=lt5.begin(),it_lt6=lt6.begin(),
  4266. it_lt7=lt7.begin(),it_lt8=lt8.begin(),it_lt9=lt9.begin();
  4267. it_lt1!=lt1.end() && it_lt2!=lt2.end() && it_lt3!=lt3.end() &&
  4268. it_lt4!=lt4.end() && it_lt5!=lt5.end() && it_lt6!=lt6.end() &&
  4269. it_lt7!=lt7.end() && it_lt8!=lt8.end() && it_lt9!=lt9.end();
  4270. it_lt1++,it_lt2++,it_lt3++,
  4271. it_lt4++,it_lt5++,it_lt6++,
  4272. it_lt7++,it_lt8++,it_lt9++ )
  4273. {
  4274. sDownloadPath = (*it_lt2).c_str();
  4275. sPictureSavePath = (*it_lt3).c_str();
  4276. sLogSavePath = (*it_lt4).c_str();
  4277. sVideoMaxTime = (*it_lt5).c_str();
  4278. sNoMotionTime = (*it_lt6).c_str();
  4279. sStartRecordDriver = (*it_lt7).c_str();
  4280. sEndRecordDriver = (*it_lt8).c_str();
  4281. }
  4282. }
  4283. for( it_lt1=lt1.begin(),it_lt2=lt2.begin(),it_lt3=lt3.begin(),
  4284. it_lt4=lt4.begin(),it_lt5=lt5.begin(),it_lt6=lt6.begin(),
  4285. it_lt7=lt7.begin(),it_lt8=lt8.begin(),it_lt9=lt9.begin();
  4286. it_lt1!=lt1.end(),it_lt2!=lt2.end(),it_lt3!=lt3.end(),
  4287. it_lt4!=lt4.end(),it_lt5!=lt5.end(),it_lt6!=lt6.end(),
  4288. it_lt7!=lt7.end(),it_lt8!=lt8.end(),it_lt9!=lt9.end(); )
  4289. {
  4290. lt1.erase(it_lt1++);
  4291. lt2.erase(it_lt2++);
  4292. lt3.erase(it_lt3++);
  4293. lt4.erase(it_lt4++);
  4294. lt5.erase(it_lt5++);
  4295. lt6.erase(it_lt6++);
  4296. lt7.erase(it_lt7++);
  4297. lt8.erase(it_lt8++);
  4298. lt9.erase(it_lt9++);
  4299. }
  4300. g_nVideoMaxTime = atoi(sVideoMaxTime);
  4301. g_nNoMotionTime = atoi(sNoMotionTime);
  4302. m_ClientParam.m_iStartRecordDriver = atoi(sStartRecordDriver); //起始盘符
  4303. m_ClientParam.m_iEndRecordDriver = atoi(sEndRecordDriver); //终止盘符
  4304. m_ClientParam.m_csDownLoadPath.Format("%s", sDownloadPath); //远程文件下载路径
  4305. m_ClientParam.m_csPictureSavePath.Format("%s", sPictureSavePath); //抓图文件保存路径
  4306. m_ClientParam.m_csLogSavePath.Format("%s", sLogSavePath); //日志文件保存路径
  4307. //////////////////////////////////////////////////////////////////////////////////////////////////////////
  4308. #if 0
  4309. int iTemp, iDay = 0, i, j;
  4310. char buf[256];
  4311. CStdioFile myFile;
  4312. CString csFilename;
  4313. csFilename.Format("%s\\ClientCfg%d.dat", cWorkDir,m_nOCXIndex );
  4314. if(myFile.Open(csFilename, CFile::modeRead) == FALSE)
  4315. {
  4316. myFile.Open(csFilename, CFile::modeCreate);
  4317. return;
  4318. }
  4319. if(!myFile.ReadString(buf,256))
  4320. {
  4321. myFile.Close();
  4322. return;
  4323. }
  4324. iTemp = atoi(buf);
  4325. if(iTemp < 5)
  4326. m_ClientParam.m_iCycleTime = 5; //循环播放时间
  4327. else
  4328. m_ClientParam.m_iCycleTime = iTemp;
  4329. myFile.ReadString(buf,256);
  4330. iTemp = atoi(buf);
  4331. if(iTemp == 1)
  4332. m_ClientParam.m_bCyclePlay = TRUE; //是否循环播放
  4333. else
  4334. m_ClientParam.m_bCyclePlay = FALSE;
  4335. myFile.ReadString(buf,256);
  4336. iTemp = atoi(buf);
  4337. if(iTemp == 1)
  4338. m_ClientParam.m_bUseCard = TRUE; //是否使用解码卡
  4339. else
  4340. m_ClientParam.m_bUseCard = FALSE;
  4341. myFile.ReadString(buf,256);
  4342. iTemp = atoi(buf);
  4343. if(iTemp == 1)
  4344. m_ClientParam.m_bNTSC = TRUE; //解码卡视频制式
  4345. else
  4346. m_ClientParam.m_bNTSC = FALSE;
  4347. myFile.ReadString(buf,256);
  4348. iTemp = atoi(buf);
  4349. if (iTemp > 60)
  4350. m_ClientParam.m_iRecordFileInterval = 60; //录像文件打包时间
  4351. else
  4352. m_ClientParam.m_iRecordFileInterval = iTemp;
  4353. myFile.ReadString(buf,256);
  4354. iTemp = atoi(buf);
  4355. if(iTemp == 1)
  4356. m_ClientParam.m_bAutoRecord = TRUE; //是否自动录像
  4357. else
  4358. m_ClientParam.m_bAutoRecord = FALSE;
  4359. myFile.ReadString(buf,256);
  4360. iTemp = atoi(buf);
  4361. if(iTemp == 1)
  4362. m_ClientParam.m_bCycleRecord = TRUE; //是否循环录像
  4363. else
  4364. m_ClientParam.m_bCycleRecord = FALSE;
  4365. myFile.ReadString(buf, 256);
  4366. m_ClientParam.m_iStartRecordDriver = atoi(buf); //起始盘符
  4367. myFile.ReadString(buf, 256);
  4368. m_ClientParam.m_iEndRecordDriver = atoi(buf); //终止盘符
  4369. myFile.ReadString(buf,256);
  4370. m_ClientParam.m_csDownLoadPath.Format("%s", buf); //远程文件下载路径
  4371. m_ClientParam.m_csDownLoadPath.Format("%s", m_ClientParam.m_csDownLoadPath.Left(m_ClientParam.m_csDownLoadPath.GetLength() - 2));
  4372. myFile.ReadString(buf,256);
  4373. m_ClientParam.m_csPictureSavePath.Format("%s", buf); //抓图文件保存路径
  4374. m_ClientParam.m_csPictureSavePath.Format("%s", m_ClientParam.m_csPictureSavePath.Left(m_ClientParam.m_csPictureSavePath.GetLength() - 2));
  4375. myFile.ReadString(buf,256);
  4376. m_ClientParam.m_csLogSavePath.Format("%s", buf); //日志文件保存路径
  4377. m_ClientParam.m_csLogSavePath.Format("%s", m_ClientParam.m_csLogSavePath.Left(m_ClientParam.m_csLogSavePath.GetLength() - 2));
  4378. myFile.ReadString(buf,256);
  4379. iTemp = atoi(buf);
  4380. if(iTemp == 1)
  4381. m_ClientParam.m_bCheckServerTime = TRUE; //是否启动硬盘录像机校时
  4382. else
  4383. m_ClientParam.m_bCheckServerTime = FALSE;
  4384. long lTemp;
  4385. myFile.ReadString(buf,256);
  4386. lTemp = atol(buf);
  4387. if(lTemp < 0)
  4388. m_ClientParam.m_iCheckServerTime = 0; //硬盘录像机校时时间
  4389. else
  4390. m_ClientParam.m_iCheckServerTime = lTemp;
  4391. while(myFile.ReadString(buf, 256))
  4392. {
  4393. m_ClientParam.m_ClientRecordTime[iDay][0].m_iStartTime = atoi(buf);
  4394. myFile.ReadString(buf, 256);
  4395. m_ClientParam.m_ClientRecordTime[iDay][0].m_iStopTime = atoi(buf);
  4396. myFile.ReadString(buf, 256);
  4397. m_ClientParam.m_ClientRecordTime[iDay][1].m_iStartTime = atoi(buf);
  4398. myFile.ReadString(buf, 256);
  4399. m_ClientParam.m_ClientRecordTime[iDay][1].m_iStopTime = atoi(buf);
  4400. myFile.ReadString(buf, 256);
  4401. m_ClientParam.m_ClientRecordTime[iDay][2].m_iStartTime = atoi(buf);
  4402. myFile.ReadString(buf, 256);
  4403. m_ClientParam.m_ClientRecordTime[iDay][2].m_iStopTime = atoi(buf);
  4404. myFile.ReadString(buf, 256);
  4405. m_ClientParam.m_ClientRecordTime[iDay][3].m_iStartTime = atoi(buf);
  4406. myFile.ReadString(buf, 256);
  4407. m_ClientParam.m_ClientRecordTime[iDay][3].m_iStopTime = atoi(buf);
  4408. iDay++;
  4409. }
  4410. for(i = 0; i < 7; i++)
  4411. {
  4412. for(j = 0; j < 4; j++)
  4413. {
  4414. m_ClientParam.m_ClientRecordTime[i][j].m_iStartHour = m_ClientParam.m_ClientRecordTime[i][j].m_iStartTime / 100;
  4415. m_ClientParam.m_ClientRecordTime[i][j].m_iStartMinute = m_ClientParam.m_ClientRecordTime[i][j].m_iStartTime % 100;
  4416. m_ClientParam.m_ClientRecordTime[i][j].m_iStopHour = m_ClientParam.m_ClientRecordTime[i][j].m_iStopTime / 100;
  4417. m_ClientParam.m_ClientRecordTime[i][j].m_iStopMinute = m_ClientParam.m_ClientRecordTime[i][j].m_iStopTime % 100;
  4418. }
  4419. }
  4420. myFile.Close();
  4421. #endif
  4422. }
  4423. bool CNewclientDlg::MakeFolderExist( CString DirectoryName )
  4424. {
  4425. if(DirectoryName[DirectoryName.GetLength()-1]!='\\')
  4426. DirectoryName += "\\";
  4427. int nStart = 3;
  4428. CString sTemp;
  4429. for(int n = nStart;n<DirectoryName.GetLength();n++)
  4430. {
  4431. if(DirectoryName[n]=='\\')
  4432. {
  4433. sTemp = DirectoryName.Left(n);
  4434. bool f = ExistFolder(sTemp);
  4435. if(!ExistFolder(sTemp))
  4436. CreateDirectoryCHN(sTemp);
  4437. }
  4438. }
  4439. return true;
  4440. }
  4441. bool CNewclientDlg::CreateDirectoryCHN(CString DirectoryName)
  4442. {
  4443. bool re=false;
  4444. ::CreateDirectory(DirectoryName,NULL);
  4445. //DWORD dwAttrs;
  4446. //dwAttrs=GetFileAttributes(DirectoryName);
  4447. //if(!(dwAttrs & FILE_ATTRIBUTE_HIDDEN))
  4448. //{
  4449. // SetFileAttributes(DirectoryName,dwAttrs|FILE_ATTRIBUTE_HIDDEN);
  4450. //}
  4451. return re;
  4452. }
  4453. bool CNewclientDlg::ExistFolder(CString FilePath)
  4454. {
  4455. return PathFileExists( FilePath );
  4456. }
  4457. void CNewclientDlg::OnBnClickedButtontjleft()
  4458. {
  4459. // TODO: 在此添加控件通知处理程序代码
  4460. }
  4461. int CNewclientDlg::GetSysData()
  4462. {
  4463. CString sFilePath = "C:\\DBtemp.txt";
  4464. if( PathFileExists( sFilePath ) )
  4465. {
  4466. CString sTemp;
  4467. CStdioFile File;
  4468. if(!File.Open(sFilePath,CFile::modeRead))
  4469. File.Open(sFilePath,CFile::modeCreate|CFile::modeRead);
  4470. int n = 0;
  4471. while(File.ReadString(sTemp))//定义一个CString变量sTemp作为缓冲区
  4472. {
  4473. switch( n )
  4474. {
  4475. case 0:
  4476. memcpy( g_strServerName,sTemp,sTemp.GetLength() );
  4477. break;
  4478. case 1:
  4479. memcpy( g_strDataBaseName,sTemp,sTemp.GetLength() );
  4480. break;
  4481. case 2:
  4482. memcpy( g_strUserName,sTemp,sTemp.GetLength() );
  4483. break;
  4484. case 3:
  4485. memcpy( g_strPassword,sTemp,sTemp.GetLength() );
  4486. break;
  4487. case 4:
  4488. memcpy( g_strDBType,sTemp,sTemp.GetLength() );
  4489. break;
  4490. }
  4491. n++;
  4492. }
  4493. File.Close();
  4494. //DeleteFile(sFilePath);
  4495. }
  4496. else
  4497. {
  4498. }
  4499. return 0;
  4500. }