home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
msdn_vcb
/
samples
/
vc98
/
sdk
/
graphics
/
gdi
/
gdidemo
/
wininfo.c
< prev
next >
Wrap
C/C++ Source or Header
|
1997-10-05
|
3KB
|
91 lines
/******************************************************************************\
* This is a part of the Microsoft Source Code Samples.
* Copyright (C) 1993-1997 Microsoft Corporation.
* All rights reserved.
* This source code is only intended as a supplement to
* Microsoft Development Tools and/or WinHelp documentation.
* See these sources for detailed information regarding the
* Microsoft samples programs.
\******************************************************************************/
/*---------------------------------------------------------------------------*\
| WINDOW INFORMATION MODULE
| This module contains the routines which deal with obtaining the extra
| object information associated with a window. For these to work, the
| window class must reserve the 0th word of the win-class object to be
| used to hold global-memory handle.
\*---------------------------------------------------------------------------*/
#include <windows.h>
#include "gdidemo.h"
/*---------------------------------------------------------------------------*\
| ALLOC WINDOW INFO
| This routine allocates memory out of the application heap for storing
| extra memory for the window. It is alway referenced as offset 0.
\*---------------------------------------------------------------------------*/
BOOL FAR AllocWindowInfo(HWND hWnd, WORD wSize)
{
HANDLE hsd;
if(hsd = LocalAlloc(LHND,(WORD)wSize))
{
SetWindowLong(hWnd,0,(LONG)hsd);
return(TRUE);
}
return(FALSE);
}
/*---------------------------------------------------------------------------*\
| LOCK WINDOW INFO
| This routine de-references the extra-memory associated with the window.
| it locks the object and gives the caller a pointer to the memory.
\*---------------------------------------------------------------------------*/
PVOID FAR LockWindowInfo(HWND hWnd)
{
HANDLE hMem;
PVOID pMem;
pMem = NULL;
if(hMem = (HANDLE)GetWindowLong(hWnd,0))
pMem = (PVOID)LocalLock(hMem);
return(pMem);
}
/*---------------------------------------------------------------------------*\
| UNLOCK WINDOW INFO
| This routine unlocks the memory the caller has previously locked.
\*---------------------------------------------------------------------------*/
BOOL FAR UnlockWindowInfo(HWND hWnd)
{
HANDLE hMem;
if(hMem = (HANDLE)GetWindowLong(hWnd,0))
if(!LocalUnlock(hMem))
return(TRUE);
return(FALSE);
}
/*---------------------------------------------------------------------------*\
| FREE WINDOW INFO
| This routine frees the object memory associated with the window.
\*---------------------------------------------------------------------------*/
BOOL FAR FreeWindowInfo(HWND hWnd)
{
LOCALHANDLE hMem;
if(hMem = (HANDLE)GetWindowLong(hWnd,0))
LocalFree(hMem);
return(TRUE);
}