MyFtpView.cpp
上传用户:job1860
上传日期:2021-12-04
资源大小:1510k
文件大小:5k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. // MyFtpView.cpp : implementation of the CMyFtpView class
  2. //
  3. #include "stdafx.h"
  4. #include "MyFtp.h"
  5. #include "MyFtpDoc.h"
  6. #include "MyFtpView.h"
  7. #include "MainFrm.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CMyFtpView
  15. IMPLEMENT_DYNCREATE(CMyFtpView, CView)
  16. BEGIN_MESSAGE_MAP(CMyFtpView, CView)
  17. //{{AFX_MSG_MAP(CMyFtpView)
  18. ON_WM_ERASEBKGND()
  19. ON_COMMAND(IDM_CONNECT, OnConnect)
  20. ON_WM_TIMER()
  21. //}}AFX_MSG_MAP
  22. // Standard printing commands
  23. ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
  24. ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
  25. ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
  26. END_MESSAGE_MAP()
  27. /////////////////////////////////////////////////////////////////////////////
  28. // CMyFtpView construction/destruction
  29. CMyFtpView::CMyFtpView()
  30. {
  31. // TODO: add construction code here
  32.     m_FtpWebSite = _T("");
  33. m_UserName = _T("");
  34. m_UserPwd = _T("");
  35. m_pSession = NULL;
  36. m_pConnection = NULL;
  37. m_pFileFind = NULL;
  38. }
  39. CMyFtpView::~CMyFtpView()
  40. {
  41. }
  42. BOOL CMyFtpView::PreCreateWindow(CREATESTRUCT& cs)
  43. {
  44. // TODO: Modify the Window class or styles here by modifying
  45. //  the CREATESTRUCT cs
  46. return CView::PreCreateWindow(cs);
  47. }
  48. /////////////////////////////////////////////////////////////////////////////
  49. // CMyFtpView drawing
  50. void CMyFtpView::OnDraw(CDC* pDC)
  51. {
  52. CMyFtpDoc* pDoc = GetDocument();
  53. ASSERT_VALID(pDoc);
  54. // TODO: add draw code for native data here
  55. }
  56. /////////////////////////////////////////////////////////////////////////////
  57. // CMyFtpView printing
  58. BOOL CMyFtpView::OnPreparePrinting(CPrintInfo* pInfo)
  59. {
  60. // default preparation
  61. return DoPreparePrinting(pInfo);
  62. }
  63. void CMyFtpView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  64. {
  65. // TODO: add extra initialization before printing
  66. }
  67. void CMyFtpView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  68. {
  69. // TODO: add cleanup after printing
  70. }
  71. /////////////////////////////////////////////////////////////////////////////
  72. // CMyFtpView diagnostics
  73. #ifdef _DEBUG
  74. void CMyFtpView::AssertValid() const
  75. {
  76. CView::AssertValid();
  77. }
  78. void CMyFtpView::Dump(CDumpContext& dc) const
  79. {
  80. CView::Dump(dc);
  81. }
  82. CMyFtpDoc* CMyFtpView::GetDocument() // non-debug version is inline
  83. {
  84. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyFtpDoc)));
  85. return (CMyFtpDoc*)m_pDocument;
  86. }
  87. #endif //_DEBUG
  88. /////////////////////////////////////////////////////////////////////////////
  89. // CMyFtpView message handlers
  90. BOOL CMyFtpView::OnEraseBkgnd(CDC* pDC)    //用于添加背景图
  91. {
  92. // TODO: Add your message handler code here and/or call default
  93. CBitmap bitmap;
  94. bitmap.LoadBitmap(IDB_BITMAP2);
  95. CDC dcCompatible;
  96. dcCompatible.CreateCompatibleDC(pDC);
  97. //创建与当前DC(pDC)兼容的DC,先用dcCompatible准备图像,再将数据复制到实际DC中  
  98. dcCompatible.SelectObject(&bitmap);
  99. CRect rect;
  100. GetClientRect(&rect);//得到目的DC客户区大小,GetClientRect(&rect);
  101. //得到目的DC客户区大小,
  102. //pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);//实现1:1的Copy
  103. BITMAP bmp;//结构体
  104. bitmap.GetBitmap(&bmp);
  105.     pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,
  106. bmp.bmWidth,bmp.bmHeight,SRCCOPY);
  107. return true;
  108. }
  109. void CMyFtpView::OnConnect() 
  110. {
  111. // TODO: Add your command handler code here
  112. //生成一个模态对话框
  113. if (IDOK==m_ConDlg.DoModal())
  114. {
  115. m_pConnection = NULL;   
  116. m_pSession = NULL;
  117.         m_FtpWebSite = m_ConDlg.m_FtpWebSite;
  118. m_UserName = m_ConDlg.m_UserName;
  119. m_UserPwd = m_ConDlg.m_UserPwd;
  120. m_pSession=new CInternetSession(AfxGetAppName(),
  121. 1,
  122. PRE_CONFIG_INTERNET_ACCESS);
  123. try
  124. {
  125. //试图建立FTP连接
  126. SetTimer(1,1000,NULL);  //设置定时器,一秒发一次WM_TIMER
  127. CString  str="正在连接中....";
  128. ((CMainFrame*)GetParent())->SetMessageText(str);
  129. m_pConnection=m_pSession->GetFtpConnection(m_FtpWebSite,
  130. m_UserName,m_UserPwd);      
  131. }
  132. catch (CInternetException* e)
  133. {
  134. //错误处理
  135. e->Delete();
  136. m_pConnection=NULL;
  137. }
  138. }
  139. }
  140. void CMyFtpView::OnTimer(UINT nIDEvent) 
  141. {
  142. // TODO: Add your message handler code here and/or call default
  143. static int time_out=1;
  144. time_out++;
  145. if (m_pConnection == NULL)
  146. {
  147. CString  str="正在连接中....";
  148. ((CMainFrame*)GetParent())->SetMessageText(str);
  149. if (time_out>=60)
  150. {
  151.             ((CMainFrame*)GetParent())->SetMessageText("连接超时!");
  152. KillTimer(1);
  153. MessageBox("连接超时!","超时",MB_OK);
  154. }
  155. }
  156. else
  157. {
  158.         CString str="连接成功!";       
  159. ((CMainFrame*)GetParent())->SetMessageText(str);
  160. KillTimer(1); 
  161. //连接成功之后,不用定时器来监视连接情况
  162. //同时跳出操作对话框
  163. m_FtpDlg.m_pConnection = m_pConnection;
  164. //非模态对话框
  165. m_FtpDlg.Create(IDD_DIALOG2,this);
  166. m_FtpDlg.ShowWindow(SW_SHOW);
  167. }
  168. CView::OnTimer(nIDEvent);
  169. }