[3707] | 1 | /*
|
---|
| 2 | * Win32 Handle Management Code for OS/2 (GDI32)
|
---|
| 3 | *
|
---|
| 4 | */
|
---|
| 5 | #ifndef __OBJHANDLE_H__
|
---|
| 6 | #define __OBJHANDLE_H__
|
---|
| 7 |
|
---|
[8831] | 8 | #ifdef NEW_GDIHANDLES
|
---|
| 9 |
|
---|
| 10 | #define MAX_OBJECT_HANDLES 1024
|
---|
| 11 | #define HANDLE_OBJ_ERROR -1
|
---|
| 12 | #define HANDLE_INVALID_DATA 0
|
---|
| 13 |
|
---|
| 14 | #define OBJHANDLE_MAGIC_MASK 0x00FFFFFF
|
---|
| 15 | #define MAKE_HANDLE(a) (a | 0x80000000)
|
---|
| 16 | #define OBJHANDLE_MAGIC(a) (a & ~0x80000000)
|
---|
| 17 |
|
---|
| 18 | #define OBJHANDLE_FLAG_NODELETE 0x01 //system handle; do not delete
|
---|
| 19 | #define OBJHANDLE_FLAG_BMP_SCREEN_COMPATIBLE 0x02 //Bitmap with screen properties (bpp)
|
---|
| 20 | #define OBJHANDLE_FLAG_BMP_RGB565 0x04 //RGB565 bitmap
|
---|
| 21 | #define OBJHANDLE_FLAG_BMP_DIBSECTION 0x08 //DIB section handle
|
---|
| 22 |
|
---|
| 23 |
|
---|
| 24 | #define HNDL_NONE 0x00
|
---|
| 25 | #define HNDL_PEN 0x01
|
---|
| 26 | #define HNDL_BRUSH 0x02
|
---|
| 27 | #define HNDL_DC 0x03
|
---|
| 28 | #define HNDL_METADC 0x04
|
---|
| 29 | #define HNDL_PALETTE 0x05
|
---|
| 30 | #define HNDL_FONT 0x06
|
---|
| 31 | #define HNDL_BITMAP 0x07
|
---|
| 32 | #define HNDL_DIBSECTION 0x08
|
---|
| 33 | #define HNDL_REGION 0x09
|
---|
| 34 | #define HNDL_METAFILE 0x0A
|
---|
| 35 | #define HNDL_ENHMETAFILE 0x0B
|
---|
| 36 | #define HNDL_MEMDC 0x0C
|
---|
| 37 | #define HNDL_EXTPEN 0x0D
|
---|
| 38 | #define HNDL_ENHMETADC 0x0E
|
---|
| 39 | #define HNDL_MENU 0x0F
|
---|
| 40 | #define HNDL_ACCEL 0x10
|
---|
| 41 | #define HNDL_CURSORICON 0x11
|
---|
| 42 | #define HNDL_DDELP 0x12
|
---|
| 43 |
|
---|
| 44 | #define HNDL_MAX 0x12
|
---|
| 45 | #define HNDL_INVALID 0xFE
|
---|
| 46 | #define HNDL_ANY 0xFF
|
---|
| 47 |
|
---|
| 48 | //...
|
---|
| 49 |
|
---|
| 50 | typedef ULONG OBJHANDLE;
|
---|
| 51 |
|
---|
| 52 | BOOL WIN32API ObjAllocateHandle(OBJHANDLE *hObject, ULONG dwUserData, ULONG dwType);
|
---|
| 53 | BOOL WIN32API ObjDeleteHandle(OBJHANDLE hObject, ULONG dwType);
|
---|
| 54 | ULONG WIN32API ObjQueryHandleData(OBJHANDLE hObject, ULONG dwType);
|
---|
| 55 | BOOL WIN32API ObjSetHandleData(OBJHANDLE hObject, ULONG dwType, ULONG dwUserData);
|
---|
| 56 | ULONG WIN32API ObjQueryHandleGDI32Data(OBJHANDLE hObject, ULONG dwType);
|
---|
| 57 | BOOL WIN32API ObjSetHandleGDI32Data(OBJHANDLE hObject, ULONG dwType, ULONG dwGDI32Data);
|
---|
| 58 | ULONG WIN32API ObjQueryHandleType(OBJHANDLE hObject);
|
---|
| 59 | ULONG WIN32API ObjQueryHandleFlags(OBJHANDLE hObject);
|
---|
| 60 | BOOL WIN32API ObjSetHandleFlag(OBJHANDLE hObject, ULONG dwFlag, BOOL fSet);
|
---|
| 61 |
|
---|
| 62 | #define ObjWinToOS2Region(a) ObjQueryHandleData(a, HNDL_REGION)
|
---|
| 63 |
|
---|
| 64 | #else
|
---|
[4768] | 65 | #define MAX_OBJECT_HANDLES 1024
|
---|
[4754] | 66 | #define OBJHANDLE_MAGIC_MASK 0x00FFFFFF
|
---|
[4768] | 67 | #define HANDLE_OBJ_ERROR -1
|
---|
[3707] | 68 |
|
---|
| 69 | typedef enum {
|
---|
[4754] | 70 | GDIOBJ_NONE = 0x00,
|
---|
[3707] | 71 | GDIOBJ_REGION = 0xD1,
|
---|
| 72 | GDIOBJ_BITMAP = 0xD2,
|
---|
[4754] | 73 | GDIOBJ_BRUSH = 0xD3,
|
---|
| 74 | GDIOBJ_PALETTE = 0xD4,
|
---|
[3707] | 75 | GDIOBJ_FONT = 0xD5,
|
---|
[4754] | 76 | USEROBJ_MENU = 0xD6,
|
---|
[4768] | 77 | USEROBJ_ACCEL = 0xD7,
|
---|
[6181] | 78 | USEROBJ_CURSORICON = 0xD8,
|
---|
[6261] | 79 | GDIOBJ_OPEN32 = 0xE0,
|
---|
| 80 | GDIOBJ_INVALID = 0xFF
|
---|
[4754] | 81 | //...
|
---|
[3707] | 82 | } ObjectType;
|
---|
| 83 |
|
---|
[4754] | 84 | #define MAKE_HANDLE(a) (a << 24)
|
---|
[4766] | 85 | #define OBJHANDLE_MAGIC(a) (a >> 24)
|
---|
| 86 |
|
---|
[3707] | 87 | //...
|
---|
| 88 |
|
---|
[6758] | 89 | BOOL WIN32API ObjAllocateHandle(HANDLE *hObject, DWORD dwUserData, ObjectType type);
|
---|
| 90 | void WIN32API ObjFreeHandle(HANDLE hObject);
|
---|
| 91 | DWORD WIN32API ObjGetHandleData(HANDLE hObject, ObjectType type);
|
---|
[3707] | 92 |
|
---|
[4754] | 93 | #define ObjWinToOS2Region(a) ObjGetHandleData(a, GDIOBJ_REGION)
|
---|
[3707] | 94 |
|
---|
[6758] | 95 | ObjectType WIN32API ObjGetHandleType(HANDLE hObject);
|
---|
[3707] | 96 |
|
---|
[8831] | 97 | #endif
|
---|
[3707] | 98 | #endif //__OBJHANDLE_H__
|
---|