/*****************************************************************/ /** Microsoft Windows for Workgroups **/ /** Copyright (C) Microsoft Corp., 1991-1992 **/ /*****************************************************************/ /* BUFGLOB.CPP -- Implementation of GLOBAL_BUFFER class. * * History: * 03/22/93 gregj Created * 03/24/93 gregj Renamed from plain BUFFER, derived from BUFFER_BASE * */ #include "npcommon.h" #include "buffer.h" BOOL GLOBAL_BUFFER::Alloc( UINT cbBuffer ) { _hMem = ::GlobalAlloc( GMEM_DDESHARE | GMEM_MOVEABLE, cbBuffer ); if (_hMem == NULL) { _lpBuffer = NULL; _cb = 0; return FALSE; } _lpBuffer = ::GlobalLock( _hMem ); _cb = cbBuffer; return TRUE; } BOOL GLOBAL_BUFFER::Realloc( UINT cbNew ) { if (_hMem == NULL) return FALSE; ::GlobalUnlock( _hMem ); HGLOBAL hNew = ::GlobalReAlloc( _hMem, cbNew, GMEM_MOVEABLE ); if (hNew == NULL) { ::GlobalLock( _hMem ); return FALSE; } _hMem = hNew; _lpBuffer = ::GlobalLock( _hMem ); _cb = cbNew; return TRUE; } GLOBAL_BUFFER::GLOBAL_BUFFER( UINT cbInitial /* =0 */ ) : BUFFER_BASE(), _hMem( NULL ), _lpBuffer( NULL ) { if (cbInitial) Alloc( cbInitial ); } GLOBAL_BUFFER::~GLOBAL_BUFFER() { if (_hMem != NULL) { ::GlobalUnlock( _hMem ); ::GlobalFree( _hMem ); _hMem = NULL; _lpBuffer = NULL; } }