LocalFilePlay.cpp 29 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097
  1. // LocalFilePlay.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "newclient.h"
  5. #include "LocalFilePlay.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CLocalFilePlay dialog
  13. #define TIMER_INTERVAL 500
  14. #define USED_PORT 99
  15. extern SERVER_INFO serverinfo[MAXIPNUMBER];
  16. extern CLIENTPARAM ClientParam;
  17. BOOL g_bCapPic=FALSE;
  18. //完成文件索引回调函数
  19. void CALLBACK FileRefDone(DWORD nReserved,DWORD nUser)
  20. {
  21. CLocalFilePlay* pOwner=(CLocalFilePlay*)nUser;
  22. pOwner->F_UpdateStepBackUI(TRUE);
  23. }
  24. //抓图回调函数
  25. void CALLBACK DisplayCBFun(long nPort,char * pBuf,long nSize,long nWidth,long nHeight,long nStamp,long nType,long nReceaved)
  26. {
  27. if(!g_bCapPic)
  28. return;
  29. //转换函数,比较耗时,如果不想保存图片,请不要调用;
  30. CString csDir;
  31. CString csFile;
  32. CTime time=CTime::GetCurrentTime();
  33. csDir.Format("%s",ClientParam.m_csPictureSavePath);
  34. csFile.Format("%s\\Picture_%s_%02d_%4d%02d%02d_%02d%02d%02d_%d.bmp",csDir,CLocalFilePlay::m_csIP,CLocalFilePlay::iSelChannel, \
  35. time.GetYear(), time.GetMonth(), time.GetDay(), time.GetHour(), time.GetMinute(), time.GetSecond(), GetTickCount());
  36. if(!PlayM4_ConvertToBmpFile(pBuf,nSize,nWidth,nHeight,nType,csFile.GetBuffer(csFile.GetLength())))
  37. {
  38. TRACE("Convert to Bmp failed!");
  39. }
  40. g_bCapPic=FALSE;
  41. }
  42. CString CLocalFilePlay:: m_csIP="";
  43. int CLocalFilePlay::iSelChannel = -1;
  44. CLocalFilePlay::CLocalFilePlay(CWnd* pParent /*=NULL*/)
  45. : CDialog(CLocalFilePlay::IDD, pParent)
  46. {
  47. //{{AFX_DATA_INIT(CLocalFilePlay)
  48. m_ctTimeStart = 0;
  49. m_ctTimeStop = 0;
  50. m_iChannelSel = -1;
  51. m_ctDateStart = 0;
  52. m_ctDateStop = 0;
  53. //}}AFX_DATA_INIT
  54. m_hPlayEnableIcon = AfxGetApp()->LoadIcon(IDI_PLAY_ENABLE);
  55. m_hPlayDisableIcon = AfxGetApp()->LoadIcon(IDI_PLAY_DISABLE);
  56. m_hPauseEnableIcon = AfxGetApp()->LoadIcon(IDI_PAUSE_ENABLE);
  57. m_hPauseDisableIcon = AfxGetApp()->LoadIcon(IDI_PAUSE_DISABLE);
  58. m_hStopEnableIcon = AfxGetApp()->LoadIcon(IDI_STOP_ENABLE);
  59. m_hStopDisableIcon = AfxGetApp()->LoadIcon(IDI_STOP_DISABLE);
  60. m_hSoundStartIcon= AfxGetApp()->LoadIcon(IDI_SOUND_ENABLE);
  61. m_hSoundStopIcon= AfxGetApp()->LoadIcon(IDI_SOUND_DISABLE);
  62. m_hGotoHeadDisableIcon = AfxGetApp()->LoadIcon(IDI_GOTOSTART_DISABLE);
  63. m_hGotoTailDisableIcon = AfxGetApp()->LoadIcon(IDI_GOTOEND_DISABLE);
  64. m_hFastDisableIcon = AfxGetApp()->LoadIcon(IDI_FASTFORWARD_DISABLE);
  65. m_hSlowDisableIcon= AfxGetApp()->LoadIcon(IDI_FASTBACKWARD_DISABLE);
  66. m_hGotoHeadEnableIcon = AfxGetApp()->LoadIcon(IDI_GOTOSTART_ENABLE);
  67. m_hGotoTailEnableIcon = AfxGetApp()->LoadIcon(IDI_GOTOEND_ENABLE);
  68. m_hFastEnableIcon = AfxGetApp()->LoadIcon(IDI_FASTFORWARD_ENABLE);
  69. m_hSlowEnableIcon = AfxGetApp()->LoadIcon(IDI_FASTBACKWARD_ENABLE);
  70. m_hStepEnableIcon= AfxGetApp()->LoadIcon(IDI_STEP_ENABLE);
  71. m_hStepDisableIcon = AfxGetApp()->LoadIcon(IDI_STEP_DISABLE);
  72. m_hStepBackEnableIcon = AfxGetApp()->LoadIcon(IDI_STEPBACK_ENABLE);
  73. m_hStepBackDisableIcon = AfxGetApp()->LoadIcon(IDI_STEPBACK_DISABLE);
  74. m_hCaptureIcon = AfxGetApp()->LoadIcon(IDI_PIC);
  75. }
  76. void CLocalFilePlay::DoDataExchange(CDataExchange* pDX)
  77. {
  78. CDialog::DoDataExchange(pDX);
  79. //{{AFX_DATA_MAP(CLocalFilePlay)
  80. DDX_Control(pDX, IDC_LOCALFILRLIST, m_locFileList);
  81. DDX_Control(pDX, IDC_PROGRESS_SLIDER, m_ctlProgress);
  82. DDX_Control(pDX, IDC_VOLUME_SLIDER, m_ctlVolume);
  83. DDX_Control(pDX, IDC_COMBOSERVER, m_ServerCtrl);
  84. DDX_Control(pDX, IDC_COMBOCHANNEL, m_ChannelCtrl);
  85. DDX_Control(pDX, IDC_COMBOFILETYPE, m_FileTypeCtrl);
  86. DDX_DateTimeCtrl(pDX, IDC_TIMESTART, m_ctTimeStart);
  87. DDX_DateTimeCtrl(pDX, IDC_TIMESTOP, m_ctTimeStop);
  88. DDX_CBIndex(pDX, IDC_COMBOCHANNEL, m_iChannelSel);
  89. DDX_DateTimeCtrl(pDX, IDC_DATESTART, m_ctDateStart);
  90. DDX_DateTimeCtrl(pDX, IDC_DATESTOP, m_ctDateStop);
  91. //}}AFX_DATA_MAP
  92. }
  93. BEGIN_MESSAGE_MAP(CLocalFilePlay, CDialog)
  94. //{{AFX_MSG_MAP(CLocalFilePlay)
  95. ON_BN_CLICKED(IDC_SEARCHLOCALLIST, OnSearch)
  96. ON_BN_CLICKED(IDC_DELETE, OnDelete)
  97. ON_BN_CLICKED(IDC_DELETEALL, OnDeleteall)
  98. ON_BN_CLICKED(IDC_PLAY_FILE, OnPlayFile)
  99. ON_BN_CLICKED(IDC_STOP, OnStop)
  100. ON_BN_CLICKED(IDC_SLOW, OnSlow)
  101. ON_BN_CLICKED(IDC_FAST, OnFast)
  102. ON_BN_CLICKED(IDC_CAPPIC, OnCappic)
  103. ON_BN_CLICKED(IDC_STEPBACK, OnStepback)
  104. ON_BN_CLICKED(IDC_STEP, OnStep)
  105. ON_BN_CLICKED(IDC_SOUND, OnSound)
  106. ON_WM_DESTROY()
  107. ON_WM_HSCROLL()
  108. ON_WM_LBUTTONDBLCLK()
  109. ON_WM_PAINT()
  110. ON_WM_TIMER()
  111. ON_CBN_SELCHANGE(IDC_COMBOSERVER, OnSelchangeComboserver)
  112. ON_CBN_SELCHANGE(IDC_COMBOFILETYPE, OnSelchangeCombofiletype)
  113. //}}AFX_MSG_MAP
  114. END_MESSAGE_MAP()
  115. /////////////////////////////////////////////////////////////////////////////
  116. // CLocalFilePlay message handlers
  117. void CLocalFilePlay::SetParentWnd(HWND *hhWnd, int iParentNum)
  118. {
  119. VERIFY(iParentNum==2);
  120. m_hPareDlgWnd=hhWnd[0];
  121. m_hPareTabWnd=hhWnd[1];
  122. }
  123. BOOL CLocalFilePlay::OnInitDialog()
  124. {
  125. CDialog::OnInitDialog();
  126. // TODO: Add extra initialization here
  127. CRect rc(0, 0, 0, 0);
  128. GetParent()->GetClientRect(&rc);
  129. ((CTabCtrl*)GetParent())->AdjustRect(FALSE, &rc);
  130. MoveWindow(&rc);
  131. m_locFileList.InsertColumn(0,"文件名称",LVCFMT_LEFT,120,-1);
  132. m_locFileList.InsertColumn(1,"通道",LVCFMT_LEFT,40,-1);
  133. m_locFileList.InsertColumn(2,"类型",LVCFMT_LEFT,40,-1);
  134. m_locFileList.InsertColumn(3,"开始时间",LVCFMT_LEFT,120,-1);
  135. m_locFileList.InsertColumn(4,"结束时间",LVCFMT_LEFT,120,-1);
  136. m_ServerCtrl.AddString("请选择DVR");
  137. for(int i = 0; i < MAXIPNUMBER; i++)
  138. {
  139. if(serverinfo[i].m_csServerName != "")
  140. m_ServerCtrl.AddString(serverinfo[i].m_csServerName);
  141. }
  142. m_bPlay=FALSE;
  143. m_bPause=FALSE;
  144. m_bSound=FALSE;
  145. m_iTotalSeconds=0;
  146. m_bStep=FALSE;
  147. m_bFileRefCreated=FALSE;
  148. m_hPlayWnd = GetDlgItem(IDC_WND)->m_hWnd;
  149. m_bFullScreen=FALSE;
  150. m_hPareDlgWnd=NULL;
  151. m_hPareTabWnd=NULL;
  152. m_iChannelnumber = 16;
  153. F_InitUI();
  154. GetDlgItem(IDC_WND)->GetWindowRect(m_rcWnd);
  155. ScreenToClient(m_rcWnd);
  156. ShowWindow(SW_SHOW);
  157. CTime time1 = CTime::GetCurrentTime();
  158. CTime time(time1.GetYear(),time1.GetMonth(),time1.GetDay(),0,0,0);
  159. CTime time0(time1.GetYear(),time1.GetMonth(),time1.GetDay(),23,59,59);
  160. m_ctDateStart = time;
  161. m_ctTimeStart = time;
  162. m_ctDateStop = time1;
  163. m_ctTimeStop = time0;
  164. UpdateData(FALSE);
  165. m_ServerCtrl.SetCurSel(0);
  166. m_ChannelCtrl.SetCurSel(0);
  167. m_FileTypeCtrl.SetCurSel(0);
  168. return TRUE; // return TRUE unless you set the focus to a control
  169. // EXCEPTION: OCX Property Pages should return FALSE
  170. }
  171. void CLocalFilePlay::OnSearch()
  172. {
  173. // TODO: Add your control notification handler code here
  174. UpdateData(TRUE);
  175. int iServerSel;
  176. CString csIP;
  177. CTime tStartTime,tStopTime;
  178. int iSum = 0;
  179. int m_iType;
  180. int i,j;
  181. if(!F_CheckDate(m_ctDateStart,m_ctDateStop))
  182. return;
  183. m_locFileList.DeleteAllItems();
  184. m_iTSum = 0;
  185. if(m_ServerCtrl.GetCurSel() == 0)
  186. {
  187. AfxMessageBox("请选择DVR!");
  188. return;
  189. }
  190. iServerSel = m_ServerCtrl.GetCurSel()-1;
  191. csIP.Format("%s",serverinfo[iServerSel].m_csServerIP);
  192. tStartTime = CTime(m_ctDateStart.GetYear(),m_ctDateStart.GetMonth(),m_ctDateStart.GetDay(),m_ctTimeStart.GetHour(),m_ctTimeStart.GetMinute(),m_ctTimeStart.GetSecond());
  193. tStopTime = CTime(m_ctDateStop.GetYear(),m_ctDateStop.GetMonth(),m_ctDateStop.GetDay(),m_ctTimeStop.GetHour(),m_ctTimeStop.GetMinute(),m_ctTimeStop.GetSecond());
  194. m_iType = m_FileTypeCtrl.GetCurSel();
  195. if(m_iChannelSel == 0)
  196. {
  197. //all channel
  198. for(i=0; i<=m_iChannelnumber; i++)
  199. {
  200. if(m_iType!=0)
  201. iSum = iSum + F_ShowlocalFile(csIP,m_iType,i+m_lStartChan, tStartTime, tStopTime);
  202. else
  203. {
  204. for(j = 1;j<=3;j++)
  205. iSum = iSum + F_ShowlocalFile(csIP,j,i+m_lStartChan, tStartTime, tStopTime);
  206. }
  207. }
  208. }
  209. else
  210. {
  211. if(m_iType!=0)
  212. iSum = F_ShowlocalFile(csIP,m_iType,m_iChannelSel-1+m_lStartChan, tStartTime, tStopTime);
  213. else
  214. {
  215. for(j = 1;j<=3;j++)
  216. iSum = iSum + F_ShowlocalFile(csIP,j,m_iChannelSel-1+m_lStartChan, tStartTime, tStopTime);
  217. }
  218. }
  219. if(iSum > 0)
  220. F_SetStopState();
  221. else
  222. F_InitUI();
  223. TRACE("共找到%d个文件",iSum);
  224. AfxMessageBox("文件查找结束!");
  225. UpdateData(FALSE);
  226. }
  227. void CLocalFilePlay::OnDelete()
  228. {
  229. // TODO: Add your control notification handler code here
  230. UpdateData(TRUE);
  231. int fileselpos = 0;
  232. CString csFileName;
  233. POSITION pos = m_locFileList.GetFirstSelectedItemPosition();
  234. if(pos == NULL)
  235. return;
  236. fileselpos = m_locFileList.GetNextSelectedItem(pos);
  237. TRACE("fileselpos = %d", fileselpos);
  238. csFileName=m_locFileList.GetItemText(fileselpos,0);
  239. if(csFileName.GetLength()==0)
  240. return;
  241. TRACE("Delete Mp4 filename = %s", csFileName);
  242. if(IDOK!=MessageBox("确定删除此文件吗?","警告",IDOK))
  243. return;
  244. if(DeleteFile(csFileName))
  245. {
  246. m_locFileList.DeleteItem(fileselpos);
  247. }
  248. else
  249. {
  250. CString csError;
  251. csError.Format("不能删除文件:%s!",csFileName);
  252. MessageBox(csError);
  253. }
  254. }
  255. void CLocalFilePlay::OnDeleteall()
  256. {
  257. // TODO: Add your control notification handler code here
  258. int iCount, i;
  259. CString csFileName;
  260. iCount = m_locFileList.GetItemCount();
  261. TRACE("iCount = %d", iCount);
  262. if(iCount < 1)
  263. return;
  264. if(IDOK!=MessageBox("确定删除所有文件吗?","警告",IDOK))
  265. return;
  266. for(i = iCount; i > 0; i--)
  267. {
  268. csFileName = m_locFileList.GetItemText(i-1, 0);
  269. if(csFileName.GetLength() == 0)
  270. continue;
  271. if(DeleteFile(csFileName))
  272. {
  273. m_locFileList.DeleteItem(i-1);
  274. }
  275. else
  276. {
  277. CString csError;
  278. csError.Format("不能删除文件:%s!",csFileName);
  279. MessageBox(csError);
  280. }
  281. }
  282. }
  283. void CLocalFilePlay::OnPlayFile()
  284. {
  285. // TODO: Add your control notification handler code here
  286. if(m_bPlay)
  287. {
  288. if(m_bStep)
  289. {
  290. PlayM4_Play(USED_PORT,m_hPlayWnd);
  291. F_SetPlayState();
  292. m_bStep=FALSE;
  293. }
  294. else
  295. F_Pause();
  296. return;
  297. }
  298. F_Play();
  299. if(m_bPlay)
  300. {
  301. F_SetPlayState();
  302. F_Sound(TRUE);
  303. SetTimer(PLAY_TIMER,TIMER_INTERVAL,NULL);
  304. }
  305. }
  306. void CLocalFilePlay::OnStop()
  307. {
  308. // TODO: Add your control notification handler code here
  309. if(!m_bPlay)
  310. return;
  311. m_ctlProgress.SetPos(0);
  312. CString csText;
  313. GetDlgItem(IDC_PLAYSTATUS)->SetWindowText(csText);
  314. KillTimer(PLAY_TIMER);
  315. csText.Format("%d/%d %02d:%02d:%02d/%02d:%02d:%02d",0,0,0,0,0,0,0,0);
  316. UpdateData(FALSE);
  317. Invalidate(TRUE);
  318. F_Stop();
  319. }
  320. void CLocalFilePlay::OnSlow()
  321. {
  322. // TODO: Add your control notification handler code here
  323. PlayM4_Slow(USED_PORT);
  324. }
  325. void CLocalFilePlay::OnFast()
  326. {
  327. // TODO: Add your control notification handler code here
  328. PlayM4_Fast(USED_PORT);
  329. }
  330. void CLocalFilePlay::OnCappic()
  331. {
  332. // TODO: Add your control notification handler code here
  333. g_bCapPic=TRUE;
  334. }
  335. void CLocalFilePlay::OnStepback()
  336. {
  337. // TODO: Add your control notification handler code here
  338. if(m_bPause)
  339. F_Pause();
  340. PlayM4_OneByOneBack(USED_PORT);
  341. m_bStep=TRUE;
  342. F_SetPauseState();
  343. }
  344. void CLocalFilePlay::OnStep()
  345. {
  346. // TODO: Add your control notification handler code here
  347. if(m_bPause)
  348. F_Pause();
  349. PlayM4_OneByOne(USED_PORT);
  350. m_bStep=TRUE;
  351. F_SetPauseState();
  352. }
  353. void CLocalFilePlay::OnSound()
  354. {
  355. // TODO: Add your control notification handler code here
  356. F_Sound(!m_bSound);
  357. }
  358. void CLocalFilePlay::OnDestroy()
  359. {
  360. F_Stop();
  361. CDialog::OnDestroy();
  362. // TODO: Add your message handler code here
  363. }
  364. void CLocalFilePlay::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
  365. {
  366. // TODO: Add your message handler code here and/or call default
  367. if(pScrollBar->m_hWnd==m_ctlProgress.m_hWnd&&m_bPlay)
  368. {
  369. PlayM4_SetPlayedTimeEx(USED_PORT,m_iTotalSeconds*m_ctlProgress.GetPos()*10);
  370. }
  371. else if(pScrollBar->m_hWnd==m_ctlVolume.m_hWnd&&m_bSound)
  372. {
  373. PlayM4_SetVolume(USED_PORT,(WORD)m_ctlVolume.GetPos());
  374. }
  375. CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
  376. }
  377. void CLocalFilePlay::OnLButtonDblClk(UINT nFlags, CPoint point)
  378. {
  379. // TODO: Add your message handler code here and/or call default
  380. if(IsInWnd(point)&&m_bPlay)
  381. {
  382. m_bFullScreen=!m_bFullScreen;
  383. if(m_bFullScreen)
  384. F_ShowFullScreen();
  385. else
  386. F_ShowNormal();
  387. PlayM4_RefreshPlay(USED_PORT);
  388. }
  389. CDialog::OnLButtonDblClk(nFlags, point);
  390. }
  391. BOOL CLocalFilePlay::IsInWnd(CPoint point)
  392. {
  393. CRect rc;
  394. GetDlgItem(IDC_WND)->GetWindowRect(&rc);
  395. ScreenToClient(&rc);
  396. if(PtInRect(&rc,point))
  397. return TRUE;
  398. else
  399. return FALSE;
  400. }
  401. void CLocalFilePlay::OnPaint()
  402. {
  403. CPaintDC dc(this); // device context for painting
  404. // TODO: Add your message handler code here
  405. CWnd *pWnd=GetDlgItem(IDC_WND);
  406. pWnd->Invalidate();
  407. pWnd->UpdateWindow();
  408. PlayM4_RefreshPlay(USED_PORT);
  409. // Do not call CDialog::OnPaint() for painting messages
  410. }
  411. void CLocalFilePlay::OnTimer(UINT nIDEvent)
  412. {
  413. // TODO: Add your message handler code here and/or call default
  414. if(nIDEvent==PLAY_TIMER)
  415. {
  416. F_ShowStatus();
  417. }
  418. CDialog::OnTimer(nIDEvent);
  419. }
  420. void CLocalFilePlay::F_ShowStatus()
  421. {
  422. //保护。
  423. if(m_iTotalSeconds<=0)
  424. return;
  425. DWORD nCurSecond=PlayM4_GetPlayedTime(USED_PORT);
  426. m_ctlProgress.SetPos(nCurSecond*100/m_iTotalSeconds);
  427. CString csStatus;
  428. csStatus.Format("%02d:%02d:%02d/%02d:%02d:%02d",\
  429. nCurSecond/3600,(nCurSecond%3600)/60,nCurSecond%60,\
  430. m_iTotalSeconds/3600,(m_iTotalSeconds%3600)/60,m_iTotalSeconds%60);
  431. GetDlgItem(IDC_PLAYSTATUS)->SetWindowText(csStatus);
  432. }
  433. void CLocalFilePlay::F_Stop()
  434. {
  435. m_bPause=FALSE;
  436. if(m_bPlay)
  437. {
  438. m_bPlay=FALSE;
  439. PlayM4_Stop(USED_PORT);
  440. PlayM4_CloseFile(USED_PORT);
  441. if(m_bSound)
  442. F_Sound(FALSE);
  443. F_SetStopState();
  444. }
  445. }
  446. void CLocalFilePlay::F_InitUI()
  447. {
  448. // 初始化按钮
  449. CButton *pButton;
  450. m_rcScreen=CRect(0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN));
  451. //初始化滑动条
  452. m_ctlProgress.SetRange(0,100);
  453. m_ctlProgress.SetPos(0);
  454. m_ctlVolume.SetRange(0,0xffff);
  455. m_ctlVolume.SetPos(0x7fff);
  456. m_ctlProgress.EnableWindow(FALSE);
  457. m_ctlVolume.EnableWindow(FALSE);
  458. pButton = (CButton *)GetDlgItem(IDC_PLAY_FILE);
  459. pButton->SetIcon(m_hPlayDisableIcon);
  460. pButton->EnableWindow(FALSE);
  461. pButton = (CButton *)GetDlgItem(IDC_STOP);
  462. pButton->SetIcon(m_hStopDisableIcon);
  463. pButton->EnableWindow(FALSE);
  464. pButton = (CButton *)GetDlgItem(IDC_FAST);
  465. pButton->SetIcon(m_hFastDisableIcon);
  466. pButton->EnableWindow(FALSE);
  467. pButton = (CButton *)GetDlgItem(IDC_SLOW);
  468. pButton->SetIcon(m_hSlowDisableIcon);
  469. pButton->EnableWindow(FALSE);
  470. pButton = (CButton *)GetDlgItem(IDC_STEP);
  471. pButton->SetIcon(m_hStepDisableIcon);
  472. pButton->EnableWindow(FALSE);
  473. pButton = (CButton *)GetDlgItem(IDC_STEPBACK);
  474. pButton->SetIcon(m_hStepBackDisableIcon);
  475. pButton->EnableWindow(FALSE);
  476. pButton = (CButton *)GetDlgItem(IDC_CAPPIC);
  477. pButton->SetIcon(m_hCaptureIcon);
  478. pButton->EnableWindow(FALSE);
  479. pButton = (CButton *)GetDlgItem(IDC_SOUND);
  480. pButton->SetIcon(m_hSoundStopIcon);
  481. pButton->EnableWindow(FALSE);
  482. }
  483. /*****************************************************
  484. 功能:检查起始和终止时间
  485. ******************************************************/
  486. BOOL CLocalFilePlay::F_CheckDate(CTime tFrom, CTime tTo)
  487. {
  488. if(tFrom.GetYear() > tTo.GetYear())
  489. return FALSE;
  490. else
  491. {
  492. if(tFrom.GetYear() == tTo.GetYear())
  493. {
  494. if(tFrom.GetMonth() > tTo.GetMonth())
  495. return FALSE;
  496. else
  497. {
  498. if(tFrom.GetMonth() == tTo.GetMonth())
  499. {
  500. if(tFrom.GetDay() > tTo.GetDay())
  501. return FALSE;
  502. else
  503. {
  504. if(tFrom.GetDay() == tTo.GetDay())
  505. {
  506. if(tFrom.GetHour() > tTo.GetHour())
  507. return FALSE;
  508. else
  509. {
  510. if(tFrom.GetHour() == tTo.GetHour())
  511. {
  512. if(tFrom.GetMinute() > tTo.GetMinute())
  513. return FALSE;
  514. else
  515. {
  516. if(tFrom.GetMinute() == tTo.GetMinute())
  517. {
  518. if(tFrom.GetSecond() > tTo.GetSecond())
  519. return FALSE;
  520. }
  521. }
  522. }
  523. }
  524. }
  525. }
  526. }
  527. }
  528. }
  529. }
  530. return TRUE;
  531. }
  532. /*************************************
  533. 功能:查找下载文件显示在LIST中
  534. iFileType:1-正常,2-报警,3-下载
  535. **************************************/
  536. int CLocalFilePlay::F_ShowlocalFile(CString csIP,int iFileType,int iChanNum, CTime tFrom, CTime tTo)
  537. {
  538. CString sTemp, sTemp1;
  539. UINT i=0; int j;
  540. CTime tFileTime;
  541. CString csType;
  542. CString csDir, csChildDir, csFindFile, csFileName;
  543. CFileFind fddirectory,fdmpeg4file;
  544. BOOL bFinded, bFindFile;
  545. CNewclientApp* pApp = (CNewclientApp*)AfxGetApp();
  546. switch(iFileType)
  547. {
  548. case 1:
  549. csType.Format(_T("正常"));
  550. for(j = ClientParam.m_iStartRecordDriver; j < ClientParam.m_iEndRecordDriver + 1; j++)
  551. {
  552. csDir.Format("%c:\\mpeg4record\\*.*", pApp->m_cHardDriver[j]);
  553. bFinded=fddirectory.FindFile(csDir);
  554. while(bFinded)
  555. {
  556. bFinded=fddirectory.FindNextFile();
  557. if (fddirectory.IsDots())
  558. {
  559. continue;
  560. }
  561. if (fddirectory.IsDirectory())
  562. {
  563. csChildDir.Format("%c:\\mpeg4record\\%s",pApp->m_cHardDriver[j],fddirectory.GetFileName());
  564. csFindFile.Format("%s\\%s_%02d*.mp4",csChildDir, csIP, iChanNum);
  565. TRACE("Begin to find the following files: %s", csFindFile);
  566. bFindFile=fdmpeg4file.FindFile(csFindFile);
  567. while(bFindFile)
  568. {
  569. bFindFile = fdmpeg4file.FindNextFile();
  570. if(fdmpeg4file.IsDots())
  571. continue;
  572. csFileName.Format("%s\\%s", csChildDir, fdmpeg4file.GetFileName());
  573. TRACE("The finded file name: %s", csFileName);
  574. fdmpeg4file.GetCreationTime(tFileTime);
  575. if(F_CheckDate(tFrom, tFileTime) && F_CheckDate(tFileTime, tTo))
  576. {
  577. m_locFileList.InsertItem(m_iTSum,csFileName,0);
  578. sTemp.Format("%d",iChanNum);
  579. m_locFileList.SetItemText(m_iTSum,1,sTemp);
  580. m_locFileList.SetItemText(m_iTSum,2,csType);
  581. m_locFileList.SetItemText(m_iTSum,3,tFileTime.Format("%Y%m%d %H:%M:%S"));
  582. fdmpeg4file.GetLastWriteTime(tFileTime);
  583. m_locFileList.SetItemText(m_iTSum,4,tFileTime.Format("%Y%m%d %H:%M:%S"));
  584. i++;
  585. m_iTSum++;
  586. }
  587. }
  588. }
  589. }
  590. }
  591. break;
  592. case 2:
  593. break;
  594. case 3:
  595. i = F_ShowDownloadFile(csIP, iChanNum, tFrom, tTo);
  596. break;
  597. default:
  598. return 0;
  599. break;
  600. }
  601. return i;
  602. }
  603. int CLocalFilePlay::F_ShowDownloadFile(CString csIP,int iChanNum, CTime tFrom, CTime tTo)
  604. {
  605. //显示文件名称
  606. char buffer[200];
  607. char buf_channel[4];
  608. CString sTemp, sTemp1;
  609. int i=0;
  610. WIN32_FIND_DATA FindFileData;
  611. HANDLE hFind;
  612. CTime tFileTime;
  613. CString csType;
  614. sprintf(buf_channel,"%02d",iChanNum);
  615. strcpy(buffer,ClientParam.m_csDownLoadPath);
  616. strcat(buffer,"\\");
  617. strcat(buffer,csIP);
  618. strcat(buffer,"_");
  619. strcat(buffer,buf_channel);
  620. strcat(buffer,"_D*.mp4");
  621. csType.Format(_T("下载"));
  622. sTemp1.Format("%s", ClientParam.m_csDownLoadPath);
  623. hFind = FindFirstFile(buffer, &FindFileData);
  624. if (hFind == INVALID_HANDLE_VALUE)
  625. {
  626. FindClose(hFind);
  627. return 0;
  628. }
  629. else
  630. {
  631. tFileTime = CTime((const FILETIME&)(FindFileData.ftCreationTime));
  632. if (F_CheckDate( tFrom, tFileTime) && F_CheckDate(tFileTime, tTo))
  633. {
  634. sTemp.Format("%s\\%s",sTemp1,FindFileData.cFileName);
  635. m_locFileList.InsertItem(m_iTSum,sTemp,0);
  636. sTemp.Format("%d",iChanNum);
  637. m_locFileList.SetItemText(m_iTSum,1,sTemp);
  638. m_locFileList.SetItemText(m_iTSum,2,csType);
  639. m_locFileList.SetItemText(m_iTSum,3,tFileTime.Format("%Y%m%d %H:%M:%S"));
  640. tFileTime = CTime( (const FILETIME&)(FindFileData.ftLastWriteTime));
  641. m_locFileList.SetItemText(m_iTSum,4,tFileTime.Format("%Y%m%d %H:%M:%S"));
  642. i++;
  643. m_iTSum++;
  644. }
  645. }
  646. while (FindNextFile(hFind,&FindFileData))
  647. {
  648. tFileTime = CTime( (const FILETIME&)(FindFileData.ftCreationTime));
  649. if (F_CheckDate(tFrom, tFileTime) && F_CheckDate(tFileTime, tTo))
  650. {
  651. sTemp.Format("%s\\%s",sTemp1,FindFileData.cFileName);
  652. m_locFileList.InsertItem(m_iTSum,sTemp,0);
  653. sTemp.Format("%d",iChanNum);
  654. m_locFileList.SetItemText(m_iTSum,1,sTemp);
  655. m_locFileList.SetItemText(m_iTSum,2,csType);
  656. m_locFileList.SetItemText(m_iTSum,3,tFileTime.Format("%Y%m%d %H:%M:%S"));
  657. tFileTime = CTime( (const FILETIME&)(FindFileData.ftLastWriteTime));
  658. m_locFileList.SetItemText(m_iTSum,4,tFileTime.Format("%Y%m%d %H:%M:%S"));
  659. i++;
  660. m_iTSum++;
  661. }
  662. }
  663. return i;
  664. }
  665. void CLocalFilePlay::F_SetStopState()
  666. {
  667. CButton *pButton;
  668. m_ctlProgress.SetPos(0);
  669. m_ctlProgress.EnableWindow(FALSE);
  670. m_ctlVolume.EnableWindow(FALSE);
  671. pButton = (CButton *)GetDlgItem(IDC_PLAY_FILE);
  672. pButton->SetIcon(m_hPlayEnableIcon);
  673. pButton->EnableWindow(TRUE);
  674. pButton = (CButton *)GetDlgItem(IDC_STOP);
  675. pButton->SetIcon(m_hStopDisableIcon);
  676. pButton->EnableWindow(FALSE);
  677. pButton = (CButton *)GetDlgItem(IDC_FAST);
  678. pButton->SetIcon(m_hFastDisableIcon);
  679. pButton->EnableWindow(FALSE);
  680. pButton = (CButton *)GetDlgItem(IDC_SLOW);
  681. pButton->SetIcon(m_hSlowDisableIcon);
  682. pButton->EnableWindow(FALSE);
  683. pButton = (CButton *)GetDlgItem(IDC_STEP);
  684. pButton->SetIcon(m_hStepDisableIcon);
  685. pButton->EnableWindow(FALSE);
  686. pButton = (CButton *)GetDlgItem(IDC_STEPBACK);
  687. pButton->SetIcon(m_hStepBackDisableIcon);
  688. pButton->EnableWindow(FALSE);
  689. pButton = (CButton *)GetDlgItem(IDC_CAPPIC);
  690. pButton->SetIcon(m_hCaptureIcon);
  691. pButton->EnableWindow(FALSE);
  692. pButton = (CButton *)GetDlgItem(IDC_SOUND);
  693. pButton->SetIcon(m_hSoundStopIcon);
  694. pButton->EnableWindow(FALSE);
  695. pButton = (CButton *)GetDlgItem(IDC_STEP);
  696. pButton->SetIcon(m_hStepDisableIcon);
  697. pButton->EnableWindow(FALSE);
  698. F_UpdateStepBackUI(FALSE);
  699. }
  700. void CLocalFilePlay::F_UpdateStepBackUI(BOOL bEnable)
  701. {
  702. m_bFileRefCreated=bEnable;
  703. CButton *pButton;
  704. if(m_bFileRefCreated)
  705. {
  706. pButton = (CButton *)GetDlgItem(IDC_STEPBACK);
  707. pButton->SetIcon(m_hStepBackEnableIcon);
  708. pButton->EnableWindow(TRUE);
  709. }
  710. else
  711. {
  712. pButton = (CButton *)GetDlgItem(IDC_STEPBACK);
  713. pButton->SetIcon(m_hStepBackDisableIcon);
  714. pButton->EnableWindow(FALSE);
  715. }
  716. }
  717. void CLocalFilePlay::F_SetPlayState()
  718. {
  719. CButton *pButton;
  720. m_ctlProgress.EnableWindow(TRUE);
  721. m_ctlVolume.EnableWindow(TRUE);
  722. pButton = (CButton *)GetDlgItem(IDC_PLAY_FILE);
  723. pButton->SetIcon(m_hPauseEnableIcon);
  724. pButton->EnableWindow(TRUE);
  725. pButton = (CButton *)GetDlgItem(IDC_STOP);
  726. pButton->SetIcon(m_hStopEnableIcon);
  727. pButton->EnableWindow(TRUE);
  728. pButton = (CButton *)GetDlgItem(IDC_FAST);
  729. pButton->SetIcon(m_hFastEnableIcon);
  730. pButton->EnableWindow(TRUE);
  731. pButton = (CButton *)GetDlgItem(IDC_SLOW);
  732. pButton->SetIcon(m_hSlowEnableIcon);
  733. pButton->EnableWindow(TRUE);
  734. pButton = (CButton *)GetDlgItem(IDC_CAPPIC);
  735. pButton->SetIcon(m_hCaptureIcon);
  736. pButton->EnableWindow(TRUE);
  737. pButton = (CButton *)GetDlgItem(IDC_SOUND);
  738. if(m_bSound)
  739. pButton->SetIcon(m_hSoundStartIcon);
  740. else
  741. pButton->SetIcon(m_hSoundStopIcon);
  742. pButton->EnableWindow(TRUE);
  743. pButton = (CButton *)GetDlgItem(IDC_STEP);
  744. pButton->SetIcon(m_hStepEnableIcon);
  745. pButton->EnableWindow(TRUE);
  746. }
  747. void CLocalFilePlay::F_SetPauseState()
  748. {
  749. CButton *pButton;
  750. pButton = (CButton *)GetDlgItem(IDC_PLAY_FILE);
  751. pButton->SetIcon(m_hPlayEnableIcon);
  752. pButton->EnableWindow(TRUE);
  753. }
  754. void CLocalFilePlay::F_Play()
  755. {
  756. int fileselpos = 0;
  757. CString csFileName;
  758. CString csIP,csTemp, sTemp1;
  759. int nPos = 0;
  760. UpdateData(TRUE);
  761. POSITION pos = m_locFileList.GetFirstSelectedItemPosition();
  762. if(pos == NULL)
  763. {
  764. AfxMessageBox("请选择要播放的文件!");
  765. return;
  766. }
  767. fileselpos = m_locFileList.GetNextSelectedItem(pos);
  768. PlayM4_SetFileRefCallBack(USED_PORT,FileRefDone,(DWORD)this);
  769. csFileName = m_locFileList.GetItemText(fileselpos,0);
  770. if(csFileName.GetLength()==0)
  771. return;
  772. csTemp.Format("%s",csFileName);
  773. nPos=csTemp.Find("\\",0);
  774. while(nPos>=0)
  775. {
  776. csIP.Format("%s",csTemp.Right(csTemp.GetLength()-nPos-1));
  777. csTemp.Format("%s",csIP);
  778. nPos=csTemp.Find("\\",0);
  779. }
  780. nPos=csTemp.Find("_",0);
  781. csIP.Format("%s",csTemp.Left(nPos));
  782. m_csIP.Format("%s",csIP);
  783. if(!PlayM4_OpenFile(USED_PORT,csFileName.GetBuffer(csFileName.GetLength())))
  784. {
  785. TRACE("open file failed!");
  786. return;
  787. }
  788. sTemp1 = m_locFileList.GetItemText(fileselpos,1);
  789. TRACE("Play file of %s", sTemp1);
  790. iSelChannel = atoi(sTemp1);
  791. TRACE("iSelChannel = %d", iSelChannel);
  792. m_iTotalSeconds=PlayM4_GetFileTime(USED_PORT);
  793. if(m_iTotalSeconds<=0)
  794. {
  795. PlayM4_CloseFile(USED_PORT);
  796. MessageBox("文件大小为0!");
  797. return;
  798. }
  799. PlayM4_SetDisplayCallBack(USED_PORT,DisplayCBFun);
  800. if((m_bPlay=PlayM4_Play(USED_PORT,m_hPlayWnd))==FALSE)
  801. {
  802. PlayM4_CloseFile(USED_PORT);
  803. TRACE("play file error!");
  804. return;
  805. }
  806. }
  807. void CLocalFilePlay::F_Pause()
  808. {
  809. if(PlayM4_Pause(USED_PORT,!m_bPause))
  810. {
  811. m_bPause=!m_bPause;
  812. }
  813. else
  814. {
  815. TRACE("PAUSE ERROR!");
  816. }
  817. if(m_bPause)
  818. F_SetPauseState();
  819. else
  820. F_SetPlayState();
  821. }
  822. void CLocalFilePlay::F_Sound(BOOL bSound)
  823. {
  824. if(!m_bPlay)
  825. return;
  826. if(bSound)
  827. {
  828. m_bSound=PlayM4_PlaySound(USED_PORT);
  829. PlayM4_SetVolume(USED_PORT,(WORD)m_ctlVolume.GetPos());
  830. }
  831. else
  832. {
  833. PlayM4_StopSound();
  834. m_bSound=FALSE;
  835. }
  836. if(m_bSound)
  837. F_SetPlaySoundState();
  838. else
  839. F_SetStopSoundState();
  840. }
  841. void CLocalFilePlay::F_SetPlaySoundState()
  842. {
  843. CButton *pButton;
  844. pButton = (CButton *)GetDlgItem(IDC_SOUND);
  845. pButton->SetIcon(m_hSoundStartIcon);
  846. pButton->EnableWindow(TRUE);
  847. }
  848. void CLocalFilePlay::F_SetStopSoundState()
  849. {
  850. CButton *pButton;
  851. pButton = (CButton *)GetDlgItem(IDC_SOUND);
  852. pButton->SetIcon(m_hSoundStopIcon);
  853. pButton->EnableWindow(TRUE);
  854. }
  855. void CLocalFilePlay::F_ShowFullScreen()
  856. {
  857. F_EnableFlashWnd(FALSE);
  858. CRect rc,rcClient;
  859. ::GetWindowRect(m_hPareDlgWnd,m_rcPareDlg);
  860. ::GetWindowRect(m_hPareTabWnd,m_rcPareTab);
  861. ::ScreenToClient(m_hPareDlgWnd,(POINT*)(&m_rcPareTab));
  862. ::ScreenToClient(m_hPareDlgWnd,(POINT*)(&m_rcPareTab)+1);
  863. ::GetWindowRect(m_hWnd,m_rcParent);
  864. ::ScreenToClient(m_hPareTabWnd,(POINT*)(&m_rcParent));
  865. ::ScreenToClient(m_hPareTabWnd,(POINT*)(&m_rcParent)+1);
  866. ::SetWindowPos(m_hPareDlgWnd,NULL,m_rcScreen.left-SCREEN_EDGE,m_rcScreen.top-SCREEN_EDGE,m_rcScreen.Width()+2*SCREEN_EDGE,m_rcScreen.Height()+2*SCREEN_EDGE,SWP_SHOWWINDOW);
  867. ::GetClientRect(m_hPareDlgWnd,rc);
  868. ::SetWindowPos(m_hPareTabWnd,NULL,rc.left,rc.top,rc.Width(),rc.Height(),SWP_SHOWWINDOW);
  869. ::GetClientRect(m_hPareTabWnd,rc);
  870. ::SetWindowPos(m_hWnd,NULL,rc.left,rc.top,rc.Width(),rc.Height(),SWP_SHOWWINDOW);
  871. GetDlgItem(IDC_WND)->GetClientRect(rcClient);
  872. GetDlgItem(IDC_WND)->GetWindowRect(rc);
  873. int iEdge=(rc.Width()-rcClient.Width())/2;
  874. rc=m_rcScreen;
  875. rc.left-=iEdge;
  876. rc.right+=iEdge;
  877. rc.top-=iEdge;
  878. rc.bottom+=iEdge;
  879. this->ScreenToClient(rc);
  880. ::SetWindowPos(GetDlgItem(IDC_WND)->m_hWnd,NULL,rc.left,rc.top,rc.Width(),rc.Height(),SWP_SHOWWINDOW);
  881. Invalidate(FALSE);
  882. UpdateWindow();
  883. }
  884. void CLocalFilePlay::F_ShowNormal()
  885. {
  886. GetDlgItem(IDC_WND)->SetWindowPos(NULL,m_rcWnd.left,m_rcWnd.top,m_rcWnd.Width(),m_rcWnd.Height(),SWP_SHOWWINDOW);
  887. ::SetWindowPos(m_hWnd,NULL,m_rcParent.left,m_rcParent.top,m_rcParent.Width(),m_rcParent.Height(),SWP_SHOWWINDOW);
  888. ::SetWindowPos(m_hPareTabWnd,NULL,m_rcPareTab.left,m_rcPareTab.top,m_rcPareTab.Width(),m_rcPareTab.Height(),SWP_SHOWWINDOW);
  889. ::SetWindowPos(m_hPareDlgWnd,NULL,m_rcPareDlg.left,m_rcPareDlg.top,m_rcPareDlg.Width(),m_rcPareDlg.Height(),SWP_SHOWWINDOW);
  890. F_EnableFlashWnd(TRUE);
  891. Invalidate(FALSE);
  892. UpdateWindow();
  893. }
  894. void CLocalFilePlay::F_EnableFlashWnd(BOOL bEnable)
  895. {
  896. if(bEnable)
  897. {
  898. //THE same to multiplay
  899. GetDlgItem(IDC_PLAYSTATUS)->ModifyStyle(0,WS_VISIBLE,0);
  900. GetDlgItem(IDC_PLAY_FILE)->ModifyStyle(0,WS_VISIBLE,0);
  901. GetDlgItem(IDC_STOP)->ModifyStyle(0,WS_VISIBLE,0);
  902. GetDlgItem(IDC_SLOW)->ModifyStyle(0,WS_VISIBLE,0);
  903. GetDlgItem(IDC_FAST)->ModifyStyle(0,WS_VISIBLE,0);
  904. GetDlgItem(IDC_SOUND)->ModifyStyle(0,WS_VISIBLE,0);
  905. GetDlgItem(IDC_VOLUME_SLIDER)->ModifyStyle(0,WS_VISIBLE,0);
  906. GetDlgItem(IDC_DATESTART)->ModifyStyle(0,WS_VISIBLE,0);
  907. GetDlgItem(IDC_DATESTOP)->ModifyStyle(0,WS_VISIBLE,0);
  908. GetDlgItem(IDC_TIMESTOP)->ModifyStyle(0,WS_VISIBLE,0);
  909. GetDlgItem(IDC_TIMESTART)->ModifyStyle(0,WS_VISIBLE,0);
  910. GetDlgItem(IDC_COMBOFILETYPE)->ModifyStyle(0,WS_VISIBLE,0);
  911. GetDlgItem(IDC_SEARCHLOCALLIST)->ModifyStyle(0,WS_VISIBLE,0);
  912. GetDlgItem(IDC_PROGRESS_SLIDER)->ModifyStyle(0,WS_VISIBLE,0);
  913. GetDlgItem(IDC_CAPPIC)->ModifyStyle(0,WS_VISIBLE,0);
  914. //the only for single play
  915. GetDlgItem(IDC_LOCALFILRLIST)->ModifyStyle(0,WS_VISIBLE,0);
  916. GetDlgItem(IDC_STEP)->ModifyStyle(0,WS_VISIBLE,0);
  917. GetDlgItem(IDC_STEPBACK)->ModifyStyle(0,WS_VISIBLE,0);
  918. GetDlgItem(IDC_DELETEALL)->ModifyStyle(0,WS_VISIBLE,0);
  919. GetDlgItem(IDC_DELETE)->ModifyStyle(0,WS_VISIBLE,0);
  920. GetDlgItem(IDC_COMBOCHANNEL)->ModifyStyle(0,WS_VISIBLE,0);
  921. }
  922. else
  923. {
  924. //THE same to multiplay
  925. GetDlgItem(IDC_PLAYSTATUS)->ModifyStyle(WS_VISIBLE,0,0);
  926. GetDlgItem(IDC_PLAY_FILE)->ModifyStyle(WS_VISIBLE,0,0);
  927. GetDlgItem(IDC_STOP)->ModifyStyle(WS_VISIBLE,0,0);
  928. GetDlgItem(IDC_SLOW)->ModifyStyle(WS_VISIBLE,0,0);
  929. GetDlgItem(IDC_FAST)->ModifyStyle(WS_VISIBLE,0,0);
  930. GetDlgItem(IDC_SOUND)->ModifyStyle(WS_VISIBLE,0,0);
  931. GetDlgItem(IDC_VOLUME_SLIDER)->ModifyStyle(WS_VISIBLE,0,0);
  932. GetDlgItem(IDC_PROGRESS_SLIDER)->ModifyStyle(WS_VISIBLE,0,0);
  933. GetDlgItem(IDC_DATESTART)->ModifyStyle(WS_VISIBLE,0,0);
  934. GetDlgItem(IDC_DATESTOP)->ModifyStyle(WS_VISIBLE,0,0);
  935. GetDlgItem(IDC_TIMESTOP)->ModifyStyle(WS_VISIBLE,0,0);
  936. GetDlgItem(IDC_TIMESTART)->ModifyStyle(WS_VISIBLE,0,0);
  937. GetDlgItem(IDC_COMBOFILETYPE)->ModifyStyle(WS_VISIBLE,0,0);
  938. GetDlgItem(IDC_SEARCHLOCALLIST)->ModifyStyle(WS_VISIBLE,0,0);
  939. GetDlgItem(IDC_CAPPIC)->ModifyStyle(WS_VISIBLE,0,0);
  940. //the only for single play
  941. GetDlgItem(IDC_LOCALFILRLIST)->ModifyStyle(WS_VISIBLE,0,0);
  942. GetDlgItem(IDC_STEP)->ModifyStyle(WS_VISIBLE,0,0);
  943. GetDlgItem(IDC_STEPBACK)->ModifyStyle(WS_VISIBLE,0,0);
  944. GetDlgItem(IDC_DELETEALL)->ModifyStyle(WS_VISIBLE,0,0);
  945. GetDlgItem(IDC_DELETE)->ModifyStyle(WS_VISIBLE,0,0);
  946. GetDlgItem(IDC_COMBOCHANNEL)->ModifyStyle(WS_VISIBLE,0,0);
  947. }
  948. }
  949. void CLocalFilePlay::OnCancel()
  950. {
  951. // TODO: Add extra cleanup here
  952. //CDialog::OnCancel();
  953. }
  954. void CLocalFilePlay::OnSelchangeComboserver()
  955. {
  956. // TODO: Add your control notification handler code here
  957. int iSelServer = m_ServerCtrl.GetCurSel() - 1;
  958. if(iSelServer < 0)
  959. return;
  960. LONG m_lServerID = serverinfo[iSelServer].m_lServerID;
  961. LONG m_lServerType = serverinfo[iSelServer].m_wServerType;
  962. m_lStartChan = serverinfo[iSelServer].m_lStartChannel;
  963. m_iChannelnumber = serverinfo[iSelServer].m_iServerChannelNumber;
  964. m_ChannelCtrl.ResetContent();
  965. CString sTemp;
  966. m_ChannelCtrl.AddString("全部通道");
  967. for(int i=0; i<m_iChannelnumber; i++)
  968. {
  969. sTemp.Format("%d", i+m_lStartChan);
  970. m_ChannelCtrl.AddString(sTemp);
  971. }
  972. m_ChannelCtrl.SetCurSel(0);
  973. }
  974. void CLocalFilePlay::OnSelchangeCombofiletype()
  975. {
  976. // TODO: Add your control notification handler code here
  977. }