WindowsXP-SP1/admin/activec/conui/vwtrack.h
2020-09-30 16:53:49 +02:00

105 lines
2.9 KiB
C++

/*--------------------------------------------------------------------------*
*
* Microsoft Windows
* Copyright (C) Microsoft Corporation, 1992 - 1999
*
* File: vwtrack.h
*
* Contents: Interface file for CViewTracker
*
* History: 01-May-98 JeffRo Created
*
*--------------------------------------------------------------------------*/
#ifndef VWTRACK_H
#define VWTRACK_H
#pragma once
#include "amcview.h"
class CFocusSubclasser;
class CFrameSubclasser;
class CViewSubclasser;
struct TRACKER_INFO;
typedef void (CALLBACK *TRACKER_CALLBACK)(TRACKER_INFO* pTrackerInfo, bool bAccept, bool bSyncLayout);
/*
* This structure is copied in the CViewTracker using its (default) copy
* constructor. If you add any members for which member-wise copy is not
* appropriate, you *must* define a copy constructor for this structure.
*/
typedef struct TRACKER_INFO
{
CView* pView; // View to manage
CRect rectArea; // Total area available
CRect rectTracker; // Current tracker position
CRect rectBounds; // Tracker movement bounds
BOOL bAllowLeftHide; // Can left pane be hidden
BOOL bAllowRightHide; // Can right pane be hidden
LONG_PTR lUserData; // User data
TRACKER_CALLBACK pCallback; // Tracking completion callback
} TRACKER_INFO;
class CHalftoneClientDC : public CClientDC
{
public:
CHalftoneClientDC (CWnd* pwnd)
: CClientDC (pwnd), m_hBrush(NULL)
{
CBrush *pBrush = SelectObject (GetHalftoneBrush ());
if (pBrush != NULL)
m_hBrush = *pBrush;
}
~CHalftoneClientDC ()
{
if (m_hBrush != NULL)
SelectObject ( CBrush::FromHandle(m_hBrush) );
}
private:
HBRUSH m_hBrush;
};
class CViewTracker : public CObject
{
DECLARE_DYNAMIC (CViewTracker)
// private ctor, use StartTracking to create one
CViewTracker (TRACKER_INFO& TrackerInfo);
// private dtor
~CViewTracker() {};
public:
static bool StartTracking (TRACKER_INFO* pTrackerInfo);
void StopTracking (BOOL fAcceptNewPosition);
void Track(CPoint pt);
private:
void DrawTracker (CRect& rect) const;
CWnd* PrepTrackedWindow (CWnd* pwnd);
void UnprepTrackedWindow (CWnd* pwnd);
private:
/*
* m_fFullWindowDrag must be first, so it will be initialized first;
* other member initializers will use m_fFullWindowDrag's setting
*/
const bool m_fFullWindowDrag;
bool m_fRestoreClipChildrenStyle;
TRACKER_INFO m_Info;
CHalftoneClientDC mutable m_dc;
CFocusSubclasser * m_pFocusSubclasser;
CViewSubclasser * m_pViewSubclasser;
CFrameSubclasser * m_pFrameSubclasser;
const LONG m_lOriginalTrackerLeft;
}; /* class CViewTracker */
#endif /* VWTRACK_H */