GetZZLDisplayDlg.cpp
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:8k
源码类别:

P2P编程

开发平台:

Visual C++

  1. /*
  2.  *  Openmysee
  3.  *
  4.  *  This program is free software; you can redistribute it and/or modify
  5.  *  it under the terms of the GNU General Public License as published by
  6.  *  the Free Software Foundation; either version 2 of the License, or
  7.  *  (at your option) any later version.
  8.  *
  9.  *  This program is distributed in the hope that it will be useful,
  10.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *  GNU General Public License for more details.
  13.  *
  14.  *  You should have received a copy of the GNU General Public License
  15.  *  along with this program; if not, write to the Free Software
  16.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17.  *
  18.  */
  19. //
  20. #include "stdafx.h"
  21. #include "GetZZLDisplay.h"
  22. #include "GetZZLDisplayDlg.h"
  23. #include "GetZZL.h"
  24. #include ".getzzldisplaydlg.h"
  25. #ifdef _DEBUG
  26. #define new DEBUG_NEW
  27. #endif
  28. // 用于应用程序“关于”菜单项的 CAboutDlg 对话框
  29. class CAboutDlg : public CDialog
  30. {
  31. public:
  32. CAboutDlg();
  33. // 对话框数据
  34. enum { IDD = IDD_ABOUTBOX };
  35. protected:
  36. virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
  37. // 实现
  38. protected:
  39. DECLARE_MESSAGE_MAP()
  40. };
  41. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  42. {
  43. }
  44. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  45. {
  46. CDialog::DoDataExchange(pDX);
  47. }
  48. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  49. END_MESSAGE_MAP()
  50. // CGetZZLDisplayDlg 对话框
  51. CGetZZLDisplayDlg::CGetZZLDisplayDlg(CWnd* pParent /*=NULL*/)
  52. : CDialog(CGetZZLDisplayDlg::IDD, pParent)
  53. , mstrBufferPath(_T(""))
  54. {
  55. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  56. }
  57. void CGetZZLDisplayDlg::DoDataExchange(CDataExchange* pDX)
  58. {
  59. CDialog::DoDataExchange(pDX);
  60. DDX_Control(pDX, IDC_FILE_LST, mLstFile);
  61. //DDX_Control(pDX, IDC_CHK_ALL, mbtnCheckAll);
  62. DDX_Text(pDX, IDC_EDT_ZZL_PATH, mstrBufferPath);
  63. }
  64. BEGIN_MESSAGE_MAP(CGetZZLDisplayDlg, CDialog)
  65. ON_WM_SYSCOMMAND()
  66. ON_WM_PAINT()
  67. ON_WM_QUERYDRAGICON()
  68. //}}AFX_MSG_MAP
  69. ON_BN_CLICKED(IDC_BTN_ADD, OnBnClickedBtnAdd)
  70. ON_BN_CLICKED(IDC_BTN_START, OnBnClickedBtnStart)
  71. ON_BN_CLICKED(IDC_BTN_SET_BAFFER, OnBnClickedBtnSetBaffer)
  72. ON_BN_CLICKED(IDC_BTN_DEL, OnBnClickedBtnDel)
  73. ON_BN_CLICKED(IDC_BTN_STOP, OnBnClickedBtnStop)
  74. ON_WM_CLOSE()
  75. END_MESSAGE_MAP()
  76. // CGetZZLDisplayDlg 消息处理程序
  77. BOOL CGetZZLDisplayDlg::OnInitDialog()
  78. {
  79. CDialog::OnInitDialog();
  80. // 将“关于...”菜单项添加到系统菜单中。
  81. // IDM_ABOUTBOX 必须在系统命令范围内。
  82. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  83. ASSERT(IDM_ABOUTBOX < 0xF000);
  84. CMenu* pSysMenu = GetSystemMenu(FALSE);
  85. if (pSysMenu != NULL)
  86. {
  87. CString strAboutMenu;
  88. strAboutMenu.LoadString(IDS_ABOUTBOX);
  89. if (!strAboutMenu.IsEmpty())
  90. {
  91. pSysMenu->AppendMenu(MF_SEPARATOR);
  92. pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  93. }
  94. }
  95. // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
  96. //  执行此操作
  97. SetIcon(m_hIcon, TRUE); // 设置大图标
  98. SetIcon(m_hIcon, FALSE); // 设置小图标
  99. // TODO: 在此添加额外的初始化代码
  100. //moCommander.CreateInstance();
  101. mLstFile.ResetContent();
  102. FILE* lfp = NULL;
  103. //甚至缓存保存的路径
  104. char lszBuf[1024] = {0};
  105. GetModuleFileName(NULL,lszBuf,1024);
  106. char* lszTemp = strrchr(lszBuf, '\');
  107. if (NULL != lszTemp)
  108. {
  109. *lszTemp = '';
  110. }
  111. strcat(lszBuf,"\config.dat");
  112. lfp = fopen(lszBuf, "r");
  113. if (lfp != NULL)
  114. {
  115. int liCount = 0;
  116. fread(&liCount, sizeof(int), 1, lfp);
  117. char lpTem[MAX_PATH] = {0};
  118. fread(lpTem, sizeof(char), liCount, lfp);
  119. mstrBufferPath = lpTem;
  120. moCommander.SetBuffer(mstrBufferPath);
  121. fclose(lfp);
  122. }
  123. //mLstFile.AddString("1");
  124. //mbtnCheckAll = 1;
  125. UpdateData(false);
  126. return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE
  127. }
  128. void CGetZZLDisplayDlg::OnClose()
  129. {
  130. FILE* lfp = NULL;
  131. //甚至缓存读取的路径
  132. char lszBuf[1024] = {0};
  133. GetModuleFileName(NULL,lszBuf,1024);
  134. char* lszTemp = strrchr(lszBuf, '\');
  135. if (NULL != lszTemp)
  136. {
  137. *lszTemp = '';
  138. }
  139. strcat(lszBuf,"\config.dat");
  140. lfp = fopen(lszBuf, "w");
  141. if (lfp != NULL)
  142. {
  143. int liCount = mstrBufferPath.GetLength();
  144. fwrite(&liCount, sizeof(int), 1, lfp);
  145. fwrite((LPCTSTR)mstrBufferPath, sizeof(char), liCount, lfp);
  146. fclose(lfp);
  147. }
  148. CDialog::OnClose();
  149. }
  150. void CGetZZLDisplayDlg::OnSysCommand(UINT nID, LPARAM lParam)
  151. {
  152. if ((nID & 0xFFF0) == IDM_ABOUTBOX)
  153. {
  154. CAboutDlg dlgAbout;
  155. dlgAbout.DoModal();
  156. }
  157. else
  158. {
  159. CDialog::OnSysCommand(nID, lParam);
  160. }
  161. }
  162. // 如果向对话框添加最小化按钮,则需要下面的代码
  163. //  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
  164. //  这将由框架自动完成。
  165. void CGetZZLDisplayDlg::OnPaint() 
  166. {
  167. if (IsIconic())
  168. {
  169. CPaintDC dc(this); // 用于绘制的设备上下文
  170. SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
  171. // 使图标在工作矩形中居中
  172. int cxIcon = GetSystemMetrics(SM_CXICON);
  173. int cyIcon = GetSystemMetrics(SM_CYICON);
  174. CRect rect;
  175. GetClientRect(&rect);
  176. int x = (rect.Width() - cxIcon + 1) / 2;
  177. int y = (rect.Height() - cyIcon + 1) / 2;
  178. // 绘制图标
  179. dc.DrawIcon(x, y, m_hIcon);
  180. }
  181. else
  182. {
  183. CDialog::OnPaint();
  184. }
  185. }
  186. //当用户拖动最小化窗口时系统调用此函数取得光标显示。
  187. HCURSOR CGetZZLDisplayDlg::OnQueryDragIcon()
  188. {
  189. return static_cast<HCURSOR>(m_hIcon);
  190. }
  191. void CGetZZLDisplayDlg::OnBnClickedBtnAdd()
  192. {
  193. CFileDialog loFileDlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT|OFN_EXPLORER|OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
  194. "AVI Files (*.avi)|*.avi|WAV Files(*.wav)|*.wav|WMV Files (*.wmv)|*.wmv|WMA Files (*.wma)|*.wma||", NULL,0);
  195. loFileDlg.m_ofn.lStructSize = sizeof(loFileDlg.m_ofn);
  196. loFileDlg.m_ofn.nMaxFile = 2046;
  197. loFileDlg.m_ofn.lpstrFile = new char[2046];
  198. ZeroMemory(loFileDlg.m_ofn.lpstrFile,sizeof(loFileDlg.m_ofn.lpstrFile));
  199. if (IDOK  == loFileDlg.DoModal())
  200. {
  201. POSITION pos = loFileDlg.GetStartPosition();
  202. CString lstrFile;
  203. CString lstrFileName;
  204. while (pos != NULL)
  205. {
  206. lstrFile =loFileDlg.GetNextPathName(pos);
  207. char lszFile [MAX_PATH] = {0};
  208. strcpy(lszFile, (LPCTSTR)lstrFile);
  209. strlwr(lszFile);
  210. lstrFile = lszFile;
  211. //得到其文件名
  212. char* lszindex = strrchr((LPCTSTR)lstrFile, '\');
  213. if(lszindex != NULL) 
  214. {
  215. lszindex++;
  216. lstrFileName = lszindex;
  217. }
  218. if (FALSE == moCommander.SetSourceFile(lstrFile, lstrFileName))
  219. {
  220. CString lstr = "文件"" + lstrFileName + ""已经在文件列表里存在";
  221. MessageBox((LPCTSTR)lstr, "错误",MB_OK|MB_ICONSTOP);
  222. continue;
  223. }
  224. mLstFile.AddString (lstrFileName);
  225. }
  226. }
  227. delete []loFileDlg.m_ofn.lpstrFile;
  228. loFileDlg.m_ofn.lpstrFile = NULL;
  229. }
  230. //开始转换
  231. void CGetZZLDisplayDlg::OnBnClickedBtnStart()
  232. {
  233. if (TRUE == moCommander.RunCommader(this))
  234. {
  235. GetDlgItem(IDC_BTN_ADD)->EnableWindow(FALSE);
  236. GetDlgItem(IDC_BTN_DEL)->EnableWindow(FALSE);
  237. }
  238. GetDlgItem(IDC_STATE_TEXT)->SetWindowText(NULL);
  239. }
  240. void CGetZZLDisplayDlg::OnBnClickedBtnStop()
  241. {
  242. moCommander.Stop();
  243. moCommander.SetClose();
  244. GetDlgItem(IDC_STATE_TEXT)->SetWindowText(NULL);
  245. GetDlgItem(IDC_BTN_ADD)->EnableWindow(TRUE);
  246. GetDlgItem(IDC_BTN_DEL)->EnableWindow(TRUE);
  247. }
  248. void CGetZZLDisplayDlg::OnBnClickedBtnDel()
  249. {
  250. int i;
  251. CString lstrItemText;
  252. if((i = mLstFile.GetCurSel()) != LB_ERR)
  253. {
  254. mLstFile.GetText(i, lstrItemText);
  255. moCommander.DelSourceFile(lstrItemText);
  256. mLstFile.DeleteString(i);
  257. }
  258. }
  259. void CGetZZLDisplayDlg::OnBnClickedBtnSetBaffer()
  260. {
  261. BROWSEINFO bInfo;
  262. TCHAR tchPath[255];
  263. ZeroMemory(&bInfo, sizeof(bInfo));
  264. bInfo.hwndOwner = m_hWnd;
  265. bInfo.lpszTitle = _T("所选择路径: ");
  266. bInfo.ulFlags = BIF_RETURNONLYFSDIRS;
  267. LPITEMIDLIST lpDlist;
  268. lpDlist = SHBrowseForFolder(&bInfo);
  269. if(lpDlist != NULL) 
  270. {
  271. SHGetPathFromIDList(lpDlist, tchPath);
  272. //TRACE(tchPath);
  273. mstrBufferPath = tchPath;
  274. moCommander.SetBuffer(mstrBufferPath);
  275. UpdateData(false);
  276. }
  277. }