www.pudn.com > BlueToothExc.rar > PublicFunc.h


#pragma once 
//========================================================================== 
// 常用操作宏 
//========================================================================== 
#define LENGTH(x) sizeof(x)/sizeof(x[0]) 
#define MIN(x,y) (((DWORD)(x)<(DWORD)(y))?(x):(y)) 
#define MAX(x,y) (((DWORD)(x)>(DWORD)(y))?(x):(y)) 
#define ASSERT_ADDRESS(p,size) ASSERT((p)!=NULL && AfxIsValidAddress((p),(size),TRUE)) 
 
// 句柄是否有效 
#define HANDLE_IS_VALID(h) ( HANDLE(h) && HANDLE(h) != INVALID_HANDLE_VALUE ) 
// 关闭句柄 
#define SAFE_CLOSE_HANDLE(h)\ 
{\ 
	if ( HANDLE_IS_VALID ( h ) )\ 
	{\ 
		CloseHandle ( h );\ 
		h = NULL;\ 
	}\ 
} 
 
// 等待事件的 Sleep() 函数 
#define SLEEP_RETURN(x)\ 
{\ 
	if ( ::WaitForSingleObject ( m_hEvtEndModule, x ) == WAIT_OBJECT_0 )\ 
		return FALSE;\ 
} 
#define SLEEP_BREAK(x)\ 
{\ 
	if ( ::WaitForSingleObject ( m_hEvtEndModule, x ) == WAIT_OBJECT_0 )\ 
		break;\ 
} 
 
class CPublicFunc 
{ 
public: 
	CPublicFunc(void); 
public: 
	~CPublicFunc(void); 
}; 
 
CString hwFormatMessage ( DWORD dwErrorCode ); 
BOOL WaitForThreadEnd ( HANDLE *phThread, DWORD dwWaitTime=5000 ); 
CString Data2HexString ( char *data, int size, int nBytesPerLine=16 ); 
int ConvStringToHexData(CString csOrgStr, BYTE *szOutBuffer, int nOutBufferSize);