Files
Slnkdwf/SlnkDWFImpl/Jglutil.h
Jos Groot Lipman 96511e3611 FMHN#67510 ARC ondersteuning via instelling minmergedistance
svn path=/Slnkdwf/trunk/; revision=52702
2021-08-16 10:02:57 +00:00

105 lines
2.5 KiB
C++

void myDoTRACE(LPCTSTR lpszFormat, ...);
#ifdef _DEBUG
#define myTRACE myDoTRACE
#else
#define myTRACE 1 ? (void)0 : myDoTRACE
#endif
#define COUNT_OF(x) ((sizeof(x)/sizeof(0[x])) / ((size_t)(!(sizeof(x) % sizeof(0[x])))))
long myRound(double const &x);
const CString myGetLastErrorMsg();
HRESULT myAtlReportError(const CLSID & clsid, LPCTSTR lpszFormat, ...);
const CString myCString(LPCTSTR lpszFormat, ...);
class myTempPEN
{
public:
myTempPEN(HDC hDC, int w, COLORREF clr)
{
m_hDC = hDC;
HPEN hpenNew;
hpenNew = CreatePen(PS_SOLID, w, clr);
m_hpenOld = (HPEN)SelectObject(m_hDC, hpenNew);
}
~myTempPEN()
{
HPEN hpenNew = (HPEN)SelectObject(m_hDC, m_hpenOld);
DeleteObject(hpenNew);
}
private:
HPEN m_hpenOld;
HDC m_hDC;
};
#ifdef _DEBUG
// Niet in release mode want dan werkt NT4 niet meer
class CneutralGDI
{
public:
CneutralGDI(char *msg)
{
strcpy_s(m_msg, msg);
nGDI = GetGuiResources(GetCurrentProcess(), GR_GDIOBJECTS);
nUSER = GetGuiResources(GetCurrentProcess(), GR_USEROBJECTS);
};
~CneutralGDI()
{
int nGDIend = GetGuiResources(GetCurrentProcess(), GR_GDIOBJECTS);
int nUSERend = GetGuiResources(GetCurrentProcess(), GR_USEROBJECTS);
if (nGDI != nGDIend || nUSER != nUSERend)
{
myTRACE("\n================================================================");
myTRACE("\n= Leaking detected in %s.", m_msg);
myTRACE("\n= Lost %d GDI and %d USER objects",nGDIend - nGDI, nUSERend - nUSER);
myTRACE("\n================================================================");
}
};
BOOL hasLeak()
{
int nGDIend = GetGuiResources(GetCurrentProcess(), GR_GDIOBJECTS);
int nUSERend = GetGuiResources(GetCurrentProcess(), GR_USEROBJECTS);
return (nGDI != nGDIend || nUSER != nUSERend);
}
private:
int nGDI, nUSER;
char m_msg[2048];
};
#endif
class CmyTimer
{
public:
CmyTimer()
{
strcpy_s(m_msg, "Time");
QueryPerformanceCounter(&startTime);
CmyTimer::level++;
};
CmyTimer(const char*msg)
{
strcpy_s(m_msg, msg);
QueryPerformanceCounter(&startTime);
CmyTimer::level++;
}
~CmyTimer()
{
level--;
LARGE_INTEGER endTime;
LARGE_INTEGER frequency;
QueryPerformanceFrequency(&frequency);
QueryPerformanceCounter(&endTime);
myDoTRACE("\n%*s%s: %.0fms", CmyTimer::level*4, "", m_msg, ((double)(endTime.QuadPart -startTime.QuadPart))/frequency.QuadPart*1000);
}
private:
LARGE_INTEGER startTime;
char m_msg[2048];
protected:
static int level;
};
BOOL isDarkRGB(COLORREF const& clr);