atltrace.h
资源名称:CreatBMP.rar [点击查看]
上传用户:hfwmdy
上传日期:2016-01-14
资源大小:83k
文件大小:12k
源码类别:
GDI/图象编程
开发平台:
Visual C++
- // This is a part of the Active Template Library.
- // Copyright (C) Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Active Template Library Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Active Template Library product.
- #ifndef __ATLTRACE_H__
- #define __ATLTRACE_H__
- #pragma once
- #include <atldef.h>
- #include <atlconv.h>
- #ifdef _DEBUG
- #include <stdio.h>
- #include <stdarg.h>
- #endif
- #ifdef _DEBUG
- #include <atldebugapi.h>
- extern "C" IMAGE_DOS_HEADER __ImageBase;
- #endif // _DEBUG
- #pragma pack(push,_ATL_PACKING)
- namespace ATL
- {
- // Declare a global instance of this class to automatically register a custom trace category at startup
- class CTraceCategory
- {
- public:
- explicit CTraceCategory( LPCTSTR pszCategoryName, UINT nStartingLevel = 0 ) throw();
- #ifdef _DEBUG
- UINT GetLevel() const throw();
- void SetLevel( UINT nLevel ) throw();
- ATLTRACESTATUS GetStatus() const throw();
- void SetStatus( ATLTRACESTATUS eStatus) throw();
- #endif
- operator DWORD_PTR() const throw();
- public:
- #ifdef _DEBUG
- DWORD_PTR m_dwCategory;
- #endif
- };
- #ifdef _DEBUG
- class CTrace
- {
- public:
- typedef int (__cdecl *fnCrtDbgReport_t)(int,const char *,int,const char *,const char *,...);
- private:
- CTrace(
- #ifdef _ATL_NO_DEBUG_CRT
- fnCrtDbgReport_t pfnCrtDbgReport = NULL)
- #else
- fnCrtDbgReport_t pfnCrtDbgReport = _CrtDbgReport)
- #endif
- : m_hInst(reinterpret_cast<HINSTANCE>(&__ImageBase)),
- m_dwModule( 0 )
- {
- m_dwModule = AtlTraceRegister(m_hInst, pfnCrtDbgReport);
- }
- ~CTrace()
- {
- AtlTraceUnregister(m_dwModule);
- }
- public:
- bool ChangeCategory(DWORD_PTR dwCategory, UINT nLevel, ATLTRACESTATUS eStatus)
- {
- return 0 !=
- AtlTraceModifyCategory(0, dwCategory, nLevel, eStatus);
- }
- bool GetCategory(DWORD_PTR dwCategory, UINT *pnLevel, ATLTRACESTATUS *peStatus)
- {
- ATLASSERT(pnLevel && peStatus);
- return 0 != AtlTraceGetCategory(0, dwCategory, pnLevel, peStatus);
- }
- UINT GetLevel()
- {
- ATLTRACESTATUS eStatus;
- UINT nLevel;
- AtlTraceGetModule(0, m_dwModule, &nLevel, &eStatus);
- return nLevel;
- }
- void SetLevel(UINT nLevel)
- {
- AtlTraceModifyModule(0, m_dwModule, nLevel, ATLTRACESTATUS_ENABLED);
- }
- ATLTRACESTATUS GetStatus()
- {
- ATLTRACESTATUS eStatus;
- UINT nLevel;
- AtlTraceGetModule(0, m_dwModule, &nLevel, &eStatus);
- return eStatus;
- }
- void SetStatus(ATLTRACESTATUS eStatus)
- {
- ATLTRACESTATUS eOldStatus;
- UINT nLevel;
- AtlTraceGetModule(0, m_dwModule, &nLevel, &eOldStatus);
- AtlTraceModifyModule(0, m_dwModule, nLevel, eStatus);
- }
- void __cdecl TraceV(const char *pszFileName, int nLine,
- DWORD_PTR dwCategory, UINT nLevel, LPCSTR pszFmt, va_list args) const;
- void __cdecl TraceV(const char *pszFileName, int nLine,
- DWORD_PTR dwCategory, UINT nLevel, LPCWSTR pszFmt, va_list args) const;
- DWORD_PTR RegisterCategory(LPCSTR pszCategory)
- {return(AtlTraceRegisterCategoryA(m_dwModule, pszCategory));}
- #ifdef _UNICODE
- DWORD_PTR RegisterCategory(LPCWSTR pszCategory)
- {return(AtlTraceRegisterCategoryU(m_dwModule, pszCategory));}
- #endif
- bool LoadSettings(LPCTSTR pszFileName = NULL) const
- {return 0 != AtlTraceLoadSettings(pszFileName);}
- void SaveSettings(LPCTSTR pszFileName = NULL) const
- {AtlTraceSaveSettings(pszFileName);}
- public:
- static CTrace s_trace;
- protected:
- HINSTANCE m_hInst;
- DWORD_PTR m_dwModule;
- };
- inline void __cdecl CTrace::TraceV(const char *pszFileName, int nLine,
- DWORD_PTR dwCategory, UINT nLevel, LPCSTR pszFmt, va_list args) const
- {
- AtlTraceVA(m_dwModule, pszFileName, nLine, dwCategory, nLevel, pszFmt, args);
- }
- inline void __cdecl CTrace::TraceV(const char *pszFileName, int nLine,
- DWORD_PTR dwCategory, UINT nLevel, LPCWSTR pszFmt, va_list args) const
- {
- AtlTraceVU(m_dwModule, pszFileName, nLine, dwCategory, nLevel, pszFmt, args);
- }
- extern CTraceCategory atlTraceGeneral;
- class CTraceFileAndLineInfo
- {
- public:
- CTraceFileAndLineInfo(const char *pszFileName, int nLineNo)
- : m_pszFileName(pszFileName), m_nLineNo(nLineNo)
- {}
- #pragma warning(push)
- #pragma warning(disable : 4793)
- void __cdecl operator()(DWORD_PTR dwCategory, UINT nLevel, const char *pszFmt, ...) const
- {
- va_list ptr; va_start(ptr, pszFmt);
- ATL::CTrace::s_trace.TraceV(m_pszFileName, m_nLineNo, dwCategory, nLevel, pszFmt, ptr);
- va_end(ptr);
- }
- #pragma warning(pop)
- #pragma warning(push)
- #pragma warning(disable : 4793)
- void __cdecl operator()(DWORD_PTR dwCategory, UINT nLevel, const wchar_t *pszFmt, ...) const
- {
- va_list ptr; va_start(ptr, pszFmt);
- ATL::CTrace::s_trace.TraceV(m_pszFileName, m_nLineNo, dwCategory, nLevel, pszFmt, ptr);
- va_end(ptr);
- }
- #pragma warning(pop)
- #pragma warning(push)
- #pragma warning(disable : 4793)
- void __cdecl operator()(const char *pszFmt, ...) const
- {
- va_list ptr; va_start(ptr, pszFmt);
- ATL::CTrace::s_trace.TraceV(m_pszFileName, m_nLineNo, atlTraceGeneral, 0, pszFmt, ptr);
- va_end(ptr);
- }
- #pragma warning(pop)
- #pragma warning(push)
- #pragma warning(disable : 4793)
- void __cdecl operator()(const wchar_t *pszFmt, ...) const
- {
- va_list ptr; va_start(ptr, pszFmt);
- ATL::CTrace::s_trace.TraceV(m_pszFileName, m_nLineNo, atlTraceGeneral, 0, pszFmt, ptr);
- va_end(ptr);
- }
- #pragma warning(pop)
- private:
- /* unimplemented */
- CTraceFileAndLineInfo &__cdecl operator=(const CTraceFileAndLineInfo &right);
- const char *const m_pszFileName;
- const int m_nLineNo;
- };
- #endif // _DEBUG
- #ifdef _DEBUG
- inline CTraceCategory::CTraceCategory( LPCTSTR pszCategoryName, UINT nStartingLevel ) throw() :
- m_dwCategory( 0 )
- {
- m_dwCategory = ATL::CTrace::s_trace.RegisterCategory( pszCategoryName );
- ATL::CTrace::s_trace.ChangeCategory( m_dwCategory, nStartingLevel, ATLTRACESTATUS_INHERIT);
- }
- inline CTraceCategory::operator DWORD_PTR() const throw()
- {
- return( m_dwCategory );
- }
- inline UINT CTraceCategory::GetLevel() const throw()
- {
- UINT nLevel;
- ATLTRACESTATUS eStatus;
- ATL::CTrace::s_trace.GetCategory( m_dwCategory, &nLevel, &eStatus );
- return( nLevel );
- }
- inline void CTraceCategory::SetLevel( UINT nLevel ) throw()
- {
- ATL::CTrace::s_trace.ChangeCategory( m_dwCategory, nLevel, ATLTRACESTATUS_ENABLED );
- }
- inline ATLTRACESTATUS CTraceCategory::GetStatus() const throw()
- {
- UINT nLevel;
- ATLTRACESTATUS eStatus;
- ATL::CTrace::s_trace.GetCategory( m_dwCategory, &nLevel, &eStatus );
- return( eStatus );
- }
- inline void CTraceCategory::SetStatus( ATLTRACESTATUS eStatus ) throw()
- {
- UINT nLevel;
- ATLTRACESTATUS eOldStatus;
- ATL::CTrace::s_trace.GetCategory( m_dwCategory, &nLevel, &eOldStatus );
- ATL::CTrace::s_trace.ChangeCategory( m_dwCategory, nLevel, eStatus );
- }
- #else // !_DEBUG
- inline CTraceCategory::CTraceCategory( LPCTSTR pszCategoryName, UINT nStartingLevel ) throw()
- {
- (void)pszCategoryName;
- (void)nStartingLevel;
- }
- inline CTraceCategory::operator DWORD_PTR() const throw()
- {
- return( 0 );
- }
- #endif // _DEBUG
- } // namespace ATL
- namespace ATL
- {
- #ifdef _DEBUG
- #define DECLARE_TRACE_CATEGORY( name ) extern ATL::CTraceCategory name;
- #else
- #define DECLARE_TRACE_CATEGORY( name ) const DWORD_PTR name = 0;
- #endif
- DECLARE_TRACE_CATEGORY( atlTraceGeneral )
- DECLARE_TRACE_CATEGORY( atlTraceCOM )
- DECLARE_TRACE_CATEGORY( atlTraceQI )
- DECLARE_TRACE_CATEGORY( atlTraceRegistrar )
- DECLARE_TRACE_CATEGORY( atlTraceRefcount )
- DECLARE_TRACE_CATEGORY( atlTraceWindowing )
- DECLARE_TRACE_CATEGORY( atlTraceControls )
- DECLARE_TRACE_CATEGORY( atlTraceHosting )
- DECLARE_TRACE_CATEGORY( atlTraceDBClient )
- DECLARE_TRACE_CATEGORY( atlTraceDBProvider )
- DECLARE_TRACE_CATEGORY( atlTraceSnapin )
- DECLARE_TRACE_CATEGORY( atlTraceNotImpl )
- DECLARE_TRACE_CATEGORY( atlTraceAllocation )
- DECLARE_TRACE_CATEGORY( atlTraceException )
- DECLARE_TRACE_CATEGORY( atlTraceTime )
- DECLARE_TRACE_CATEGORY( atlTraceCache )
- DECLARE_TRACE_CATEGORY( atlTraceStencil )
- DECLARE_TRACE_CATEGORY( atlTraceString )
- DECLARE_TRACE_CATEGORY( atlTraceMap )
- DECLARE_TRACE_CATEGORY( atlTraceUtil )
- DECLARE_TRACE_CATEGORY( atlTraceSecurity )
- DECLARE_TRACE_CATEGORY( atlTraceSync )
- DECLARE_TRACE_CATEGORY( atlTraceISAPI )
- // atlTraceUser categories are no longer needed. Just declare your own trace category using CTraceCategory.
- DECLARE_TRACE_CATEGORY( atlTraceUser )
- DECLARE_TRACE_CATEGORY( atlTraceUser2 )
- DECLARE_TRACE_CATEGORY( atlTraceUser3 )
- DECLARE_TRACE_CATEGORY( atlTraceUser4 )
- #pragma deprecated( atlTraceUser )
- #pragma deprecated( atlTraceUser2 )
- #pragma deprecated( atlTraceUser3 )
- #pragma deprecated( atlTraceUser4 )
- #ifdef _DEBUG
- #ifndef _ATL_NO_DEBUG_CRT
- class CNoUIAssertHook
- {
- public:
- CNoUIAssertHook()
- {
- ATLASSERT( s_pfnPrevHook == NULL );
- s_pfnPrevHook = _CrtSetReportHook(CrtHookProc);
- }
- ~CNoUIAssertHook()
- {
- _CrtSetReportHook(s_pfnPrevHook);
- s_pfnPrevHook = NULL;
- }
- private:
- static int __cdecl CrtHookProc(__in int eReportType, __in_z char* pszMessage, __out int* pnRetVal)
- {
- if (eReportType == _CRT_ASSERT)
- {
- ::OutputDebugStringA( "ASSERTION FAILEDn" );
- ::OutputDebugStringA( pszMessage );
- //If caller doesn't want retVal, so be it.
- if (pnRetVal != NULL)
- {
- *pnRetVal = 1;
- }
- return TRUE;
- }
- if (s_pfnPrevHook != NULL)
- {
- return s_pfnPrevHook(eReportType, pszMessage, pnRetVal);
- }
- else
- {
- return FALSE;
- }
- }
- private:
- static _CRT_REPORT_HOOK s_pfnPrevHook;
- };
- __declspec( selectany ) _CRT_REPORT_HOOK CNoUIAssertHook::s_pfnPrevHook = NULL;
- #define DECLARE_NOUIASSERT() ATL::CNoUIAssertHook _g_NoUIAssertHook;
- #endif // _ATL_NO_DEBUG_CRT
- #ifndef ATLTRACE
- #define ATLTRACE ATL::CTraceFileAndLineInfo(__FILE__, __LINE__)
- #define ATLTRACE2 ATLTRACE
- #endif
- #pragma warning(push)
- #pragma warning(disable : 4793)
- inline void __cdecl AtlTrace(LPCSTR pszFormat, ...)
- {
- va_list ptr;
- va_start(ptr, pszFormat);
- ATL::CTrace::s_trace.TraceV(NULL, -1, atlTraceGeneral, 0, pszFormat, ptr);
- va_end(ptr);
- }
- #pragma warning(pop)
- #pragma warning(push)
- #pragma warning(disable : 4793)
- inline void __cdecl AtlTrace(LPCWSTR pszFormat, ...)
- {
- va_list ptr;
- va_start(ptr, pszFormat);
- ATL::CTrace::s_trace.TraceV(NULL, -1, atlTraceGeneral, 0, pszFormat, ptr);
- va_end(ptr);
- }
- #pragma warning(pop)
- #pragma warning(push)
- #pragma warning(disable : 4793)
- inline void __cdecl AtlTrace2(DWORD_PTR dwCategory, UINT nLevel, LPCSTR pszFormat, ...)
- {
- va_list ptr;
- va_start(ptr, pszFormat);
- ATL::CTrace::s_trace.TraceV(NULL, -1, dwCategory, nLevel, pszFormat, ptr);
- va_end(ptr);
- }
- #pragma warning(pop)
- #pragma warning(push)
- #pragma warning(disable : 4793)
- inline void __cdecl AtlTrace2(DWORD_PTR dwCategory, UINT nLevel, LPCWSTR pszFormat, ...)
- {
- va_list ptr;
- va_start(ptr, pszFormat);
- ATL::CTrace::s_trace.TraceV(NULL, -1, dwCategory, nLevel, pszFormat, ptr);
- va_end(ptr);
- }
- #pragma warning(pop)
- #define ATLTRACENOTIMPL(funcname) do { ATLTRACE(ATL::atlTraceNotImpl, 0, _T("ATL: %s not implemented.n"), funcname); return E_NOTIMPL; } while(0)
- #else // !DEBUG
- #pragma warning(push)
- #pragma warning(disable : 4793)
- inline void __cdecl AtlTraceNull(...){}
- inline void __cdecl AtlTrace(LPCSTR , ...){}
- inline void __cdecl AtlTrace2(DWORD_PTR, UINT, LPCSTR , ...){}
- inline void __cdecl AtlTrace(LPCWSTR , ...){}
- inline void __cdecl AtlTrace2(DWORD_PTR, UINT, LPCWSTR , ...){}
- #pragma warning(pop)
- #ifndef ATLTRACE
- #define ATLTRACE __noop
- #define ATLTRACE2 __noop
- #endif //ATLTRACE
- #define ATLTRACENOTIMPL(funcname) return E_NOTIMPL
- #define DECLARE_NOUIASSERT()
- #endif //!_DEBUG
- }; // namespace ATL
- #pragma pack(pop)
- #endif // __ATLTRACE_H__