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

图形图象

开发平台:

Visual C++

  1. // FSFolder.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ISeeExplorer.h"
  5. #include "FSFolder.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. // CFSFolder
  14. CFSFolder::CFSFolder(CFileServer* pFS) : m_pFileServer(pFS), m_pView(NULL)
  15. {
  16. }
  17. CFSFolder::~CFSFolder()
  18. {
  19. }
  20. BEGIN_MESSAGE_MAP(CFSFolder, CCJControlBar)
  21. //{{AFX_MSG_MAP(CFSFolder)
  22. ON_WM_WINDOWPOSCHANGED()
  23. //}}AFX_MSG_MAP
  24. END_MESSAGE_MAP()
  25. /////////////////////////////////////////////////////////////////////////////
  26. // CFSFolder message handlers
  27. // 定位视口位置
  28. void CFSFolder::OnWindowPosChanged(WINDOWPOS FAR* lpwndpos) 
  29. {
  30. if (m_pView)
  31. {
  32. if (IsFloating())
  33. m_pView->MoveWindow( 5, 5, lpwndpos->cx-10, lpwndpos->cy-7 );
  34. else if (IsHorzDocked()) 
  35. m_pView->MoveWindow( 15 , 4 , lpwndpos->cx-25, lpwndpos->cy-17 );
  36. else
  37. m_pView->MoveWindow( 4 , 16 , lpwndpos->cx-14, lpwndpos->cy-28 );
  38. }
  39. CCJControlBar::OnWindowPosChanged(lpwndpos);
  40. }
  41. // 创建文件夹容器及视口
  42. BOOL CFSFolder::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
  43. {
  44. CSize size(rect.right-rect.left, rect.bottom-rect.top);
  45. if (!CCJControlBar::Create(pParentWnd, nID, lpszWindowName, size, dwStyle))
  46. return FALSE;
  47. ASSERT(pContext); // CFSFolder 类不允许该变量为NULL
  48. ASSERT(!m_pView); // 此时不应该有视口
  49. CRuntimeClass *pViewClass = RUNTIME_CLASS(CFolderView);
  50. CWnd* pWnd;
  51. TRY
  52. {
  53. pWnd = (CWnd*)pViewClass->CreateObject();
  54. if (pWnd == NULL)
  55. AfxThrowMemoryException();
  56. }
  57. CATCH_ALL(e)
  58. {
  59. TRACE0("Out of memory creating a folder view.n");
  60. return FALSE;
  61. }
  62. END_CATCH_ALL
  63. CCreateContext context;
  64. context.m_pCurrentDoc = pContext->m_pCurrentDoc;
  65. context.m_pNewViewClass = pViewClass;
  66. CRect defrect(0,0,0,0);
  67. if (!pWnd->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, defrect, 
  68. this, ISEE_EXPLORER_FOLDER_VIEW_ID, pContext))
  69. {
  70. TRACE0("Warning: couldn't create folder view.n");
  71. return FALSE;
  72. }
  73. m_pView = (CFolderView*)pWnd;
  74. return TRUE;
  75. }
  76. // 获取文件夹视口类地址
  77. CFolderView * CFSFolder::GetFolderView()
  78. {
  79. return m_pView;
  80. }