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.

118 lines
2.4 KiB
C++

// XTPHelpers.h interface
//
// This file is a part of the XTREME CONTROLS 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(__XTHELPERS_H__)
#define __XTHELPERS_H__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Safely selects object into device context
template <class T>
class CXTPContextObjectHandler
{
T* m_pObject;
CDC* m_pDC;
public:
CXTPContextObjectHandler(CDC* pDC, T* object)
: m_pDC(pDC), m_pObject(pDC->SelectObject(object))
{ }
~CXTPContextObjectHandler()
{
if (m_pObject)
{
m_pDC->SelectObject(m_pObject);
}
}
};
// Background mode context handler
class CXTPContextBkModeHandler
{
int m_nMode;
CDC* m_pDC;
public:
CXTPContextBkModeHandler(CDC* pDC, int nNewMode)
: m_pDC(pDC), m_nMode(pDC->SetBkMode(nNewMode))
{ }
~CXTPContextBkModeHandler()
{
m_pDC->SetBkMode(m_nMode);
}
};
// Text color context handler
class CXTPContextTextColorHandler
{
COLORREF m_clrFore;
CDC* m_pDC;
public:
CXTPContextTextColorHandler(CDC* pDC, int clrFore)
: m_pDC(pDC), m_clrFore(pDC->SetTextColor(clrFore))
{ }
~CXTPContextTextColorHandler()
{
m_pDC->SetTextColor(m_clrFore);
}
};
// Background color context handler
class CXTPContextBkColorHandler
{
COLORREF m_clrBack;
CDC* m_pDC;
public:
CXTPContextBkColorHandler(CDC* pDC, int clrBack)
: m_pDC(pDC), m_clrBack(pDC->SetBkColor(clrBack))
{ }
~CXTPContextBkColorHandler()
{
m_pDC->SetBkColor(m_clrBack);
}
};
// Handles viewport origin
class CXTPContextViewPortOrgHandler
{
CPoint m_pointOrigin;
CDC* m_pDC;
public:
CXTPContextViewPortOrgHandler(CDC* pDC, const CPoint& pointOrigin)
: m_pDC(pDC), m_pointOrigin(pDC->SetViewportOrg(pointOrigin))
{ }
~CXTPContextViewPortOrgHandler()
{
m_pDC->SetViewportOrg(m_pointOrigin);
}
};
#endif // #if !defined(__XTHELPERS_H__)
//}}AFX_CODEJOCK_PRIVATE