|
/* -------------------------------------------------------------------------
//MyCell Library - MyCell version 1.0
//
// This file is a part of the MyCell Library.
// The use and distribution terms for this software are covered by the
// Common Public License 1.0 (http://opensource.org/licenses/cpl.php)
// which can be found in the file CPL.txt at this distribution. By using
// this software in any fashion, you are agreeing to be bound by the terms
// of this license. You must not remove this notice, or any other, from
// this software.
//
// Creator: yanxueming
// Email: xueming.yan@gmail.com
//Yanxm 2008��1��26�� 15:28:29
// -----------------------------------------------------------------------*/
#pragma once
class DeleteGdiObjPolicy
{
protected:
void DelGdiObject(HGDIOBJ obj)
{
DeleteObject(obj);
}
};
class DeleteGdiObjDummyPolicy
{
protected:
void DelGdiObject(HGDIOBJ obj)
{
}
};
template<class GdiObjDelPolicy=DeleteGdiObjPolicy>
class GdiSelectObject : public GdiObjDelPolicy
{
HDC hDC_;
HGDIOBJ oldObj_;
public:
GdiSelectObject(HDC hDC,HGDIOBJ hObj):hDC_(hDC)
{
oldObj_=::SelectObject(hDC,hObj);
}
void SelectObject(HGDIOBJ hObj)
{
GdiObjDelPolicy::DelGdiObject(::SelectObject(hDC_,oldObj_));
oldObj_=::SelectObject(hDC_,hObj);
}
~GdiSelectObject()
{
GdiObjDelPolicy::DelGdiObject(::SelectObject(hDC_,oldObj_));
}
};
typedef GdiSelectObject<DeleteGdiObjDummyPolicy> GdiSelectObjectPlain;
typedef GdiSelectObject<> GdiSelectObjectAutoDel;
class GDISetROP2
{
HDC hDC_;
int fnDrawMode_;
public:
GDISetROP2(HDC hdc,int fnDrawMode):hDC_(hdc)
{
fnDrawMode_=SetROP2(hDC_,fnDrawMode);
}
~GDISetROP2()
{
SetROP2(hDC_,fnDrawMode_);
}
};
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
My name is Yanxueming,i live in Chengdu China.Graduated from UESTC in 1999.