MainFrm.cpp
上传用户:tjfeida
上传日期:2013-03-10
资源大小:1917k
文件大小:17k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. /*********************************************
  4. **该文件是属于WolfFTP工程中的。如果有什么问题
  5. **请联系
  6. **         tablejiang@21cn.com
  7. **或者访问
  8. **         http://wolfftp.51.net
  9. **以得到最新的支持。
  10. *********************************************/
  11. #include "stdafx.h"
  12. #include "QuickFTP.h"
  13. #include "MainFrm.h"
  14. #ifdef _DEBUG
  15. #define new DEBUG_NEW
  16. #undef THIS_FILE
  17. static char THIS_FILE[] = __FILE__;
  18. #endif
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CMainFrame
  21. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  22. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  23. //{{AFX_MSG_MAP(CMainFrame)
  24. ON_WM_CREATE()
  25. ON_WM_SIZE()
  26. ON_COMMAND(IDR_FTP_CONNECT, OnFtpConnect)
  27. ON_COMMAND(IDR_FTP_SITEMANAGE, OnFtpSitemanage)
  28. ON_COMMAND(IDR_FTP_DISCONNECT, OnFtpDisconnect)
  29. ON_COMMAND(IDR_FTP_RECONNECT, OnFtpReconnect)
  30. ON_COMMAND(IDR_FTP_SETTING, OnFtpSetting)
  31. ON_WM_CHAR()
  32. ON_COMMAND(IDR_WINDOW_TRANSMITDLG, OnWindowTransmitdlg)
  33. ON_WM_CLOSE()
  34. ON_COMMAND(IDR_REMOTE_ABORD, OnRemoteAbord)
  35. ON_COMMAND(IDR_REMOTE_DELETE, OnRemoteDelete)
  36. ON_COMMAND(IDR_REMOTE_DOWNLOAD, OnRemoteDownload)
  37. ON_COMMAND(IDR_REMOTE_REFRESH, OnRemoteRefresh)
  38. ON_COMMAND(IDR_REMOTE_UPLOAD, OnRemoteUpload)
  39. ON_COMMAND(IDR_LOCAL_DELETE, OnLocalDelete)
  40. ON_COMMAND(IDR_LOCAL_DOWNLOAD, OnLocalDownload)
  41. ON_COMMAND(IDR_LOCAL_REFRESH, OnLocalRefresh)
  42. ON_COMMAND(IDR_LOCAL_UPLOAD, OnLocalUpload)
  43. ON_COMMAND(IDR_QUEUE_RUN, OnQueueRun)
  44. ON_COMMAND(IDR_QUEUE_STOP, OnQueueStop)
  45. ON_WM_RBUTTONDOWN()
  46. ON_COMMAND(IDR_REMOTE_EDIT, OnRemoteEdit)
  47. ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
  48. ON_COMMAND(IDR_REMOTE_MKDIR, OnRemoteMkdir)
  49. ON_UPDATE_COMMAND_UI(IDR_WINDOW_TRANSMITDLG, OnUpdateWindowTransmitdlg)
  50. ON_COMMAND(IDR_BACK_RUN, OnBackRun)
  51. ON_COMMAND(IDR_BACK_STOP, OnBackStop)
  52. ON_COMMAND(IDR_BACK_SELALL, OnBackSelall)
  53. ON_COMMAND(IDR_BACK_STOPALL, OnBackStopall)
  54. //}}AFX_MSG_MAP
  55. END_MESSAGE_MAP()
  56. static UINT indicators[] =
  57. {
  58. ID_SEPARATOR,           // status line indicator
  59. ID_INDICATOR_CAPS,
  60. ID_INDICATOR_NUM,
  61. ID_INDICATOR_SCRL,
  62. };
  63. /////////////////////////////////////////////////////////////////////////////
  64. // CMainFrame construction/destruction
  65. CMainFrame::CMainFrame()
  66. {
  67. // TODO: add member initialization code here
  68. m_bCreateSplitter = FALSE ;
  69. LoadDefaultSite( ) ;
  70. }
  71. CMainFrame::~CMainFrame()
  72. {
  73. SaveDefaultSite( ) ;
  74. }
  75. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  76. {
  77. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  78. return -1;
  79. if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  80. | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
  81. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  82. {
  83. TRACE0("Failed to create toolbarn");
  84. return -1;      // fail to create
  85. }
  86. if (!m_wndStatusBar.Create(this) ||
  87. !m_wndStatusBar.SetIndicators(indicators,
  88.   sizeof(indicators)/sizeof(UINT)))
  89. {
  90. TRACE0("Failed to create status barn");
  91. return -1;      // fail to create
  92. }
  93. //m_wndStatusBar.Create( WS_CHILD|WS_VISIBLE|CCS_BOTTOM|SBARS_SIZEGRIP,
  94. //    CRect(0,0,0,0), this, 0x113 )  ;
  95. RECT rect ;
  96. GetWindowRect( &rect ) ;
  97. m_wndStatusBar.SetControlPos( rect.right - rect.left ) ;
  98. m_wndStatusBar.MoveWindow( 0 , 0 , 0 , 0 ) ;
  99. ShowWindow(SW_SHOWMAXIMIZED);
  100. UpdateWindow();
  101. // TODO: Delete these three lines if you don't want the toolbar to
  102. //  be dockable
  103. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  104. EnableDocking(CBRS_ALIGN_ANY);
  105. DockControlBar(&m_wndToolBar);
  106. m_Ftp.m_hParentWnd = m_hWnd ;
  107. return 0;
  108. }
  109. BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
  110. CCreateContext* pContext)
  111. {
  112. RECT rect ;
  113. GetClientRect( &rect ) ;
  114. // 
  115. m_JobListDlg.Create( IDD_DIALOG_MULTI , this ) ;
  116. m_JobListDlg.ShowWindow( SW_HIDE ) ;
  117. m_GeniusDlg.Create( IDD_DIALOG_GENIUS , &m_JobListDlg ) ;
  118. //m_GeniusDlg.ShowWindow( SW_HIDE ) ;
  119. m_GeniusDlg.SetTransmitWnd( m_JobListDlg.m_hWnd ) ;
  120. m_GeniusDlg.SetMainWnd( this ) ;
  121. //PostMessage( WM_SYSCOMMAND , SC_MAXIMIZE , 0 ) ;
  122. //SetWindowLong( m_hWnd , GWL_STYLE , WS_MAXIMIZE ) ;
  123. /*
  124. m_wndSplitter.CreateStatic(this,
  125. 3 , 1  ) ;               // TODO: adjust the number of rows, columns
  126. m_wndSplitter.CreateView( 0 , 0 , RUNTIME_CLASS( CMyInfoView ) , CSize( rect.right , rect.bottom/3 ) , pContext ) ;
  127. m_wndSplitter.CreateView( 2 , 0 , RUNTIME_CLASS( CDownloadFileView ) , CSize( rect.right , rect.bottom/3 ) , pContext ) ;
  128. m_wndSplitter2.CreateStatic( &m_wndSplitter , 1 , 2 , WS_CHILD | WS_VISIBLE | WS_BORDER,  // style, WS_BORDER is needed
  129. m_wndSplitter.IdFromRowCol( 1 , 0) ) ;
  130. m_wndSplitter2.CreateView( 0 , 0 , RUNTIME_CLASS( CDirListView ) , CSize( rect.right/2 , rect.bottom/3 ) , pContext ) ;
  131. m_wndSplitter2.CreateView( 0 , 1 , RUNTIME_CLASS( CFtpDirView ) , CSize( rect.right/2 , rect.bottom/3 ) , pContext ) ;
  132. CFtpDirView* pFtpDirWnd = ( CFtpDirView *)m_wndSplitter2.GetPane( 0 , 1 ) ;
  133. CDirListView* pDirListWnd = ( CDirListView*)m_wndSplitter2.GetPane( 0 , 0 ) ;
  134. CMyInfoView* pFtpInfoWnd = ( CMyInfoView* )m_wndSplitter.GetPane( 0 , 0 ) ;
  135. CDownloadFileView* pDownFileWnd = ( CDownloadFileView*)m_wndSplitter.GetPane( 1 , 0 ) ;
  136. pFtpDirWnd->m_hDisplayWnd = pFtpInfoWnd->m_hWnd ;
  137. pFtpInfoWnd->m_hFtpDirListWnd = pFtpDirWnd->m_hWnd ;
  138. m_bCreateSplitter = TRUE ;
  139. m_ViewWndInfo.pFtpDirView = pFtpDirWnd ;
  140. m_ViewWndInfo.pDirListView = pDirListWnd ;
  141. m_ViewWndInfo.pDownFileView = pDownFileWnd ;
  142. m_ViewWndInfo.pInfoView = pFtpInfoWnd ;
  143. pFtpDirWnd->m_pFtp = &m_Ftp ;
  144. */
  145. m_wndSplitter.CreateStatic(this,
  146. 2 , 1  ) ;               // TODO: adjust the number of rows, columns
  147. m_wndSplitter2.CreateStatic( &m_wndSplitter , 1 , 2 , WS_CHILD | WS_VISIBLE | WS_BORDER,  // style, WS_BORDER is needed
  148. m_wndSplitter.IdFromRowCol( 0 , 0) ) ;
  149. m_wndSplitter3.CreateStatic( &m_wndSplitter , 1 , 2 , WS_CHILD | WS_VISIBLE | WS_BORDER,  // style, WS_BORDER is needed
  150. m_wndSplitter.IdFromRowCol( 1 , 0 ) ) ;
  151. m_wndSplitter3.CreateView( 0 , 0 , RUNTIME_CLASS( CDownloadFileView ) , CSize( rect.right/2 , rect.bottom/3 ) , pContext ) ;
  152. m_wndSplitter3.CreateView( 0 , 1 , RUNTIME_CLASS( CMyInfoView ) , CSize( rect.right/2 , rect.bottom/3 ) , pContext ) ;
  153. m_wndSplitter2.CreateView( 0 , 0 , RUNTIME_CLASS( CDirListView ) , CSize( rect.right/2 , rect.bottom*2/3 ) , pContext ) ;
  154. m_wndSplitter2.CreateView( 0 , 1 , RUNTIME_CLASS( CFtpDirView ) , CSize( rect.right/2 , rect.bottom*2/3 ) , pContext ) ;
  155. CFtpDirView* pFtpDirWnd = ( CFtpDirView *)m_wndSplitter2.GetPane( 0 , 1 ) ;
  156. CDirListView* pDirListWnd = ( CDirListView*)m_wndSplitter2.GetPane( 0 , 0 ) ;
  157. CMyInfoView* pFtpInfoWnd = ( CMyInfoView* )m_wndSplitter3.GetPane( 0 , 1 ) ;
  158. CDownloadFileView* pDownFileWnd = ( CDownloadFileView*)m_wndSplitter3.GetPane( 0 , 0 ) ;
  159. pFtpDirWnd->m_hDisplayWnd = pFtpInfoWnd->m_hWnd ;
  160. pFtpInfoWnd->m_hFtpDirListWnd = pFtpDirWnd->m_hWnd ;
  161. m_bCreateSplitter = TRUE ;
  162. m_ViewWndInfo.pFtpDirView = pFtpDirWnd ;
  163. m_ViewWndInfo.pDirListView = pDirListWnd ;
  164. m_ViewWndInfo.pDownFileView = pDownFileWnd ;
  165. m_ViewWndInfo.pInfoView = pFtpInfoWnd ;
  166. pFtpDirWnd->m_pFtp = &m_Ftp ;
  167. pDirListWnd->m_pFtp = &m_Ftp ;
  168. pDownFileWnd->m_pFtp = &m_Ftp ;
  169. m_Ftp.m_hWndInfo.hFtpDirListWnd = pFtpDirWnd->m_hWnd ;
  170. m_Ftp.m_hWndInfo.hInfoWnd = pFtpInfoWnd->m_hWnd ;
  171. m_Ftp.m_hWndInfo.hLocalDirListWnd = pDirListWnd->m_hWnd ;
  172. m_Ftp.m_hWndInfo.hWndJobWnd = pDownFileWnd->m_hWnd ;
  173. memcpy(  &m_JobListDlg.m_Transmit.m_hWndInfo , &m_Ftp.m_hWndInfo , sizeof( HWNDINFO ) ) ;
  174. LISTINFO ListInfo ;
  175. ListInfo.hBkJobList = m_JobListDlg.m_ListCtrl.m_hWnd ;
  176. ListInfo.hCurJobList = pDownFileWnd->m_ListCtrl.m_hWnd ;
  177. ListInfo.hFtpList = pFtpDirWnd->m_ListCtrl.m_hWnd ;
  178. ListInfo.hLocalList = pDirListWnd->m_ListCtrl.m_hWnd ;
  179. ListInfo.hGenius = m_GeniusDlg.m_hWnd ;
  180. memcpy( &pFtpDirWnd->m_ListInfo , &ListInfo ,  sizeof( LISTINFO ) ) ;
  181. memcpy( &pDirListWnd->m_ListInfo , &ListInfo , sizeof( LISTINFO ) ) ;
  182. pFtpDirWnd->m_pBkTransmitDlg = &m_JobListDlg ;
  183. pDirListWnd->m_pBkTransmitDlg = &m_JobListDlg ;
  184. pDownFileWnd->SetFileQueue( &m_Ftp.m_FileQueue ) ;
  185. ConnectDefaultSite( ) ;
  186. return true ;
  187. }
  188. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  189. {
  190. if( !CFrameWnd::PreCreateWindow(cs) )
  191. return FALSE;
  192. // TODO: Modify the Window class or styles here by modifying
  193. //  the CREATESTRUCT cs
  194. return TRUE;
  195. }
  196. /////////////////////////////////////////////////////////////////////////////
  197. // CMainFrame diagnostics
  198. #ifdef _DEBUG
  199. void CMainFrame::AssertValid() const
  200. {
  201. CFrameWnd::AssertValid();
  202. }
  203. void CMainFrame::Dump(CDumpContext& dc) const
  204. {
  205. CFrameWnd::Dump(dc);
  206. }
  207. #endif //_DEBUG
  208. /////////////////////////////////////////////////////////////////////////////
  209. // CMainFrame message handlers
  210. void CMainFrame::OnSize(UINT nType, int cx, int cy) 
  211. {
  212. CFrameWnd::OnSize(nType, cx, cy);
  213. // TODO: Add your message handler code here
  214. RECT rect ;
  215. GetClientRect( &rect ) ;
  216. if( m_bCreateSplitter )
  217. {
  218. /*
  219. m_wndSplitter.SetRowInfo( 0 , rect.bottom/3 , 10 ) ;
  220. m_wndSplitter.SetRowInfo( 1 , rect.bottom/3 , 10 ) ;
  221. m_wndSplitter.SetRowInfo( 2 , rect.bottom/3 , 10 ) ;
  222. m_wndSplitter2.SetColumnInfo( 0 , rect.right / 2 , 10 ) ;
  223. m_wndSplitter2.SetColumnInfo( 1 , rect.right / 2 , 10 ) ;
  224. m_wndSplitter.RecalcLayout();
  225. m_wndSplitter2.RecalcLayout() ;
  226. */
  227. m_wndSplitter.SetRowInfo( 0 , rect.bottom*2/3 , 10 ) ;
  228. m_wndSplitter.SetRowInfo( 1 , rect.bottom/3 , 10 ) ;
  229. m_wndSplitter2.SetColumnInfo( 0 , rect.right / 2 , 10 ) ;
  230. m_wndSplitter2.SetColumnInfo( 1 , rect.right / 2 , 10 ) ;
  231. m_wndSplitter3.SetColumnInfo( 0 , rect.right / 2 , 10 ) ;
  232. m_wndSplitter3.SetColumnInfo( 1 , rect.right / 2 , 10 ) ;
  233. m_wndSplitter.RecalcLayout();
  234. m_wndSplitter2.RecalcLayout() ;
  235. }
  236. if( m_wndStatusBar.m_hWnd )
  237. {
  238. GetWindowRect( &rect ) ;
  239. m_wndStatusBar.SetControlPos( rect.right - rect.left ) ;
  240. //m_wndStatusBar.MoveWindow( 0 , 0 , 100 , 100 ) ;
  241. }
  242. }
  243. void CMainFrame::OnFtpConnect() 
  244. {
  245. // TODO: Add your command handler code here
  246. CSetDlgInputSite dlg ;
  247. dlg.SetConnectEnable( true ) ;
  248. if( dlg.DoModal( ) == IDOK )
  249. {
  250. m_ViewWndInfo.pFtpDirView->DisconnectFtp( ) ;
  251. m_ViewWndInfo.pFtpDirView->ConnectFtp( &dlg.m_SiteInfo ) ;
  252. memcpy( &m_CurSiteInfo , &dlg.m_SiteInfo , sizeof( SITEINFO ) );
  253. }
  254. /*
  255. CSetDlgSelectSite SiteDlg;
  256. if( SiteDlg.DoModal() == IDOK )
  257. {
  258. m_ViewWndInfo.pFtpDirView->DisconnectFtp( ) ;
  259. m_ViewWndInfo.pFtpDirView->ConnectFtp( &SiteDlg.m_CurSelSite ) ;
  260. memcpy( &m_CurSiteInfo , &SiteDlg.m_CurSelSite , sizeof( SITEINFO ) );
  261. }
  262. */
  263. }
  264. void CMainFrame::OnFtpSitemanage() 
  265. {
  266. // TODO: Add your command handler code here
  267. CSetDlgSelectSite SiteDlg;
  268. if( SiteDlg.DoModal() == IDOK )
  269. {
  270. m_ViewWndInfo.pFtpDirView->DisconnectFtp( ) ;
  271. m_ViewWndInfo.pFtpDirView->ConnectFtp( &SiteDlg.m_CurSelSite ) ;
  272. memcpy( &m_CurSiteInfo , &SiteDlg.m_CurSelSite , sizeof( SITEINFO ) );
  273. }
  274. }
  275. void CMainFrame::OnFtpDisconnect() 
  276. {
  277. // TODO: Add your command handler code here
  278. m_ViewWndInfo.pFtpDirView->DisconnectFtp( ) ;
  279. }
  280. void CMainFrame::OnFtpReconnect() 
  281. {
  282. // TODO: Add your command handler code here
  283. if( strlen( m_CurSiteInfo.host ) == 0 )
  284. return  ;
  285. m_ViewWndInfo.pFtpDirView->DisconnectFtp( ) ;
  286. m_ViewWndInfo.pFtpDirView->ConnectFtp( &m_CurSiteInfo ) ;
  287. }
  288. void CMainFrame::OnFtpSetting() 
  289. {
  290. // TODO: Add your command handler code here
  291. }
  292. void CMainFrame::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
  293. {
  294. // TODO: Add your message handler code here and/or call default
  295. CFrameWnd::OnChar(nChar, nRepCnt, nFlags);
  296. }
  297. void CMainFrame::OnWindowTransmitdlg() 
  298. {
  299. // TODO: Add your command handler code here
  300. if( m_JobListDlg.IsWindowVisible( ) )
  301. m_JobListDlg.ShowWindow( SW_HIDE ) ;
  302. else
  303. m_JobListDlg.ShowWindow( SW_SHOW ) ;
  304. }
  305. void CMainFrame::OnClose() 
  306. {
  307. // TODO: Add your message handler code here and/or call default
  308. m_Ftp.Logout( ) ;
  309. CFrameWnd::OnClose();
  310. }
  311. LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
  312. {
  313. // TODO: Add your specialized code here and/or call the base class
  314. switch( message )
  315. {
  316. case FTP_TRANSMIT_DATA_MSG :
  317. {
  318. m_wndStatusBar.SetPos( wParam ) ;
  319. m_wndStatusBar.SetSpeed( lParam ) ;
  320. }
  321. break ;
  322. case SEND_TRANSMIT_FILENAME_MSG :
  323. {
  324. char* pName ;
  325. pName = (char*)wParam ;
  326. m_wndStatusBar.SetDisplayString( pName ) ;
  327. delete pName ;
  328. }
  329. break ;
  330. default :
  331. break ;
  332. }
  333. return CFrameWnd::DefWindowProc(message, wParam, lParam);
  334. }
  335. void CMainFrame::OnRemoteAbord() 
  336. {
  337. // TODO: Add your command handler code here
  338. m_ViewWndInfo.pFtpDirView->AbordAction( ) ;
  339. }
  340. void CMainFrame::OnRemoteDelete() 
  341. {
  342. // TODO: Add your command handler code here
  343. m_ViewWndInfo.pFtpDirView->DeleteSelectItem() ;
  344. }
  345. void CMainFrame::OnRemoteDownload() 
  346. {
  347. // TODO: Add your command handler code here
  348. m_ViewWndInfo.pFtpDirView->DownLoadSelectItem( NULL ) ;
  349. }
  350. void CMainFrame::OnRemoteRefresh() 
  351. {
  352. // TODO: Add your command handler code here
  353. m_ViewWndInfo.pFtpDirView->RefreshCurrentDirectory( ) ;
  354. }
  355. void CMainFrame::OnRemoteUpload() 
  356. {
  357. // TODO: Add your command handler code here
  358. m_ViewWndInfo.pDirListView->UploadSelectItem( NULL ) ;
  359. }
  360. void CMainFrame::OnLocalDelete() 
  361. {
  362. // TODO: Add your command handler code here
  363. m_ViewWndInfo.pDirListView->m_ListCtrl.DeleteSelectItem( ) ;
  364. }
  365. void CMainFrame::OnLocalDownload() 
  366. {
  367. // TODO: Add your command handler code here
  368. m_ViewWndInfo.pFtpDirView->DownLoadSelectItem( NULL ) ;
  369. }
  370. void CMainFrame::OnLocalRefresh() 
  371. {
  372. // TODO: Add your command handler code here
  373. m_ViewWndInfo.pDirListView->RefreshCurDir( ) ;
  374. }
  375. void CMainFrame::OnLocalUpload() 
  376. {
  377. // TODO: Add your command handler code here
  378. m_ViewWndInfo.pDirListView->UploadSelectItem( NULL ) ;
  379. }
  380. void CMainFrame::OnQueueRun() 
  381. {
  382. // TODO: Add your command handler code here
  383. m_ViewWndInfo.pDownFileView->SetSelectItemStatus( FILE_STATE_READY ) ;
  384. m_Ftp.RunJobList( ) ;
  385. }
  386. void CMainFrame::OnQueueStop() 
  387. {
  388. // TODO: Add your command handler code here
  389. m_Ftp.SetStopSign( false ) ;
  390. m_ViewWndInfo.pDownFileView->SetSelectItemStatus( FILE_STATE_STOP ) ;
  391. }
  392. void CMainFrame::OnRButtonDown(UINT nFlags, CPoint point) 
  393. {
  394. // TODO: Add your message handler code here and/or call default
  395. CFrameWnd::OnRButtonDown(nFlags, point);
  396. }
  397. void CMainFrame::OnRemoteEdit() 
  398. {
  399. // TODO: Add your command handler code here
  400. m_ViewWndInfo.pFtpDirView->EditSelectItem( ) ;
  401. }
  402. void CMainFrame::OnAppAbout() 
  403. {
  404. // TODO: Add your command handler code here
  405. CAboutDlg dlg ;
  406. dlg.DoModal( ) ;
  407. }
  408. void CMainFrame::OnRemoteMkdir() 
  409. {
  410. // TODO: Add your command handler code here
  411. if( !m_Ftp.IsConnect( ) )
  412. return ;
  413. CInputFileNameDlg dlg ;
  414. dlg.m_strName = "新建目录" ;
  415. if( dlg.DoModal( ) == IDOK )
  416. {
  417. m_Ftp.CreateDirectory( dlg.m_strName ) ;
  418. }
  419. }
  420. void CMainFrame::OnUpdateWindowTransmitdlg(CCmdUI* pCmdUI) 
  421. {
  422. // TODO: Add your command update UI handler code here
  423. if( m_JobListDlg.IsWindowVisible() )
  424. pCmdUI->SetCheck( ) ;
  425. else
  426. pCmdUI->SetCheck( 0 ) ;
  427. }
  428. void CMainFrame::OnBackRun() 
  429. {
  430. // TODO: Add your command handler code here
  431. m_JobListDlg.SetSelectItemStatus( FILE_STATE_READY ) ;
  432. m_JobListDlg.StartTransmitFile( ) ;
  433. }
  434. void CMainFrame::OnBackStop() 
  435. {
  436. // TODO: Add your command handler code here
  437. m_JobListDlg.m_Transmit.SetStopSign( false ) ;
  438. m_JobListDlg.SetSelectItemStatus( FILE_STATE_STOP ) ;
  439. }
  440. BOOL CMainFrame::LoadDefaultSite()
  441. {
  442. char szPath[MAX_PATH] ;
  443. GetCurExePath ( szPath ) ;
  444. strcat( szPath , DEFAULT_SITE_FILENAME ) ;
  445. memset( &m_CurSiteInfo , 0 , sizeof( m_CurSiteInfo ) ) ;
  446. CFile file ;
  447. if( !file.Open( szPath , CFile::modeRead ) )
  448. return false ;
  449. UINT iRead = 0 ;
  450. try
  451. {
  452. iRead = file.Read( &m_CurSiteInfo , sizeof( m_CurSiteInfo ) ) ;
  453. }
  454. catch( CFileException * e )
  455. {
  456. e->Delete( ) ;
  457. file.Close() ;
  458. memset( &m_CurSiteInfo , 0 , sizeof( m_CurSiteInfo ) ) ;
  459. return false ;
  460. }
  461. if( iRead != sizeof( m_CurSiteInfo ) )
  462. {
  463. file.Close() ;
  464. memset( &m_CurSiteInfo , 0 , sizeof( m_CurSiteInfo ) ) ;
  465. return false ;
  466. }
  467. else
  468. {
  469. file.Close() ;
  470. return true ;
  471. }
  472. return true ;
  473. }
  474. BOOL CMainFrame::SaveDefaultSite()
  475. {
  476. char szPath[MAX_PATH] ;
  477. GetCurExePath ( szPath ) ;
  478. strcat( szPath , DEFAULT_SITE_FILENAME ) ;
  479. CFile file ;
  480. if( !file.Open( szPath , CFile::modeWrite | CFile::modeCreate ) )
  481. return false ;
  482. try
  483. {
  484. file.Write( &m_CurSiteInfo , sizeof( m_CurSiteInfo ) ) ;
  485. }
  486. catch( CFileException * e )
  487. {
  488. e->Delete() ;
  489. file.Close() ;
  490. memset( &m_CurSiteInfo , 0 , sizeof( m_CurSiteInfo ) ) ;
  491. return false ;
  492. }
  493. file.Close() ;
  494. return true ;
  495. }
  496. void CMainFrame::GetCurExePath(char *szPath)
  497. {
  498. char CurPath[MAX_PATH] ;
  499. char driver[MAX_PATH] , path[MAX_PATH] , name[MAX_PATH] , ext[MAX_PATH] ;
  500. ::GetModuleFileName( NULL , CurPath , MAX_PATH ) ;
  501. _splitpath( CurPath , driver , path , name , ext ) ;
  502. _makepath( szPath , driver , path , NULL , NULL ) ;
  503. }
  504. BOOL CMainFrame::ConnectDefaultSite()
  505. {
  506. if( strlen( m_CurSiteInfo.host ) == 0 )
  507. return false ;
  508. //connect default site .
  509. m_ViewWndInfo.pFtpDirView->ConnectFtp( &m_CurSiteInfo ) ;
  510. return true ;
  511. }
  512. void CMainFrame::OnBackSelall() 
  513. {
  514. // TODO: Add your command handler code here
  515. m_JobListDlg.m_ListCtrl.SelectAllItem() ;
  516. }
  517. void CMainFrame::OnBackStopall() 
  518. {
  519. // TODO: Add your command handler code here
  520. m_JobListDlg.m_Transmit.SetStopSign( false ) ;
  521. m_JobListDlg.StopAllTransmitTask( ) ;
  522. }