FSFileList.cpp
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:3k
源码类别:

图形图象

开发平台:

Visual C++

  1. // FSFileList.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ISeeExplorer.h"
  5. #include "FSFileList.h"
  6. #include "FileServer.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CFSFileList
  14. CFSFileList::CFSFileList(CFileServer* pFS) : m_pFileServer(pFS), m_pView(NULL)
  15. {
  16. }
  17. CFSFileList::~CFSFileList()
  18. {
  19. }
  20. BEGIN_MESSAGE_MAP(CFSFileList, CCJControlBar)
  21. //{{AFX_MSG_MAP(CFSFileList)
  22. ON_WM_WINDOWPOSCHANGED()
  23. //}}AFX_MSG_MAP
  24. ON_MESSAGE( WM_ISEE_UPDATE_IMAGE , OnISeeUpdateImage )
  25. END_MESSAGE_MAP()
  26. /////////////////////////////////////////////////////////////////////////////
  27. // CFSFileList message handlers
  28. // 创建文件列表容器及视口
  29. BOOL CFSFileList::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
  30. {
  31. CSize size(rect.right-rect.left, rect.bottom-rect.top);
  32. if (!CCJControlBar::Create(pParentWnd, nID, lpszWindowName, size, dwStyle))
  33. return FALSE;
  34. ASSERT(pContext); // CFSFileList 类不允许该变量为NULL
  35. ASSERT(!m_pView); // 此时不应该有视口
  36. CRuntimeClass *pViewClass = RUNTIME_CLASS(CFileListView);
  37. CWnd* pWnd;
  38. TRY
  39. {
  40. pWnd = (CWnd*)pViewClass->CreateObject();
  41. if (pWnd == NULL)
  42. AfxThrowMemoryException();
  43. }
  44. CATCH_ALL(e)
  45. {
  46. TRACE0("Out of memory creating a file list view.n");
  47. return FALSE;
  48. }
  49. END_CATCH_ALL
  50. CCreateContext context;
  51. context.m_pCurrentDoc = pContext->m_pCurrentDoc;
  52. context.m_pNewViewClass = pViewClass;
  53. CRect defrect(0,0,0,0);
  54. if (!pWnd->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, defrect, 
  55. this, ISEE_EXPLORER_FILELIST_VIEW_ID, pContext))
  56. {
  57. TRACE0("Warning: couldn't create file list view.n");
  58. return FALSE;
  59. }
  60. m_pView = (CFileListView*)pWnd;
  61. return TRUE;
  62. }
  63. void CFSFileList::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) 
  64. {
  65. if (m_pView)
  66. {
  67. if (IsFloating())
  68. m_pView->MoveWindow( 5, 5, lpwndpos->cx-10, lpwndpos->cy-7 );
  69. else if (IsHorzDocked()) 
  70. m_pView->MoveWindow( 15 , 4 , lpwndpos->cx-25, lpwndpos->cy-17 );
  71. else
  72. m_pView->MoveWindow( 4 , 16 , lpwndpos->cx-14, lpwndpos->cy-28 );
  73. }
  74. CCJControlBar::OnWindowPosChanged(lpwndpos);
  75. }
  76. CFileListView * CFSFileList::GetFileListView()
  77. {
  78. return m_pView;
  79. }
  80. void CFSFileList::OnISeeUpdateImage(WPARAM wParam, LPARAM lParam)
  81. {
  82. GetParent()->GetParent()->PostMessage( WM_ISEE_UPDATE_IMAGE , wParam , lParam );
  83. }
  84. BOOL CFSFileList::OnIdle(LONG lCount)
  85. {
  86. return m_pView->GetShellListCtrl().OnIdle( lCount );
  87. }