VIEW.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // view.cpp
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. // Implements CDropTargetView which is an override of CView with appropriate
  13. // COleDropTarget support.
  14. //
  15. // CDropTargetView, CObjTreeView, and CInterfaceView all are derived from this class
  16. //
  17. // This class is never used.....but it is interesting
  18. #include "stdafx.h"
  19. #include "OleView.h"
  20. #ifdef _DEBUG
  21. #undef THIS_FILE
  22. static char BASED_CODE THIS_FILE[] = __FILE__;
  23. #endif
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CDropTargetView
  26. IMPLEMENT_DYNAMIC(CDropTargetView, CView)
  27. BEGIN_MESSAGE_MAP(CDropTargetView, CView)
  28. //{{AFX_MSG_MAP(CDropTargetView)
  29. ON_WM_CREATE()
  30. //}}AFX_MSG_MAP
  31. END_MESSAGE_MAP()
  32. /////////////////////////////////////////////////////////////////////////////
  33. // CDropTargetView construction/destruction
  34. CDropTargetView::CDropTargetView()
  35. {
  36. }
  37. int CDropTargetView::OnCreate(LPCREATESTRUCT lpCreateStruct)
  38. {
  39. if (CView::OnCreate(lpCreateStruct) == -1)
  40. return -1;
  41. #if _MFC_VER > 0x0210
  42. m_dropTarget.Register( this ) ;
  43. #endif
  44. return 0;
  45. }
  46. #if _MFC_VER > 0x0210
  47. DROPEFFECT CDropTargetView::OnDragEnter(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point)
  48. {
  49. return OnDragOver(pDataObject, dwKeyState, point);
  50. }
  51. DROPEFFECT CDropTargetView::OnDragOver(COleDataObject*, DWORD dwKeyState, CPoint)
  52. {
  53. DROPEFFECT de = DROPEFFECT_NONE;
  54. // check for force link
  55. if ((dwKeyState & (MK_CONTROL|MK_SHIFT)) == (MK_CONTROL|MK_SHIFT))
  56. de = DROPEFFECT_LINK;
  57. // check for force copy
  58. else if ((dwKeyState & MK_CONTROL) == MK_CONTROL)
  59. de = DROPEFFECT_COPY;
  60. // check for force move
  61. else if ((dwKeyState & MK_ALT) == MK_ALT)
  62. de = DROPEFFECT_MOVE;
  63. // default -- recommended action is move
  64. else
  65. de = DROPEFFECT_MOVE;
  66. return de;
  67. }
  68. void CDropTargetView::OnDragLeave()
  69. {
  70. CView::OnDragLeave() ;
  71. }
  72. BOOL CDropTargetView::OnDrop(COleDataObject* pDataObject,DROPEFFECT dropEffect, CPoint point)
  73. {
  74. /*
  75. LPDATAOBJECT    pDO = pDataObject->m_lpDataObject ;
  76. pDO->AddRef() ;
  77. IDisplayInterface( theApp.m_pMainWnd->GetSafeHwnd(),
  78.    pDO,
  79.    (LPIID)&IID_IDataObject,
  80.    (LPTSTR)(LPCSTR)"Drag and Drop data object" ) ;
  81. pDO->Release() ;
  82. */
  83. COle2ViewDoc*   pDoc = GetDocument() ;
  84. #if 0
  85. pDoc->m_clsidCur = CLSID_NULL ;
  86. HRESULT hr = pDataObject->m_lpDataObject->QueryInterface( IID_IUnknown, (LPVOID*)&pDoc->m_pIUnknown );
  87. if (FAILED(hr))
  88. {
  89. ErrorMessage( _T("QueryInterface( IID_IUnknown ) failed on the data object."), hr ) ;
  90. pDoc->m_pIUnknown = NULL ;
  91. }
  92. pDoc->m_pIUnknown->AddRef() ;
  93. pDoc->m_fTypeLib = FALSE ;
  94. ((CMainFrame*)theApp.m_pMainWnd)->m_pObjListView->m_lb.SetCurSel( -1 ) ;
  95. pDoc->m_szObjectCur = "Drag and Drop data object" ;
  96. pDoc->UpdateAllViews( NULL, UPD_NOOBJECTVIEW | UPD_NORELOAD ) ;
  97. #endif
  98. return CView::OnDrop( pDataObject, dropEffect, point ) ;
  99. }
  100. #endif
  101. #ifdef _DEBUG
  102. COle2ViewDoc* CDropTargetView::GetDocument() // non-debug version is inline
  103. {
  104. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COle2ViewDoc)));
  105. return (COle2ViewDoc*) m_pDocument;
  106. }
  107. #endif //_DEBUG