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

图形图象

开发平台:

Visual C++

  1. // FileServer.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ISeeExplorer.h"
  5. #include "FileServer.h"
  6. #include "ISeeExplorerDoc.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. // CFileServer
  15. CFileServer::CFileServer()
  16. {
  17. }
  18. CFileServer::~CFileServer()
  19. {
  20. if (m_pFolder)
  21. delete m_pFolder;
  22. if (m_pFileList)
  23. delete m_pFileList;
  24. }
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CFileServer message handlers
  27. // 初始化文件服务器
  28. BOOL CFileServer::InitialFileServer(CISeeExplorerDoc *pParentDoc)
  29. {
  30. ASSERT(pParentDoc);
  31. ASSERT(pParentDoc->IsKindOf(RUNTIME_CLASS(CISeeExplorerDoc))); 
  32. m_pDoc = pParentDoc;
  33. m_pFolder = NULL;
  34. m_pFileList = NULL;
  35. m_strFolder.LoadString(IDS_CONTAINER_FOLDER_WNDNAME);
  36. m_strFileList.LoadString(IDS_CONTAINER_FILELIST_WNDNAME);
  37. if (!m_Imagelist.Create(IDB_CONTAINER_BTN, 13, 1, (COLORREF)RGB(0,255,0)))
  38. {
  39. TRACE0("Failed to create FS container image list!n");
  40. return FALSE;      // fail to create
  41. }
  42. return TRUE;
  43. }
  44. // 创建文件服务器的视觉组件(容器及视口)
  45. int CFileServer::CreateVisualComponents(CMainFrame *pParentFrm, CCreateContext* pContext)
  46. {
  47. ASSERT((pParentFrm)&&(pParentFrm->IsKindOf(RUNTIME_CLASS(CMainFrame))));
  48. ASSERT(pContext);
  49. ASSERT(m_pDoc); // 文件服务器必须已被初始化过
  50. ASSERT(!m_pFolder);
  51. ASSERT(!m_pFileList);
  52. // 创建文件夹
  53. m_pFolder = (CFSFolder*) new CFSFolder(this);
  54. if (!m_pFolder)
  55. {
  56. TRACE("Out of memory then create CFSFolder!n");
  57. return -1;
  58. }
  59. m_pFolder->SetBtnImageList(&m_Imagelist);
  60. CRect rect(0,0,200,200);
  61. if (!m_pFolder->Create(NULL, (LPCTSTR)m_strFolder, WS_CHILD|WS_VISIBLE|CBRS_TOP, 
  62. rect, (CWnd*)pParentFrm, ISEE_EXPLORER_CONTAINER_FOLDER_ID, pContext))
  63. {
  64. TRACE0("fail to create FSFolder container!n");
  65. return -1;
  66. }
  67. m_pFolder->SetBarStyle(m_pFolder->GetBarStyle() | 
  68. CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  69. m_pFolder->EnableDocking(CBRS_ALIGN_ANY);
  70. pParentFrm->DockControlBar(m_pFolder, AFX_IDW_DOCKBAR_LEFT);
  71. // 创建文件列表
  72. m_pFileList = (CFSFileList*) new CFSFileList(this);
  73. if (!m_pFileList)
  74. {
  75. TRACE("Out of memory then create CFSFileList!n");
  76. return -1;
  77. }
  78. m_pFileList->SetBtnImageList(&m_Imagelist);
  79. if (!m_pFileList->Create(NULL, (LPCTSTR)m_strFileList, WS_CHILD|WS_VISIBLE|CBRS_TOP, 
  80. rect, (CWnd*)pParentFrm, ISEE_EXPLORER_CONTAINER_FILELIST_ID, pContext))
  81. {
  82. TRACE0("fail to create FSFileList container!n");
  83. return -1;
  84. }
  85. m_pFileList->SetBarStyle(m_pFileList->GetBarStyle() | 
  86. CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
  87. m_pFileList->EnableDocking(CBRS_ALIGN_ANY);
  88. pParentFrm->DockControlBar(m_pFileList, AFX_IDW_DOCKBAR_RIGHT);
  89. // 设置联动关系
  90. ASSERT(m_pFolder->GetFolderView());
  91. ASSERT(m_pFileList->GetFileListView());
  92. m_pFolder->GetFolderView()->GetShellTreeCtrl().SetListCtrlWnd(
  93. m_pFileList->GetFileListView()->GetShellListCtrl().GetSafeHwnd());
  94. m_pFileList->GetFileListView()->GetShellListCtrl().SetTreeCtrlWnd(
  95. m_pFolder->GetFolderView()->GetShellTreeCtrl().GetSafeHwnd());
  96. return 0; // 成功
  97. }
  98. void * CFileServer::GetIdleFuncAddr()
  99. {
  100. return (m_pFileList->m_pView->GetShellListCtrl().GetIdleFuncAddr());
  101. }
  102. void CFileServer::SetListViewType(UINT Style)
  103. {
  104. m_pFileList->m_pView->GetShellListCtrl().SetViewType( Style );
  105. }
  106. BOOL CFileServer::OnIdle(LONG lCount)
  107. {
  108. return m_pFileList->OnIdle( lCount );
  109. }