UTIL.H
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:
Windows编程
开发平台:
Visual C++
- // util.h - shared utilities
- //
- // This is a part of the Active Template Library.
- // Copyright (C) 1996-1998 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 __Util_h__
- #define __Util_h__
- #include <assert.h>
- // Displays a message box with an error string in it.
- void ErrorMessage(LPCTSTR str, HRESULT hr) ;
- // Determine if two interfaces below to the same component.
- BOOL InterfacesAreOnSameComponent(IUnknown* pI1, IUnknown* pI2) ;
- // Displays messages using OutputDebugString
- void __cdecl MyTrace(LPCTSTR lpszFormat, ...);
- // Determine if an address is accessable.
- BOOL IsValidAddress(const void* lp, UINT nBytes = 1, BOOL bReadWrite = FALSE) ;
- // Determine if interface pointer is accessable.
- inline BOOL IsValidInterface(IUnknown* p)
- {
- return (p != NULL) && IsValidAddress(p, sizeof(IUnknown*), FALSE) ;
- }
- // Determine if the out parameter for an interface pointer is accessable.
- template <class T>
- inline BOOL IsValidInterfaceOutParam(T** p)
- {
- return (p != NULL) && IsValidAddress(p, sizeof(IUnknown*), TRUE) ;
- }
- /////////////////////////////////////////////////////////////////////////////
- // Diagnostic support
- // Helper function for checking HRESULTs.
- #ifdef _DEBUG
- inline void CheckResult(HRESULT hr)
- {
- if (FAILED(hr))
- {
- ErrorMessage(NULL, hr) ;
- assert(FAILED(hr)) ;
- }
- }
- #define ASSERT_HRESULT CheckResult
- #else
- #define ASSERT_HRESULT
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // More Diagnostic support which mimics MFC
- #ifndef __AFX_H__ // Only define these if MFC has not already been included
- #ifdef _DEBUG
- #define ASSERT assert
- #define VERIFY(f) ASSERT(f)
- #define DEBUG_ONLY(f) (f)
- #define TRACE ::MyTrace
- #define TRACE0(sz) ::MyTrace(_T("%s"), _T(sz))
- #else // _DEBUG
- #define ASSERT
- #define VERIFY(f) ((void)(f))
- #define ASSERT_VALID(pOb) ((void)0)
- #define DEBUG_ONLY(f) ((void)0)
- #define TRACE
- #define TRACE0(sz)
- #endif // !_DEBUG
- #define ASSERT_POINTER(p, type)
- ASSERT(((p) != NULL) && IsValidAddress((p), sizeof(type), FALSE))
- #define ASSERT_NULL_OR_POINTER(p, type)
- ASSERT(((p) == NULL) || IsValidAddress((p), sizeof(type), FALSE))
- #endif // TRACE
- #endif // __Util_h__