You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

179 lines
6.7 KiB
C++

// XTPReportDragDrop.h: interface for the CXTPReportHeaderDragWnd and
// CXTPReportHeaderDropWnd classes.
//
// This file is a part of the XTREME REPORTCONTROL MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPREPORTDRAGDROP_H__)
#define __XTPREPORTDRAGDROP_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPReportHeader;
class CXTPReportPaintManager;
class CXTPReportColumn;
//===========================================================================
// Summary:
// CXTPReportHeaderDragWnd is CWnd derived class, it used internally to
// represent dragging column window.
//===========================================================================
class _XTP_EXT_CLASS CXTPReportHeaderDragWnd : public CWnd
{
public:
//-----------------------------------------------------------------------
// Summary:
// Creates CXTPReportHeaderDragWnd object.
//-----------------------------------------------------------------------
CXTPReportHeaderDragWnd();
//-----------------------------------------------------------------------
// Summary:
// Default CXTPReportHeaderDragWnd destructor.
//-----------------------------------------------------------------------
virtual ~CXTPReportHeaderDragWnd();
public:
//-----------------------------------------------------------------------
// Summary:
// Creates dragging window with the specified parameters.
// Parameters:
// rect - Drawing rectangle position.
// pHeader - Pointer to parent report header object.
// pPaintManager - Paint manager for performing draw operations.
// pColumn - Pointer to the associated column.
// Returns:
// TRUE if created successfully, FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL Create(CRect rect, CXTPReportHeader* pHeader, CXTPReportPaintManager* pPaintManager, CXTPReportColumn* pColumn);
protected:
//-----------------------------------------------------------------------
// Summary:
// Called by the framework to draw the contents of the window using the specified device context.
// Parameters:
// pDC - A pointer to the device context in which the drawing occurs.
// rcClient - Coordinates of the client window position.
//-----------------------------------------------------------------------
virtual void OnDraw(CDC* pDC, CRect rcClient);
protected:
//{{AFX_CODEJOCK_PRIVATE
//{{AFX_MSG(CXTPReportHeaderDragWnd)
afx_msg void OnPaint();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnTimer(UINT_PTR nIDEvent);
//}}AFX_MSG
//{{AFX_VIRTUAL(CXTPReportHeaderDragWnd)
virtual void PostNcDestroy();
//}}AFX_VIRTUAL
//}}AFX_CODEJOCK_PRIVATE
private:
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
DECLARE_MESSAGE_MAP()
protected:
CXTPReportHeader* m_pHeader; // Pointer to the associated report header object.
CXTPReportPaintManager* m_pPaintManager; // Pointer to the associated paint manager object.
CXTPReportColumn* m_pColumn; // Pointer to the associated report column object.
};
//===========================================================================
// Summary:
// CXTPReportHeaderDropWnd is CWnd derived class, it used internally to
// represent drop target arrows.
//===========================================================================
class _XTP_EXT_CLASS CXTPReportHeaderDropWnd : public CWnd
{
public:
//-----------------------------------------------------------------------
// Summary:
// Creates CXTPReportHeaderDropWnd object.
// Parameters:
// crColor - Drop window color.
//-----------------------------------------------------------------------
CXTPReportHeaderDropWnd(COLORREF crColor);
//-----------------------------------------------------------------------
// Summary:
// Destroys CXTPReportHeaderDropWnd object. Performs cleanup operations.
//-----------------------------------------------------------------------
virtual ~CXTPReportHeaderDropWnd();
public:
//-----------------------------------------------------------------------
// Summary:
// Changes window position.
// Parameters:
// xPos - New horizontal position.
// yPos - New vertical position.
//-----------------------------------------------------------------------
void SetWindowPos(int xPos, int yPos);
//-----------------------------------------------------------------------
// Summary:
// Creates a drop window with the specified gap inside.
// Parameters:
// nHeight - Height between 2 arrows in pixels.
// Returns:
// TRUE if created successfully, FALSE otherwise.
//-----------------------------------------------------------------------
virtual BOOL Create(CWnd* pParentWnd, int nHeight);
protected:
//{{AFX_CODEJOCK_PRIVATE
//{{AFX_VIRTUAL(CXTPReportHeaderDropWnd)
virtual void PostNcDestroy();
//}}AFX_VIRTUAL
//{{AFX_MSG(CXTPReportHeaderDropWnd)
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
//}}AFX_MSG
//}}AFX_CODEJOCK_PRIVATE
private:
BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
DECLARE_MESSAGE_MAP()
protected:
COLORREF m_clr; // Drawing brush.
CRgn m_rgn; // Arrows region.
int m_nHeight; // Height of the gap between 2 arrows.
};
//////////////////////////////////////////////////////////////////////////
AFX_INLINE BOOL CXTPReportHeaderDragWnd::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
AFX_INLINE BOOL CXTPReportHeaderDropWnd::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) {
return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext);
}
#endif //#if !defined(__XTPREPORTDRAGDROP_H__)