home *** CD-ROM | disk | FTP | other *** search
- /////////////////////////////////////////////////////////////////////////////
- //
- // utility.cpp : Implementation of the utility unit
- //
- /////////////////////////////////////////////////////////////////////////////
- //
- // (C) Copyright Black Diamond Consulting, Inc 1996. All rights reserved.
- //
- // You have a royalty-free right to use, modify, reproduce and
- // distribute the Sample Files (and/or any modified version) in
- // any way you find useful, provided that you agree that Black
- // Diamond Consulting has no warranty obligations or liability
- // for any Sample Application Files which are modified.
- //
- // Revision History:
- //
- /////////////////////////////////////////////////////////////////////////////
-
- #include "stdafx.h"
-
- #include "dib.h"
-
- #ifndef __UTILITY_H__
- #include "utility.h"
- #endif
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
-
- void InfoMsg( LPCSTR sz, ... )
- {
- char buffer[256];
-
- wvsprintf( buffer, sz, (LPSTR)(&sz+1) );
- ::MessageBeep( MB_ICONQUESTION );
- ::MessageBox( NULL, buffer, "Information", MB_OK|MB_ICONQUESTION|MB_TASKMODAL );
- }
-
- void ErrMsg( LPCSTR sz, ... )
- {
- char buffer[256];
-
- wvsprintf( buffer, sz, (LPSTR)(&sz+1) );
- ::MessageBeep( MB_ICONHAND );
- ::MessageBox( NULL, buffer, "Application Error", MB_OK|MB_ICONHAND|MB_TASKMODAL );
- }
-
- void DebugMsg( LPCSTR sz, ... )
- {
- char buffer[256];
-
- wvsprintf( buffer, sz, (LPSTR)(&sz+1) );
- OutputDebugString( buffer );
- }
-
- HRESULT ReadFromStream( LPSTREAM pIStream, CString& string )
- {
- HRESULT hr;
- unsigned long size;
-
- hr = pIStream->Read( (void *)&size, sizeof( size ), NULL );
- if( FAILED(hr) )
- return hr;
-
- if( size != 0 )
- hr = pIStream->Read( (void *)string.GetBufferSetLength( size ), size * sizeof( char ), NULL );
-
- return hr;
- }
-
- HRESULT ReadFromStream( LPSTREAM pIStream, BITMAPINFOHEADER** ppDib )
- {
- HRESULT hr;
- HGLOBAL hMemory;
- unsigned long size;
- void* pVoid;
-
- hr = pIStream->Read( (void *)&size, sizeof( size ), NULL );
- if( FAILED(hr) )
- return hr;
-
- if( size != 0 )
- {
- hMemory = GlobalAllocPtr( GMEM_MOVEABLE|GMEM_DDESHARE, (DWORD)size );
- if( hMemory == NULL )
- return STG_E_INSUFFICIENTMEMORY;
-
- pVoid = GlobalLock( hMemory );
-
- hr = pIStream->Read( (void *)pVoid, size, NULL );
-
- if( FAILED(hr) )
- GlobalFree( hMemory );
- else
- *ppDib = (BITMAPINFOHEADER*)pVoid;
- }
- else
- *ppDib = NULL;
-
- return hr;
- }
-
- HRESULT ReadFromStream( LPSTREAM pIStream, CSize& cSz )
- {
- HRESULT hr;
- SIZE sz;
-
- hr = pIStream->Read( (void *)&sz, sizeof( SIZE ), NULL );
-
- cSz = sz;
-
- return hr;
- }
-
- HRESULT ReadFromStream( LPSTREAM pIStream, int* iInteger )
- {
- return pIStream->Read( (void *)iInteger, sizeof( int ), NULL );
- }
-
- HRESULT ReadFromStream( LPSTREAM pIStream, float* fFloat )
- {
- return pIStream->Read( (void *)fFloat, sizeof( float ), NULL );
- }
-
- HRESULT ReadFromStream( LPSTREAM pIStream, SPHERE_POINT* sPoint )
- {
- return pIStream->Read( (void *)sPoint, sizeof( SPHERE_POINT ), NULL );
- }
-
- HRESULT ReadFromStream( LPSTREAM pIStream, DWORD* dWord )
- {
- return pIStream->Read( (void *)dWord, sizeof( DWORD ), NULL );
- }
-
- HRESULT WriteToStream( LPSTREAM pIStream, CString& string )
- {
- HRESULT hr;
- unsigned long size;
-
- size = string.GetLength();
-
- hr = pIStream->Write( (void *)&size, sizeof( size ), NULL );
- if( FAILED(hr) )
- return hr;
-
- if( size != 0 )
- hr = pIStream->Write( (void *)string.GetBuffer( size ), size * sizeof( char ), NULL );
-
- return hr;
- }
-
- HRESULT WriteToStream( LPSTREAM pIStream, BITMAPINFOHEADER* pDib )
- {
- HRESULT hr;
- unsigned long size;
-
- if( pDib != NULL )
- size = DibSize(pDib);
- else
- size = 0;
-
- hr = pIStream->Write( (void *)&size, sizeof( size ), NULL );
- if( FAILED(hr) )
- return hr;
-
- if( size != 0 )
- hr = pIStream->Write( (void *)pDib, size, NULL );
-
- return hr;
- }
-
- HRESULT WriteToStream( LPSTREAM pIStream, CSize& cSz )
- {
- SIZE sz;
-
- sz.cx = cSz.cx;
- sz.cy = cSz.cy;
-
- return pIStream->Write( (void *)&sz, sizeof( SIZE ), NULL );
- }
-
- HRESULT WriteToStream( LPSTREAM pIStream, int iInteger )
- {
- return pIStream->Write( (void *)&iInteger, sizeof( int ), NULL );
- }
-
- HRESULT WriteToStream( LPSTREAM pIStream, float fFloat )
- {
- return pIStream->Write( (void *)&fFloat, sizeof( float ), NULL );
- }
-
- HRESULT WriteToStream( LPSTREAM pIStream, SPHERE_POINT* sPoint )
- {
- return pIStream->Write( (void *)sPoint, sizeof( SPHERE_POINT ), NULL );
- }
-
- HRESULT WriteToStream( LPSTREAM pIStream, DWORD* dWord )
- {
- return pIStream->Write( (void *)dWord, sizeof( DWORD ), NULL );
- }
-
-