windows-nt/Source/XPSP1/NT/com/oleutest/utests16/simpdnd/idt.h
2020-09-26 16:20:57 +08:00

78 lines
2.2 KiB
C++

//**********************************************************************
// File name: idt.h
//
// Definition of CDropTarget
//
// Copyright (c) 1992 - 1993 Microsoft Corporation. All rights reserved.
//**********************************************************************
#if !defined( _IDT_H_ )
#define _IDT_H_
#include <assert.h>
class CSimpleDoc;
/* Flags to control direction for drag scrolling */
typedef enum tagSCROLLDIR {
SCROLLDIR_NULL = 0,
SCROLLDIR_UP = 1,
SCROLLDIR_DOWN = 2,
SCROLLDIR_RIGHT = 3,
SCROLLDIR_LEFT = 4
} SCROLLDIR;
interface CDropTarget : public IDropTarget
{
int m_nCount; // reference count
CSimpleDoc FAR * m_pDoc;
BOOL m_fCanDropCopy;
BOOL m_fCanDropLink;
DWORD m_dwSrcAspect;
RECT m_rcDragRect;
POINT m_ptLast;
BOOL m_fDragFeedbackDrawn;
DWORD m_dwTimeEnterScrollArea; // time of entering scroll border region
DWORD m_dwLastScrollDir; // current dir for drag scroll
DWORD m_dwNextScrollTime; // time for next scroll
CDropTarget(CSimpleDoc FAR * pDoc) {
TestDebugOut("In IDT's constructor\r\n");
m_pDoc = pDoc;
m_nCount = 0;
m_fCanDropCopy = FALSE;
m_fCanDropLink = FALSE;
m_fDragFeedbackDrawn = FALSE;
m_dwTimeEnterScrollArea = 0L;
m_dwNextScrollTime = 0L;
m_dwLastScrollDir = SCROLLDIR_NULL;
};
~CDropTarget() {
TestDebugOut("In IDT's destructor\r\n");
assert(m_nCount == 0);
} ;
STDMETHODIMP QueryInterface (REFIID riid, LPVOID FAR* ppv);
STDMETHODIMP_(ULONG) AddRef ();
STDMETHODIMP_(ULONG) Release ();
// *** IDropTarget methods ***
STDMETHODIMP DragEnter (LPDATAOBJECT pDataObj, DWORD grfKeyState,
POINTL pt, LPDWORD pdwEffect);
STDMETHODIMP DragOver (DWORD grfKeyState, POINTL pt, LPDWORD pdwEffect);
STDMETHODIMP DragLeave ();
STDMETHODIMP Drop (LPDATAOBJECT pDataObj, DWORD grfKeyState, POINTL pt,
LPDWORD pdwEffect);
private:
// Drag/Drop support methods
BOOL QueryDrop (DWORD grfKeyState, POINTL pointl, BOOL fDragScroll,
LPDWORD lpdwEffect);
BOOL DoDragScroll( POINTL pointl );
void InitDragFeedback(LPDATAOBJECT pDataObj, POINTL pointl);
void DrawDragFeedback( POINTL pointl );
void UndrawDragFeedback( void );
};
#endif // _IDT_H_