|
|
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.