| 1 | /* $Id: winres.h,v 1.11 1999-10-26 11:16:14 sandervl Exp $ */
 | 
|---|
| 2 | 
 | 
|---|
| 3 | /*
 | 
|---|
| 4 |  * Win32 resource class
 | 
|---|
| 5 |  *
 | 
|---|
| 6 |  * Copyright 1998 Sander van Leeuwen (sandervl@xs4all.nl)
 | 
|---|
| 7 |  *
 | 
|---|
| 8 |  *
 | 
|---|
| 9 |  * Project Odin Software License can be found in LICENSE.TXT
 | 
|---|
| 10 |  *
 | 
|---|
| 11 |  */
 | 
|---|
| 12 | #ifndef __WINRES_H__
 | 
|---|
| 13 | #define __WINRES_H__
 | 
|---|
| 14 | 
 | 
|---|
| 15 | class Win32ImageBase;
 | 
|---|
| 16 | 
 | 
|---|
| 17 | //Use to distinguish between converted OS/2 resources in an image (pe2lx'ed) or
 | 
|---|
| 18 | //resources that are loaded from the original win32 image (pe loader)
 | 
|---|
| 19 | #define RSRC_PELOADER        0
 | 
|---|
| 20 | #define RSRC_PE2LX           1
 | 
|---|
| 21 | #define RSRC_CUSTOMNODATA    2  //resources created in runtime without data (i.e. CreateMenu)
 | 
|---|
| 22 | #define RSRC_CUSTOMINDIRECT  3  //resources indirectly created in runtime (i.e. CreateMenuIndirect)
 | 
|---|
| 23 | 
 | 
|---|
| 24 | class Win32Resource
 | 
|---|
| 25 | {
 | 
|---|
| 26 | public:
 | 
|---|
| 27 |                    // Constructors and destructors
 | 
|---|
| 28 |                    Win32Resource(); //custum resource (i.e. created by app in runtime)
 | 
|---|
| 29 |                    Win32Resource(Win32ImageBase *module, ULONG id, ULONG type,
 | 
|---|
| 30 |                                  ULONG size, char *resdata);
 | 
|---|
| 31 |     virtual       ~Win32Resource();
 | 
|---|
| 32 | 
 | 
|---|
| 33 |     virtual  PVOID lockResource();      //get original win32 resource
 | 
|---|
| 34 |     virtual  PVOID lockOS2Resource();   //get converted OS/2 resource
 | 
|---|
| 35 | 
 | 
|---|
| 36 |              //return size of original win32 resource
 | 
|---|
| 37 |              ULONG getSize()            { return ressize; };
 | 
|---|
| 38 |              //return size of converted win32 resource
 | 
|---|
| 39 |              ULONG getOS2Size();
 | 
|---|
| 40 | 
 | 
|---|
| 41 |              ULONG getOS2Handle()               { return OS2ResHandle; };
 | 
|---|
| 42 |               void setOS2Handle(ULONG handle)   { OS2ResHandle = handle; };
 | 
|---|
| 43 | 
 | 
|---|
| 44 |     static    void destroyAll(Win32ImageBase *module);
 | 
|---|
| 45 | 
 | 
|---|
| 46 | protected:
 | 
|---|
| 47 | 
 | 
|---|
| 48 |              PVOID convertResource(void *win32res);
 | 
|---|
| 49 | 
 | 
|---|
| 50 |     Win32ImageBase *module;
 | 
|---|
| 51 | 
 | 
|---|
| 52 |              HRSRC hres;
 | 
|---|
| 53 |              ULONG type;
 | 
|---|
| 54 |              ULONG id;
 | 
|---|
| 55 | 
 | 
|---|
| 56 |              PVOID os2resdata;
 | 
|---|
| 57 |              PVOID winresdata;
 | 
|---|
| 58 | 
 | 
|---|
| 59 |              ULONG OS2ResHandle;
 | 
|---|
| 60 | 
 | 
|---|
| 61 |              ULONG ressize;
 | 
|---|
| 62 |                int resType;
 | 
|---|
| 63 | 
 | 
|---|
| 64 |              BOOL  isUnicode;
 | 
|---|
| 65 | 
 | 
|---|
| 66 |                                // Linked list management
 | 
|---|
| 67 |   Win32Resource*   next;               // Next Resource in module
 | 
|---|
| 68 | 
 | 
|---|
| 69 | private:
 | 
|---|
| 70 |     friend    class Win32ImageBase;
 | 
|---|
| 71 | };
 | 
|---|
| 72 | 
 | 
|---|
| 73 | 
 | 
|---|
| 74 |     #define    NTRT_NEWRESOURCE      0x2000
 | 
|---|
| 75 |     #define    NTRT_ERROR            0x7fff
 | 
|---|
| 76 |     #define    NTRT_CURSOR           1
 | 
|---|
| 77 |     #define    NTRT_BITMAP           2
 | 
|---|
| 78 |     #define    NTRT_ICON             3
 | 
|---|
| 79 |     #define    NTRT_MENU             4
 | 
|---|
| 80 |     #define    NTRT_DIALOG           5
 | 
|---|
| 81 |     #define    NTRT_STRING           6
 | 
|---|
| 82 |     #define    NTRT_FONTDIR          7
 | 
|---|
| 83 |     #define    NTRT_FONT             8
 | 
|---|
| 84 |     #define    NTRT_ACCELERATORS     9
 | 
|---|
| 85 |     #define    NTRT_RCDATA           10
 | 
|---|
| 86 |     #define    NTRT_MESSAGETABLE     11
 | 
|---|
| 87 |     #define    NTRT_GROUP_CURSOR     12
 | 
|---|
| 88 |     #define    NTRT_GROUP_ICON       14
 | 
|---|
| 89 |     #define    NTRT_VERSION          16
 | 
|---|
| 90 |     #define    NTRT_NEWBITMAP        (NTRT_BITMAP|NTRT_NEWRESOURCE)
 | 
|---|
| 91 |     #define    NTRT_NEWMENU          (NTRT_MENU|NTRT_NEWRESOURCE)
 | 
|---|
| 92 |     #define    NTRT_NEWDIALOG        (NTRT_DIALOG|NTRT_NEWRESOURCE)
 | 
|---|
| 93 | 
 | 
|---|
| 94 | 
 | 
|---|
| 95 | #define MAX_RES 17
 | 
|---|
| 96 | extern char *ResTypes[MAX_RES];
 | 
|---|
| 97 | 
 | 
|---|
| 98 | #endif
 | 
|---|