VIEW.CPP
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:
Windows编程
开发平台:
Visual C++
- // view.cpp
- //
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
- // Implements CDropTargetView which is an override of CView with appropriate
- // COleDropTarget support.
- //
- // CDropTargetView, CObjTreeView, and CInterfaceView all are derived from this class
- //
- // This class is never used.....but it is interesting
- #include "stdafx.h"
- #include "OleView.h"
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CDropTargetView
- IMPLEMENT_DYNAMIC(CDropTargetView, CView)
- BEGIN_MESSAGE_MAP(CDropTargetView, CView)
- //{{AFX_MSG_MAP(CDropTargetView)
- ON_WM_CREATE()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CDropTargetView construction/destruction
- CDropTargetView::CDropTargetView()
- {
- }
- int CDropTargetView::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CView::OnCreate(lpCreateStruct) == -1)
- return -1;
- #if _MFC_VER > 0x0210
- m_dropTarget.Register( this ) ;
- #endif
- return 0;
- }
- #if _MFC_VER > 0x0210
- DROPEFFECT CDropTargetView::OnDragEnter(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point)
- {
- return OnDragOver(pDataObject, dwKeyState, point);
- }
- DROPEFFECT CDropTargetView::OnDragOver(COleDataObject*, DWORD dwKeyState, CPoint)
- {
- DROPEFFECT de = DROPEFFECT_NONE;
- // check for force link
- if ((dwKeyState & (MK_CONTROL|MK_SHIFT)) == (MK_CONTROL|MK_SHIFT))
- de = DROPEFFECT_LINK;
- // check for force copy
- else if ((dwKeyState & MK_CONTROL) == MK_CONTROL)
- de = DROPEFFECT_COPY;
- // check for force move
- else if ((dwKeyState & MK_ALT) == MK_ALT)
- de = DROPEFFECT_MOVE;
- // default -- recommended action is move
- else
- de = DROPEFFECT_MOVE;
- return de;
- }
- void CDropTargetView::OnDragLeave()
- {
- CView::OnDragLeave() ;
- }
- BOOL CDropTargetView::OnDrop(COleDataObject* pDataObject,DROPEFFECT dropEffect, CPoint point)
- {
- /*
- LPDATAOBJECT pDO = pDataObject->m_lpDataObject ;
- pDO->AddRef() ;
- IDisplayInterface( theApp.m_pMainWnd->GetSafeHwnd(),
- pDO,
- (LPIID)&IID_IDataObject,
- (LPTSTR)(LPCSTR)"Drag and Drop data object" ) ;
- pDO->Release() ;
- */
- COle2ViewDoc* pDoc = GetDocument() ;
- #if 0
- pDoc->m_clsidCur = CLSID_NULL ;
- HRESULT hr = pDataObject->m_lpDataObject->QueryInterface( IID_IUnknown, (LPVOID*)&pDoc->m_pIUnknown );
- if (FAILED(hr))
- {
- ErrorMessage( _T("QueryInterface( IID_IUnknown ) failed on the data object."), hr ) ;
- pDoc->m_pIUnknown = NULL ;
- }
- pDoc->m_pIUnknown->AddRef() ;
- pDoc->m_fTypeLib = FALSE ;
- ((CMainFrame*)theApp.m_pMainWnd)->m_pObjListView->m_lb.SetCurSel( -1 ) ;
- pDoc->m_szObjectCur = "Drag and Drop data object" ;
- pDoc->UpdateAllViews( NULL, UPD_NOOBJECTVIEW | UPD_NORELOAD ) ;
- #endif
- return CView::OnDrop( pDataObject, dropEffect, point ) ;
- }
- #endif
- #ifdef _DEBUG
- COle2ViewDoc* CDropTargetView::GetDocument() // non-debug version is inline
- {
- ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COle2ViewDoc)));
- return (COle2ViewDoc*) m_pDocument;
- }
- #endif //_DEBUG