summaryrefslogblamecommitdiffstats
path: root/private/oleutest/simpdnd/idt.h
blob: 16b82071d6d627d19b62291e8dcc2560cd87bd8b (plain) (tree)











































































                                                                             
//**********************************************************************
// 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
{
    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_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");
       } ;

    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_