|
|
1.1 ! root 1: /*---------------------------------------------------------------------------*\ ! 2: | WINDOW INFORMATION MODULE ! 3: | This module contains the routines which deal with obtaining the extra ! 4: | object information associated with a window. For these to work, the ! 5: | window class must reserve the 0th word of the win-class object to be ! 6: | used to hold global-memory handle. ! 7: | ! 8: | segment: _TEXT (DOS16) ! 9: | created: 22-Aug-90 ! 10: | history: 22-Aug-90 <chriswil> created. ! 11: | ! 12: \*---------------------------------------------------------------------------*/ ! 13: ! 14: #include <windows.h> ! 15: #include "gdidemo.h" ! 16: ! 17: /*---------------------------------------------------------------------------*\ ! 18: | ALLOC WINDOW INFO ! 19: | This routine allocates memory out of the application heap for storing ! 20: | extra memory for the window. It is alway referenced as offset 0. ! 21: | ! 22: | created: 20-Aug-90 ! 23: | history: 20-Aug-90 <chriswil> created. ! 24: | ! 25: \*---------------------------------------------------------------------------*/ ! 26: BOOL FAR AllocWindowInfo(HWND hWnd, WORD wSize) ! 27: { ! 28: HANDLE hsd; ! 29: ! 30: ! 31: if(hsd = LocalAlloc(LHND,(WORD)wSize)) ! 32: { ! 33: SetWindowLong(hWnd,0,(LONG)hsd); ! 34: return(TRUE); ! 35: } ! 36: return(FALSE); ! 37: } ! 38: ! 39: ! 40: /*---------------------------------------------------------------------------*\ ! 41: | LOCK WINDOW INFO ! 42: | This routine de-references the extra-memory associated with the window. ! 43: | it locks the object and gives the caller a pointer to the memory. ! 44: | ! 45: | created: 20-Aug-90 ! 46: | history: 20-Aug-90 <chriswil> created. ! 47: | ! 48: \*---------------------------------------------------------------------------*/ ! 49: PVOID FAR LockWindowInfo(HWND hWnd) ! 50: { ! 51: HANDLE hMem; ! 52: PVOID pMem; ! 53: ! 54: ! 55: pMem = NULL; ! 56: if(hMem = (HANDLE)GetWindowLong(hWnd,0)) ! 57: pMem = (PVOID)LocalLock(hMem); ! 58: ! 59: return(pMem); ! 60: } ! 61: ! 62: ! 63: /*---------------------------------------------------------------------------*\ ! 64: | UNLOCK WINDOW INFO ! 65: | This routine unlocks the memory the caller has previously locked. ! 66: | ! 67: | created: 20-Aug-90 ! 68: | history: 20-Aug-90 <chriswil> created. ! 69: | ! 70: \*---------------------------------------------------------------------------*/ ! 71: BOOL FAR UnlockWindowInfo(HWND hWnd) ! 72: { ! 73: HANDLE hMem; ! 74: ! 75: ! 76: if(hMem = (HANDLE)GetWindowLong(hWnd,0)) ! 77: if(!LocalUnlock(hMem)) ! 78: return(TRUE); ! 79: ! 80: return(FALSE); ! 81: } ! 82: ! 83: ! 84: /*---------------------------------------------------------------------------*\ ! 85: | FREE WINDOW INFO ! 86: | This routine frees the object memory associated with the window. ! 87: | ! 88: | created: 20-Aug-90 ! 89: | history: 20-Aug-90 <chriswil> created. ! 90: | ! 91: \*---------------------------------------------------------------------------*/ ! 92: BOOL FAR FreeWindowInfo(HWND hWnd) ! 93: { ! 94: LOCALHANDLE hMem; ! 95: ! 96: ! 97: if(hMem = (HANDLE)GetWindowLong(hWnd,0)) ! 98: LocalFree(hMem); ! 99: return(TRUE); ! 100: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.