FormatDisk.cpp 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. // FormatDisk.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "StoneU_HC_OCX.h"
  5. #include "FormatDisk.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CFormatDisk dialog
  13. CFormatDisk::CFormatDisk(CWnd* pParent /*=NULL*/)
  14. : CDialog(CFormatDisk::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CFormatDisk)
  17. m_static = _T("");
  18. m_ProgressNum = _T("");
  19. //}}AFX_DATA_INIT
  20. }
  21. void CFormatDisk::DoDataExchange(CDataExchange* pDX)
  22. {
  23. CDialog::DoDataExchange(pDX);
  24. //{{AFX_DATA_MAP(CFormatDisk)
  25. DDX_Control(pDX, IDC_PROGRESSFORMAT, m_ProgressFormat);
  26. DDX_Control(pDX, IDC_COMBODISK, m_DiskCtrl);
  27. DDX_Text(pDX, IDC_FORMATSTATIC, m_static);
  28. DDX_Text(pDX, IDC_PROGRESSNUM, m_ProgressNum);
  29. //}}AFX_DATA_MAP
  30. }
  31. BEGIN_MESSAGE_MAP(CFormatDisk, CDialog)
  32. //{{AFX_MSG_MAP(CFormatDisk)
  33. ON_BN_CLICKED(IDC_FORMAT, OnFormat)
  34. ON_BN_CLICKED(IDC_EXIT, OnExit)
  35. ON_WM_TIMER()
  36. //}}AFX_MSG_MAP
  37. END_MESSAGE_MAP()
  38. /////////////////////////////////////////////////////////////////////////////
  39. // CFormatDisk message handlers
  40. void CFormatDisk::OnCancel()
  41. {
  42. // TODO: Add extra cleanup here
  43. // CDialog::OnCancel();
  44. }
  45. BOOL CFormatDisk::OnInitDialog()
  46. {
  47. CDialog::OnInitDialog();
  48. // TODO: Add extra initialization here
  49. CString sTemp;
  50. m_lDiskSel = 0;
  51. sTemp.Format("全部硬盘");
  52. m_DiskCtrl.AddString(sTemp);
  53. for(int i=0; i<(int)m_dwDiskNum; i++)
  54. {
  55. sTemp.Format("硬盘%d", i+1);
  56. m_DiskCtrl.AddString(sTemp);
  57. m_bFormat[i] = FALSE;
  58. m_lFormat[i] = -1;
  59. }
  60. m_DiskCtrl.SetCurSel(m_lDiskSel);
  61. GetDlgItem(IDC_FORMATSTATIC)->ShowWindow(SW_HIDE);
  62. m_ProgressFormat.SetRange(0,100);
  63. m_ProgressFormat.SetPos(0);
  64. m_nTime = SetTimer(FORMAT_TIMER,1000,NULL);
  65. return TRUE; // return TRUE unless you set the focus to a control
  66. // EXCEPTION: OCX Property Pages should return FALSE
  67. }
  68. void CFormatDisk::OnFormat()
  69. {
  70. // TODO: Add your control notification handler code here
  71. LONG lDiskSel;
  72. lDiskSel = m_DiskCtrl.GetCurSel();
  73. if(lDiskSel == 0)
  74. {
  75. m_FormatAll = NET_DVR_FormatDisk(m_lServerID, 0xFF);//0xFF表示所有硬盘
  76. if(m_FormatAll < 0)
  77. {
  78. int Err = GetLastError();
  79. if(Err == NET_DVR_DISK_FORMATING)
  80. {
  81. MessageBox("硬盘正在格式化,不能启动操作!", "温馨提示", MB_ICONINFORMATION);
  82. }
  83. else
  84. {
  85. MessageBox("格式化失败!", "温馨提示", MB_ICONINFORMATION);
  86. }
  87. }
  88. else
  89. {
  90. m_static = "状态:正在格式化硬盘,请等待......";
  91. m_bFormatAll = TRUE;
  92. GetDlgItem(IDC_FORMAT)->EnableWindow(FALSE);
  93. }
  94. }
  95. else
  96. {
  97. //zxy 2005-01-12 lDiskSel => lDiskSel-1
  98. m_lFormat[lDiskSel-1] = NET_DVR_FormatDisk(m_lServerID, lDiskSel-1);
  99. if(m_lFormat[lDiskSel-1] < 0)
  100. {
  101. MessageBox("格式化失败!", "温馨提示", MB_ICONINFORMATION);
  102. }
  103. else
  104. {
  105. m_static = "状态:正在格式化硬盘,请等待......";
  106. m_bFormat[lDiskSel-1] = TRUE;
  107. }
  108. }
  109. UpdateData(FALSE);
  110. }
  111. void CFormatDisk::OnExit()
  112. {
  113. // TODO: Add your control notification handler code here
  114. if(m_bFormatAll)
  115. {
  116. m_bFormatAll = FALSE;
  117. NET_DVR_CloseFormatHandle(m_FormatAll);
  118. }
  119. else
  120. {
  121. for(int i=0; i<(int)m_dwDiskNum; i++)
  122. {
  123. if(m_bFormat[i])
  124. {
  125. m_bFormat[i] = FALSE;
  126. NET_DVR_CloseFormatHandle(m_lFormat[i]);
  127. }
  128. }
  129. }
  130. if(m_nTime)
  131. {
  132. KillTimer(FORMAT_TIMER);
  133. }
  134. CDialog::OnCancel();
  135. }
  136. void CFormatDisk::OnTimer(UINT nIDEvent)
  137. {
  138. // TODO: Add your message handler code here and/or call default
  139. LONG lCurDisk;
  140. LONG lCurDiskPos;
  141. LONG lFoematStatic;
  142. CString sTemp;
  143. if(nIDEvent == FORMAT_TIMER)
  144. {
  145. if(m_bFormatAll)
  146. {
  147. if(NET_DVR_GetFormatProgress(m_FormatAll, &lCurDisk, &lCurDiskPos, &lFoematStatic))
  148. {
  149. switch(lFoematStatic)
  150. {
  151. case 0:
  152. sTemp.Format("状态:硬盘 %d 正在格式化!", lCurDisk+1);
  153. m_static = sTemp;
  154. break;
  155. case 1:
  156. sTemp.Format("状态:硬盘格式化成功!");
  157. GetDlgItem(IDC_FORMAT)->EnableWindow(TRUE);
  158. m_static = sTemp;
  159. m_bFormatAll = FALSE;
  160. NET_DVR_CloseFormatHandle(m_FormatAll);
  161. break;
  162. case 2:
  163. sTemp.Format("状态:硬盘 %d 格式化时出错,不能继续格式化此硬盘!", lCurDisk+1);
  164. GetDlgItem(IDC_FORMAT)->EnableWindow(TRUE);
  165. m_static = sTemp;
  166. m_bFormatAll = FALSE;
  167. NET_DVR_CloseFormatHandle(m_FormatAll);
  168. break;
  169. case 3:
  170. sTemp.Format("状态:硬盘 %d 格式化出现网络异常,该硬盘已不可见!", lCurDisk+1);
  171. GetDlgItem(IDC_FORMAT)->EnableWindow(TRUE);
  172. m_static = sTemp;
  173. m_bFormatAll = FALSE;
  174. NET_DVR_CloseFormatHandle(m_FormatAll);
  175. break;
  176. default:
  177. break;
  178. }
  179. m_ProgressFormat.SetPos(lCurDiskPos);
  180. m_ProgressNum.Format("%d %%", lCurDiskPos);
  181. }
  182. }
  183. for(int i=0; i<(int)m_dwDiskNum; i++)
  184. {
  185. if(m_bFormat[i])
  186. {
  187. if(NET_DVR_GetFormatProgress(m_lFormat[i], &lCurDisk, &lCurDiskPos, &lFoematStatic))
  188. {
  189. switch(lFoematStatic)
  190. {
  191. case 0:
  192. sTemp.Format("状态:硬盘 %d 正在格式化!", lCurDisk+1);
  193. m_static = sTemp;
  194. break;
  195. case 1:
  196. sTemp.Format("状态:硬盘 %d 格式化成功!", lCurDisk+1);
  197. m_static = sTemp;
  198. m_bFormat[i] = FALSE;
  199. NET_DVR_CloseFormatHandle(m_lFormat[i]);
  200. break;
  201. case 2:
  202. sTemp.Format("状态:硬盘 %d 格式化时出错,不能继续格式化此硬盘!", lCurDisk+1);
  203. m_static = sTemp;
  204. m_bFormat[i] = FALSE;
  205. NET_DVR_CloseFormatHandle(m_lFormat[i]);
  206. break;
  207. case 3:
  208. sTemp.Format("状态:硬盘 %d 格式化出现网络异常,该硬盘已不可见!", lCurDisk+1);
  209. m_static = sTemp;
  210. m_bFormat[i] = FALSE;
  211. NET_DVR_CloseFormatHandle(m_lFormat[i]);
  212. break;
  213. default:
  214. break;
  215. }
  216. m_ProgressFormat.SetPos(lCurDiskPos);
  217. m_ProgressNum.Format("%d %%", lCurDiskPos);
  218. }
  219. }
  220. }
  221. }
  222. UpdateData(FALSE);
  223. CDialog::OnTimer(nIDEvent);
  224. }