66 lines
1.2 KiB
C++
66 lines
1.2 KiB
C++
/*****************************************************************/
|
|
/** Microsoft Windows for Workgroups **/
|
|
/** Copyright (C) Microsoft Corp., 1991-1992 **/
|
|
/*****************************************************************/
|
|
|
|
/* BUFGLOB.CPP -- Implementation of GLOBAL_BUFFER class.
|
|
*
|
|
* History:
|
|
* 03/24/93 gregj Created
|
|
*/
|
|
|
|
#include "npcommon.h"
|
|
#include "buffer.h"
|
|
|
|
BOOL LOCAL_BUFFER::Alloc( UINT cbBuffer )
|
|
{
|
|
_hMem = ::LocalAlloc( LMEM_MOVEABLE, cbBuffer );
|
|
if (_hMem == NULL) {
|
|
_npBuffer = NULL;
|
|
_cb = 0;
|
|
return FALSE;
|
|
}
|
|
|
|
_npBuffer = ::LocalLock( _hMem );
|
|
_cb = cbBuffer;
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL LOCAL_BUFFER::Realloc( UINT cbNew )
|
|
{
|
|
if (_hMem == NULL)
|
|
return FALSE;
|
|
|
|
::LocalUnlock( _hMem );
|
|
|
|
HLOCAL hNew = ::LocalReAlloc( _hMem, cbNew, LMEM_MOVEABLE );
|
|
if (hNew == NULL) {
|
|
::LocalLock( _hMem );
|
|
return FALSE;
|
|
}
|
|
|
|
_hMem = hNew;
|
|
_npBuffer = ::LocalLock( _hMem );
|
|
_cb = cbNew;
|
|
return TRUE;
|
|
}
|
|
|
|
LOCAL_BUFFER::LOCAL_BUFFER( UINT cbInitial /* =0 */ )
|
|
: BUFFER_BASE(),
|
|
_hMem( NULL ),
|
|
_npBuffer( NULL )
|
|
{
|
|
if (cbInitial)
|
|
Alloc( cbInitial );
|
|
}
|
|
|
|
LOCAL_BUFFER::~LOCAL_BUFFER()
|
|
{
|
|
if (_hMem != NULL) {
|
|
::LocalUnlock( _hMem );
|
|
::LocalFree( _hMem );
|
|
_hMem = NULL;
|
|
_npBuffer = NULL;
|
|
}
|
|
}
|