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

Ftp客户端

开发平台:

Visual C++

  1. // JobListCtrl.cpp : implementation file
  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 "JobListCtrl.h"
  14. #ifdef _DEBUG
  15. #define new DEBUG_NEW
  16. #undef THIS_FILE
  17. static char THIS_FILE[] = __FILE__;
  18. #endif
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CJobListCtrl
  21. CJobListCtrl::CJobListCtrl()
  22. {
  23. }
  24. CJobListCtrl::~CJobListCtrl()
  25. {
  26. }
  27. BEGIN_MESSAGE_MAP(CJobListCtrl, CListCtrl)
  28. //{{AFX_MSG_MAP(CJobListCtrl)
  29. ON_WM_CREATE()
  30. ON_WM_KEYDOWN()
  31. ON_WM_RBUTTONUP()
  32. ON_WM_RBUTTONDOWN()
  33. //}}AFX_MSG_MAP
  34. END_MESSAGE_MAP()
  35. /////////////////////////////////////////////////////////////////////////////
  36. // CJobListCtrl message handlers
  37. /****************************************************
  38. ** @Description
  39. **
  40. **
  41. ** @Parameter
  42. **
  43. **
  44. ** @Return:
  45. ** @Author: JHM
  46. ** e-mail: tablejiang@21cn.com
  47. ** @Date: 2001 3 26
  48. ****************************************************/
  49. BOOL CJobListCtrl::AddItem( FTPFILEINFO* pFile , int iItem )
  50. {
  51. char szTemp[MAX_PATH] ;
  52. InsertItem( iItem , pFile->remotefilename , pFile->state );
  53. _i64toa( pFile->filesize , szTemp , 10 ) ;
  54. SetItemText( iItem , 1 , szTemp ) ;
  55. //is directory
  56. if( pFile->bIsDirectory )
  57. SetItemText( iItem , 2 , "文件夹" ) ;
  58. else
  59. SetItemText( iItem , 2 , "文件" ) ;
  60. //transmit type .
  61. if( !pFile->bfileput ) 
  62. SetItemText( iItem , 3 , "下载" ) ;
  63. else
  64. SetItemText( iItem , 3 , "上传" ) ;
  65. SetItemText( iItem , 4 , pFile->site.host ) ;
  66. SetItemText( iItem , 5 , pFile->remotepath ) ;
  67. SetItemText( iItem , 6 , pFile->localpath ) ;
  68. SetItemText( iItem , 7 , pFile->site.user ) ;
  69. return true ;
  70. }
  71. /****************************************************
  72. ** @Description
  73. **
  74. **
  75. ** @Parameter
  76. **
  77. **
  78. ** @Return:
  79. ** @Author: JHM
  80. ** e-mail: tablejiang@21cn.com
  81. ** @Date: 2001 3 26
  82. ****************************************************/
  83. BOOL CJobListCtrl::GetItemInfo(int iItem, FTPFILEINFO *pFile)
  84. {
  85. char szTemp[MAX_PATH] ;
  86. LVITEM lv ;
  87. lv.mask = LVIF_IMAGE | LVIF_TEXT ;
  88. lv.iItem = iItem ;
  89. lv.iSubItem = 0 ;
  90. lv.pszText = szTemp ;
  91. lv.cchTextMax = MAX_PATH ;
  92. if( GetItem( &lv ) )
  93. {
  94. pFile->state = lv.iImage ;
  95. strcpy( pFile->remotefilename , lv.pszText ) ;
  96. }
  97. else
  98. {
  99. pFile->state = 1 ;
  100. strcpy( pFile->remotefilename , GetItemText( iItem , 0 ) ) ;
  101. }
  102. strcpy( szTemp , GetItemText( iItem , 1 ) ) ;
  103. pFile->filesize = _atoi64( szTemp ) ;
  104. strcpy( pFile->site.host , GetItemText( iItem , 4 ) ) ;
  105. strcpy( pFile->remotepath , GetItemText( iItem , 5 ) ) ;
  106. strcpy( pFile->localpath , GetItemText( iItem , 6 ) ) ;
  107. strcpy( pFile->site.user , GetItemText( iItem , 7 ) ) ;
  108. return true ;
  109. }
  110. int CJobListCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 
  111. {
  112. if (CListCtrl::OnCreate(lpCreateStruct) == -1)
  113. return -1;
  114. // TODO: Add your specialized creation code here
  115. InsertColumn( 0 , "文件" , LVCFMT_LEFT , 50  ) ;
  116. InsertColumn( 1 , "大小" , LVCFMT_LEFT , 50  ) ;
  117. InsertColumn( 2 , "文件类型" , LVCFMT_LEFT , 80  ) ;
  118. InsertColumn( 3 , "传输类型" , LVCFMT_LEFT , 80 ) ;
  119. InsertColumn( 4 , "服务器" , LVCFMT_LEFT , 60 ) ;
  120. InsertColumn( 5 , "远程路经" ,  LVCFMT_LEFT , 80 ) ;
  121. InsertColumn( 6 , "本地路径" , LVCFMT_LEFT , 80 ) ;
  122. InsertColumn( 7 , "用户" , LVCFMT_LEFT , 50 ) ;
  123. InitImageList( ) ;
  124. return 0;
  125. }
  126. /****************************************************
  127. ** @Description
  128. **
  129. **
  130. ** @Parameter
  131. **
  132. **
  133. ** @Return:
  134. ** @Author: JHM
  135. ** e-mail: tablejiang@21cn.com
  136. ** @Date: 2001 3 26
  137. ****************************************************/
  138. BOOL CJobListCtrl::InitImageList()
  139. {
  140. m_ImageList.Create( 16 , 16 , ILC_COLOR8, 0, 4);
  141. m_ImageList.Add( AfxGetApp()->LoadIcon( IDI_ICON_READY ) ) ;
  142. m_ImageList.Add( AfxGetApp()->LoadIcon( IDI_ICON_ERROR ) ) ;
  143. m_ImageList.Add( AfxGetApp()->LoadIcon( IDI_ICON_STOP ) ) ;
  144. m_ImageList.Add( AfxGetApp()->LoadIcon( IDI_ICON_RUNNING ) ) ;
  145. m_ImageList.Add( AfxGetApp()->LoadIcon( IDI_ICON_PAUSE ) ) ;
  146. SetImageList( &m_ImageList , LVSIL_SMALL ) ;
  147. return true ;
  148. }
  149. void CJobListCtrl::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
  150. {
  151. // TODO: Add your message handler code here and/or call default
  152. switch( nChar )
  153. {
  154. case VK_DELETE :
  155. ::PostMessage( m_hParentWnd , JOBLIST_KEYDOWN_MSG , VK_DELETE , 0 ) ;
  156. break ;
  157. default :
  158. break ;
  159. }
  160. CListCtrl::OnKeyDown(nChar, nRepCnt, nFlags);
  161. }
  162. /****************************************************
  163. ** @Description
  164. **
  165. **
  166. ** @Parameter
  167. **
  168. **
  169. ** @Return:
  170. ** @Author: JHM
  171. ** e-mail: tablejiang@21cn.com
  172. ** @Date: 2001 3 26
  173. ****************************************************/
  174. void CJobListCtrl::SetParentWnd(HWND hWnd)
  175. {
  176. m_hParentWnd = hWnd ;
  177. }
  178. /****************************************************
  179. ** @Description
  180. **
  181. **
  182. ** @Parameter
  183. **
  184. **
  185. ** @Return:
  186. ** @Author: JHM
  187. ** e-mail: tablejiang@21cn.com
  188. ** @Date: 2001 3 26
  189. ****************************************************/
  190. BOOL CJobListCtrl::SetRowFullSelect()
  191. {
  192. SetExtendedStyle( LVS_EX_FULLROWSELECT /*| LVS_EX_GRIDLINES*/  );
  193. return true ;
  194. }
  195. void CJobListCtrl::OnRButtonUp(UINT nFlags, CPoint point) 
  196. {
  197. // TODO: Add your message handler code here and/or call default
  198. CListCtrl::OnRButtonUp(nFlags, point);
  199. //::PostMessage( m_hParentWnd , JOBLIST_RBTN_UP_MSG , 0 , 0 ) ; 
  200. }
  201. void CJobListCtrl::OnRButtonDown(UINT nFlags, CPoint point) 
  202. {
  203. // TODO: Add your message handler code here and/or call default
  204. ::PostMessage( m_hParentWnd , JOBLIST_RBTN_UP_MSG , 0 , 0 ) ; 
  205. CListCtrl::OnRButtonDown(nFlags, point);
  206. }
  207. /****************************************************
  208. ** @Description
  209. **
  210. **
  211. ** @Parameter
  212. **
  213. **
  214. ** @Return:
  215. ** @Author: JHM
  216. ** e-mail: tablejiang@21cn.com
  217. ** @Date: 2001 3 26
  218. ****************************************************/
  219. BOOL CJobListCtrl::SelectAllItem()
  220. {
  221. int iCount = GetItemCount( ) ;
  222. if( iCount == 0  )
  223. return true ;
  224. for( int i = 0 ; i < iCount ; i ++ )
  225. {
  226. SetItemState( i , LVIS_SELECTED  , LVIS_SELECTED  ) ;
  227. }
  228. //Invalidate( ) ;
  229. return true ;
  230. }