newclientDlg.cpp 109 KB

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