Annotation of mstools/samples/sdktools/dlgedit/dlgedit.h, revision 1.1.1.1

1.1       root        1: 
                      2: /******************************************************************************\
                      3: *       This is a part of the Microsoft Source Code Samples. 
                      4: *       Copyright (C) 1993 Microsoft Corporation.
                      5: *       All rights reserved. 
                      6: *       This source code is only intended as a supplement to 
                      7: *       Microsoft Development Tools and/or WinHelp documentation.
                      8: *       See these sources for detailed information regarding the 
                      9: *       Microsoft samples programs.
                     10: \******************************************************************************/
                     11: 
                     12: /****************************** Module Header *******************************
                     13: * Module Name: dlgedit.h
                     14: *
                     15: * Main header file for the dialog box editor.
                     16: *
                     17: ****************************************************************************/
                     18: 
                     19: #define NOMINMAX
                     20: #include <windows.h>
                     21: #include <custcntl.h>
                     22: #include <setjmp.h>
                     23: #include "ids.h"
                     24: 
                     25: 
                     26: /*
                     27:  * For unicode support.
                     28:  */
                     29: LPWSTR itoaw(INT value, LPWSTR string, INT radix);
                     30: INT awtoi(LPWSTR string);
                     31: 
                     32: /* 
                     33:  * temporary define
                     34:  */
                     35: #define BS_PUSHBOX 0x0AL
                     36: 
                     37: 
                     38: #define STATICFN        static
                     39: 
                     40: #define WINDOWPROC      LONG APIENTRY
                     41: #define DIALOGPROC      BOOL APIENTRY
                     42: 
                     43: typedef HWND FAR *LPHWND;
                     44: 
                     45: /*
                     46:  * Used to create a window of "DIALOG" class.
                     47:  */
                     48: #define DIALOGCLASS     0x8002
                     49: 
                     50: #define ORDID_RT_RESOURCE32     0x00    // Aligned res file dummy resource.
                     51: #define ORDID_RT_DIALOG         0x05    // Dialog resource type.
                     52: #define ORDID_RT_DLGINCLUDE     0x11    // Dialog include file resource type.
                     53: 
                     54: 
                     55: /*
                     56:  * The ordinal for the name of the DLGINCLUDE resource.
                     57:  */
                     58: #define ORDID_DLGINCLUDE_NAME   1
                     59: 
                     60: 
                     61: /*
                     62:  * Macro to pack a point into a long value.
                     63:  */
                     64: #define POINT2LONG(pt, l)   (l = MAKELONG(LOWORD((pt).x), LOWORD((pt).y)))
                     65: 
                     66: 
                     67: /*
                     68:  * Macros to simplify working with menus.
                     69:  */
                     70: #define MyEnableMenuItem(hMenu, wIDEnableItem, fEnable) \
                     71:     EnableMenuItem((hMenu),(wIDEnableItem),(fEnable)?MF_ENABLED:MF_GRAYED)
                     72: 
                     73: #define MyEnableMenuItemByPos(hMenu, wPosEnableItem, fEnable) \
                     74:     EnableMenuItem((hMenu),(wPosEnableItem),(fEnable)? \
                     75:     MF_ENABLED | MF_BYPOSITION:MF_GRAYED | MF_BYPOSITION)
                     76: 
                     77: #define MyCheckMenuItem(hMenu, wIDCheckItem, fCheck) \
                     78:     CheckMenuItem((hMenu),(wIDCheckItem),(fCheck)?MF_CHECKED:MF_UNCHECKED)
                     79: 
                     80: /*
                     81:  * This macro returns TRUE if the given string is an ordinal.
                     82:  */
                     83: #define IsOrd(psz)      (((PORDINAL)(psz))->wReserved == \
                     84:                         (WORD)0xffff ? TRUE : FALSE)
                     85: 
                     86: /*
                     87:  * This macro returns the ordinal id in the specified name/ord field.
                     88:  */
                     89: #define OrdID(psz)      (((PORDINAL)(psz))->wOrdID)
                     90: 
                     91: 
                     92: /*
                     93:  * Integer property values.
                     94:  */
                     95: #define PROP_FNCHILD        MAKEINTRESOURCE(0x3345)
                     96: 
                     97: /*
                     98:  * Macro to set/remove an NPCTYPE pointer into a control or dialog hwnd.
                     99:  */
                    100: #define SETPCINTOHWND(hwnd, npc) \
                    101:     SetWindowLong((hwnd), GWL_USERDATA, (DWORD)(npc))
                    102: 
                    103: #define UNSETPCINTOHWND(hwnd)   (hwnd)
                    104: 
                    105: /*
                    106:  * Macro to extract an NPCTYPE from a control or dialog hwnd.
                    107:  */
                    108: #define PCFROMHWND(hwnd)    ((NPCTYPE)GetWindowLong(hwnd, GWL_USERDATA))
                    109: 
                    110: /*
                    111:  * Macros to set and retrieve the original window proc from
                    112:  * a child window that has been subclassed by the editor.
                    113:  */
                    114: #define SETCHILDPROC(hwnd, lpfn) SetProp((hwnd), PROP_FNCHILD, (HANDLE)(lpfn))
                    115: #define GETCHILDPROC(hwnd)      ((WNDPROC)GetProp((hwnd), PROP_FNCHILD))
                    116: #define UNSETCHILDPROC(hwnd)    RemoveProp((hwnd), PROP_FNCHILD)
                    117: 
                    118: 
                    119: /*
                    120:  * Used to indicate an "impossible" file position (offset).
                    121:  */
                    122: #define FPOS_MAX                ((DWORD)(-1L))
                    123: 
                    124: 
                    125: /*
                    126:  * Special flag I place in the resource that goes into the clipboard
                    127:  * that means that only the controls in the dialog template in the
                    128:  * clipboard are to be copied, not the entire dialog.  Because this
                    129:  * value is placed into the cx field of the dialog template, it can
                    130:  * only be a WORD in size.  I use 0xffff (-1) because this would be
                    131:  * an impossible value for the width of a dialog.
                    132:  */
                    133: #define CONTROLS_ONLY           ((WORD)0xffff)
                    134: 
                    135: 
                    136: /*
                    137:  * Some colors used in the editor.
                    138:  */
                    139: #define LIGHTGRAY               RGB(192, 192, 192)
                    140: #define DARKGRAY                RGB(128, 128, 128)
                    141: #define REPLACECOLOR1           RGB(255, 255, 255)      // White
                    142: #define REPLACECOLOR2           RGB(0, 0, 0)            // Black
                    143: 
                    144: /*
                    145:  * Maximum size of a file name plus path specification.
                    146:  */
                    147: #define CCHMAXPATH              260
                    148: 
                    149: /*
                    150:  * Maximum length of a long hex value ("0x" + 8 digits) not counting the null.
                    151:  */
                    152: #define CCHHEXLONGMAX           10
                    153: 
                    154: /*
                    155:  * Maximum number of characters in an ID not counting the null character.
                    156:  * This allows room for "0xFFFF" or "-32768".
                    157:  */
                    158: #define CCHIDMAX                6
                    159: 
                    160: /*
                    161:  * Width and height of a handle in pixels.
                    162:  */
                    163: #define CHANDLESIZE             6
                    164: 
                    165: /*
                    166:  * Height in DU's of the edit field of a combobox.
                    167:  */
                    168: #define COMBOEDITHEIGHT         12
                    169: 
                    170: 
                    171: /*
                    172:  * Character constants.
                    173:  */
                    174: #define CHAR_NULL               L'\0'
                    175: #define CHAR_TAB                L'\t'
                    176: #define CHAR_NEWLINE            L'\n'
                    177: #define CHAR_RETURN             L'\r'
                    178: #define CHAR_BACKSLASH          L'\\'
                    179: #define CHAR_COLON              L':'
                    180: #define CHAR_DOT                L'.'
                    181: #define CHAR_UNDERLINE          L'_'
                    182: #define CHAR_ASTERISK           L'*'
                    183: #define CHAR_SLASH              L'/'
                    184: #define CHAR_POUND              L'#'
                    185: #define CHAR_ORSYMBOL           L'|'
                    186: #define CHAR_COMMA              L','
                    187: #define CHAR_SPACE              L' '
                    188: #define CHAR_DBLQUOTE           L'"'
                    189: #define CHAR_MINUS              L'-'
                    190: #define CHAR_PLUS               L'+'
                    191: #define CHAR_0                  L'0'
                    192: #define CHAR_A                  L'a'
                    193: #define CHAR_CAP_A              L'A'
                    194: #define CHAR_F                  L'f'
                    195: #define CHAR_CAP_F              L'F'
                    196: #define CHAR_X                  L'x'
                    197: #define CHAR_CAP_X              L'X'
                    198: #define CHAR_Z                  L'z'
                    199: #define CHAR_CAP_Z              L'Z'
                    200: #define CHAR_DOSEOF             L'\x1a'
                    201: 
                    202: 
                    203: /*
                    204:  * Defines for the different drag handles.
                    205:  */
                    206: #define DRAG_CENTER             (-1)
                    207: #define DRAG_LEFTBOTTOM         0
                    208: #define DRAG_BOTTOM             1
                    209: #define DRAG_RIGHTBOTTOM        2
                    210: #define DRAG_RIGHT              3
                    211: #define DRAG_RIGHTTOP           4
                    212: #define DRAG_TOP                5
                    213: #define DRAG_LEFTTOP            6
                    214: #define DRAG_LEFT               7
                    215: 
                    216: /*
                    217:  * Count of lines to insert into listbox and combobox controls during
                    218:  * test mode.
                    219:  */
                    220: #define CLBTESTLINES            25
                    221: 
                    222: #define CCHTEXTMAX              256
                    223: #define CCHFILEBUFFER           256
                    224: 
                    225: /*
                    226:  * Timer ID for the pre-drag timer.
                    227:  */
                    228: #define TID_PREDRAG             5
                    229: 
                    230: /*
                    231:  * The id of the "unused" item.  This is the id value for controls
                    232:  * that the user creates where they do not care about the value
                    233:  * of the id because it will not be referenced in their code.
                    234:  */
                    235: #define IDUNUSED                (-1)
                    236: 
                    237: /*
                    238:  * Defines for the NextID() function.
                    239:  */
                    240: #define NEXTID_DIALOG           0           /* ID for a new dialog.         */
                    241: #define NEXTID_CONTROL          1           /* ID for a new control.        */
                    242: #define NEXTID_LABEL            2           /* ID for a new label.          */
                    243: 
                    244: /*
                    245:  * Flags for the GridizeRect function.  They specify which points in
                    246:  * the rectangle to apply gridding to.
                    247:  */
                    248: #define GRIDIZE_LEFT            0x0001      // Gridize the left edge.
                    249: #define GRIDIZE_BOTTOM          0x0002      // Gridize the bottom edge.
                    250: #define GRIDIZE_RIGHT           0x0004      // Gridize the right edge.
                    251: #define GRIDIZE_TOP             0x0008      // Gridize the top edge.
                    252: #define GRIDIZE_SAMESIZE        0x0010      // Don't change cx or cy.
                    253: 
                    254: /*
                    255:  * Default spacing constants.
                    256:  */
                    257: #define DEFCXGRID               1           // X grid.
                    258: #define DEFCYGRID               1           // Y grid.
                    259: #define DEFXMARGIN              6           // Top/bottom margin.
                    260: #define DEFYMARGIN              6           // Left/right margin.
                    261: #define DEFXMINPUSHSPACE        3           // Min. horizontal button spacing.
                    262: #define DEFXMAXPUSHSPACE        16          // Max. horizontal button spacing.
                    263: #define DEFYPUSHSPACE           3           // Vertical button spacing.
                    264: #define DEFXSPACE               6           // Horizontal control spacing.
                    265: #define DEFYSPACE               0           // Vertical control spacing.
                    266: 
                    267: #define IC_UNKNOWN              (-1)
                    268: #define IC_BUTTON               0
                    269: #define IC_SCROLLBAR            1
                    270: #define IC_EDIT                 2
                    271: #define IC_STATIC               3
                    272: #define IC_LISTBOX              4
                    273: #define IC_COMBOBOX             5
                    274: #define IC_CUSTOM               6
                    275: #define IC_DIALOG               7
                    276: #define IC_WINDOW               8
                    277: #define IC_RESFLAGS             9
                    278: #define IC_EXSTYLE              10
                    279: 
                    280: #define MSG_DELETEDIALOG        0
                    281: #define MSG_OUTOFMEMORY         1
                    282: #define MSG_CANTCREATE          2
                    283: #define MSG_SYMNOCHANGE         3
                    284: #define MSG_IDSYMMISMATCH       4
                    285: #define MSG_CLOSING             5
                    286: #define MSG_BADRESFILE          6
                    287: #define MSG_INCLCLOSING         7
                    288: #define MSG_SYMEXISTS           8
                    289: #define MSG_BADSYMBOLID         9
                    290: #define MSG_LABELDUPID          10
                    291: #define MSG_SELECTFIRST         11
                    292: #define MSG_CTRLDUPID           12
                    293: #define MSG_BADCUSTDLL          13
                    294: #define MSG_NOCLIP              14
                    295: #define MSG_INTERNAL            15
                    296: #define MSG_NOMOUSE             16
                    297: #define MSG_NOINIT              17
                    298: #define MSG_GTZERO              18
                    299: #define MSG_ICONNAMEHASBLANKS   19
                    300: #define MSG_IDUPIDS             20
                    301: #define MSG_CREATECTRLERROR     21
                    302: #define MSG_CANTOPENRES         22
                    303: #define MSG_CONFIRMDISCARD      23
                    304: #define MSG_SYMNOTFOUND         24
                    305: #define MSG_NOCLASS             25
                    306: #define MSG_POSITIVENUM         26
                    307: #define MSG_MEMERROR            27
                    308: #define MSG_DLGNAMEHASBLANKS    28
                    309: #define MSG_NODLGNAME           29
                    310: #define MSG_CANTINITDLL         30
                    311: #define MSG_NOICONNAME          31
                    312: #define MSG_RESTOREDIALOG       32
                    313: #define MSG_ZEROPOINTSIZE       33
                    314: #define MSG_MINGTMAXSPACE       34
                    315: #define MSG_CUSTCNTLINUSE       35
                    316: #define MSG_CUSTALREADYLOADED   36
                    317: #define MSG_CANTLOADDLL         37
                    318: #define MSG_DLLBADEXPORTS       38
                    319: #define MSG_DLLBADCOUNT         39
                    320: 
                    321: /*
                    322:  * The following defines are used as masks in the styles arrays.
                    323:  * They each define a set of bits, all of which have to be set
                    324:  * properly for any of the individual styles to be considered
                    325:  * to be a match.  They are used for groups of styles that do
                    326:  * not have a single bit set.  In other words, these styles
                    327:  * depend on having some bits OFF, as well as other bits ON.
                    328:  */
                    329: #define BS_ALL          (BS_PUSHBUTTON | BS_DEFPUSHBUTTON | BS_CHECKBOX | \
                    330:                         BS_AUTOCHECKBOX | BS_RADIOBUTTON | BS_3STATE | \
                    331:                         BS_AUTO3STATE | BS_GROUPBOX | BS_USERBUTTON | \
                    332:                         BS_AUTORADIOBUTTON | BS_PUSHBOX | BS_OWNERDRAW)
                    333: #define SS_ALL          (SS_LEFT | SS_CENTER | SS_RIGHT | SS_ICON | \
                    334:                         SS_BLACKRECT | SS_GRAYRECT | SS_WHITERECT | \
                    335:                         SS_BLACKFRAME | SS_GRAYFRAME | SS_WHITEFRAME | \
                    336:                         SS_USERITEM | SS_SIMPLE | SS_LEFTNOWORDWRAP)
                    337: #define CBS_ALL         (CBS_SIMPLE | CBS_DROPDOWN | CBS_DROPDOWNLIST)
                    338: #define SBS_ALL         (SBS_HORZ | SBS_VERT)
                    339: #define ES_ALIGN        (ES_LEFT | ES_CENTER | ES_RIGHT)
                    340: #define WS_CAPTIONALL   (WS_CAPTION | WS_BORDER | WS_DLGFRAME)
                    341: 
                    342: /*
                    343:  * Possible values for gState, which tells us about special modes
                    344:  * (states) the editor is in.
                    345:  */
                    346: #define STATE_NORMAL        0   // Normal state.
                    347: #define STATE_DRAGGINGNEW   1   // Dragging a new control from the toolbox.
                    348: #define STATE_DRAGGING      2   // Dragging an existing control.
                    349: #define STATE_SELECTING     3   // Outline selecting is in progress.
                    350: #define STATE_PREDRAG       4   // During debounce period before dragging.
                    351: 
                    352: /*
                    353:  * Control type (W_*) constants.  These are used as indexes into the
                    354:  * awcd structure that describes each type of class.
                    355:  */
                    356: #define W_NOTHING           (-1)
                    357: 
                    358: #define W_TEXT              0
                    359: #define W_EDIT              1
                    360: #define W_GROUPBOX          2
                    361: #define W_PUSHBUTTON        3
                    362: #define W_CHECKBOX          4
                    363: #define W_RADIOBUTTON       5
                    364: #define W_COMBOBOX          6
                    365: #define W_LISTBOX           7
                    366: #define W_HORZSCROLL        8
                    367: #define W_VERTSCROLL        9
                    368: #define W_FRAME             10
                    369: #define W_RECT              11
                    370: #define W_ICON              12
                    371: #define W_CUSTOM            13
                    372: 
                    373: #define W_DIALOG            14
                    374: 
                    375: /*
                    376:  * Number of control types.  Note that this does NOT count the
                    377:  * "W_DIALOG" type, only actual controls like "W_CHECKBOX", etc.
                    378:  */
                    379: #define CCONTROLS           14
                    380: 
                    381: /*
                    382:  * The following defines have the location (by zero based position)
                    383:  * of popup menu items.  If the menu arrangement is changed in the
                    384:  * .RC file, these defines MUST be updated!
                    385:  */
                    386: #define MENUPOS_FILE            0
                    387: #define MENUPOS_EDIT            1
                    388: #define MENUPOS_ARRANGE         2
                    389: #define MENUPOS_ARRANGEALIGN        0
                    390: #define MENUPOS_ARRANGESPACE        1
                    391: #define MENUPOS_ARRANGESIZE         2
                    392: #define MENUPOS_ARRANGEPUSH         3
                    393: 
                    394: 
                    395: /*
                    396:  * Resource memory management flags.
                    397:  */
                    398: #define MMF_MOVEABLE            0x0010
                    399: #define MMF_PURE                0x0020
                    400: #define MMF_PRELOAD             0x0040
                    401: #define MMF_DISCARDABLE         0x1000
                    402: 
                    403: #define DEFDLGMEMFLAGS          (MMF_MOVEABLE | MMF_PURE | MMF_DISCARDABLE)
                    404: 
                    405: /*
                    406:  * Default location of a new dialog.
                    407:  */
                    408: #define DEFDIALOGXPOS   6
                    409: #define DEFDIALOGYPOS   18
                    410: 
                    411: /*
                    412:  * Default point size for a new dialog's font.  The default face name
                    413:  * is in the string IDS_DEFFONTNAME.
                    414:  */
                    415: #define DEFPOINTSIZE    8
                    416: 
                    417: 
                    418: #define FILE_NOSHOW             0x0001  /* Save without prompting for name  */
                    419: #define FILE_INCLUDE            0x0002  /* Save/load include file           */
                    420: #define FILE_RESOURCE           0x0004  /* Save/load resource file          */
                    421: #define FILE_SAVEAS             0x0008  /* Save as (prompt for file name).  */
                    422: #define FILE_DLL                0x0010  /* A custom control DLL file.       */
                    423: 
                    424: 
                    425: /*
                    426:  * Special case ordinal id values for the predefined control classes.
                    427:  */
                    428: #define ORDID_BUTTONCLASS           0x80
                    429: #define ORDID_EDITCLASS             0x81
                    430: #define ORDID_STATICCLASS           0x82
                    431: #define ORDID_LISTBOXCLASS          0x83
                    432: #define ORDID_SCROLLBARCLASS        0x84
                    433: #define ORDID_COMBOBOXCLASS         0x85
                    434: 
                    435: /*
                    436:  * This structure is used to link resources.
                    437:  */
                    438: typedef struct tagRESLINK {
                    439:     struct tagRESLINK *prlNext;     /* Next in list.                        */
                    440:     BOOL fDlgResource;              /* TRUE if this is a dialog resource.   */
                    441:     INT cbRes;                      /* Size of the resource.                */
                    442:     HANDLE hRes;                    /* Handle to global memory with the res.*/
                    443:     LPTSTR pszName;                 /* Name/ord of the resource (if dialog).*/
                    444:     WORD wLanguage;                 /* Language identifier (if dialog).     */
                    445: } RESLINK, *PRESLINK;
                    446: 
                    447: /*
                    448:  * Describes a window class.
                    449:  *
                    450:  * The flStyles field is the default styles that this control type will have
                    451:  * when first created.  The flStylesBad field is the styles that can cause
                    452:  * problems when manipulating the control in work mode, such as *_OWNERDRAW
                    453:  * and so forth.  Controls with this style can be created with the editor
                    454:  * and will be saved as such in the .DLG file, but the actual control created
                    455:  * in work mode will not have any of these styles.
                    456:  */
                    457: typedef struct {
                    458:     INT iType;              /* Control type index, one of the W_ constants. */
                    459:     DWORD flStyles;         /* Default control styles for this window class.*/
                    460:     DWORD flStylesBad;      /* Styles NOT to use when creating this control.*/
                    461:     DWORD flStylesTestBad;  /* Styles NOT to use in Test mode.              */
                    462:     DWORD flExtStyle;       /* Default extended styles.                     */
                    463:     INT cxDefault;          /* Default x size for this control.             */
                    464:     INT cyDefault;          /* Default y size for this control.             */
                    465:     INT iClass;             /* Index to the IC_ class for this window class.*/
                    466:     LPTSTR pszClass;        /* Class name (for custom controls).            */
                    467:     UINT fEmulated:1;       /* TRUE if this is an emulated custom control.  */
                    468:     UINT fUnicodeDLL:1;     /* TRUE if the DLL functions are UNICODE.       */
                    469:     UINT fHasText:1;        /* TRUE if this control type can have text.     */
                    470:     UINT fSizeable:1;       /* TRUE if the control can be sized.            */
                    471:     UINT fSizeToText:1;     /* TRUE if the control can be sized to its text.*/
                    472:     INT idStylesDialog;     /* Styles dialog id for this window class.      */
                    473:     WNDPROC pfnStylesDlgProc; /* Styles dialog procedure.                   */
                    474:     INT HelpContext;        /* Help context ID for the styles dialog.       */
                    475:     UINT idsTextDefault;    /* String id of default text.                   */
                    476:     LPTSTR pszTextDefault;  /* Default text for a new control of this type. */
                    477:     WNDPROC pfnOldWndProc;  /* Saves the old window proc when subclassing.  */
                    478:     INT idbmCtrlType;       /* ID of the bitmap res. for this control type. */
                    479:     HBITMAP hbmCtrlType;    /* Handle of the bitmap for this control type.  */
                    480:     HBITMAP hbmCtrlTypeSel; /* The selected version of the above.           */
                    481:     INT idbmToolBtnUp;      /* ID of "up" bmp res. for the Toolbox button.  */
                    482:     HBITMAP hbmToolBtnUp;   /* hbm of "up" bitmap for the Toolbox button.   */
                    483:     INT idbmToolBtnDown;    /* ID of "down" bmp res. for the Toolbox button.*/
                    484:     HBITMAP hbmToolBtnDown; /* hbm of "down" bitmap for the Toolbox button. */
                    485:     HANDLE hmod;            /* Custom control DLL module handle.            */
                    486:     INT cStyleFlags;        /* Count of custom control style flags.         */
                    487:     LPCCSTYLEFLAG aStyleFlags; /* Ptr to custom control style flag table.   */
                    488:     PROC lpfnStyle;         /* Custom control Style function.               */
                    489:     PROC lpfnSizeToText;    /* Custom control SizeToText function.          */
                    490:     DWORD flCtrlTypeMask;   /* Mask for custom control type styles.         */
                    491: } WINDOWCLASSDESC;
                    492: typedef WINDOWCLASSDESC *PWINDOWCLASSDESC;
                    493: 
                    494: typedef struct tagCTYPE {
                    495:     struct tagCTYPE *npcNext;   /* Next CTYPE in linked list.               */
                    496:     PWINDOWCLASSDESC pwcd;      /* Points to the window class desc. struct. */
                    497:     HWND hwnd;                  /* Handle of control window.                */
                    498:     HWND hwndDrag;              /* Handle of the drag window for this ctrl. */
                    499:     DWORD flStyle;              /* Control style.                           */
                    500:     DWORD flExtStyle;           /* Control extended style.                  */
                    501:     INT id;                     /* Control window id.                       */
                    502:     LPTSTR text;                /* Text for control window.                 */
                    503:     RECT rc;                    /* Location and size of the control.        */
                    504:     UINT fSelected:1;           /* TRUE if the control is selected.         */
                    505:     UINT fGroupEnd:1;           /* TRUE if ctrl is the last one in a group. */
                    506: } CTYPE;
                    507: typedef CTYPE *NPCTYPE;
                    508: 
                    509: typedef struct tagLABEL {
                    510:     struct tagLABEL *npNext;    /* pointer to next in the list              */
                    511:     LPTSTR pszLabel;            /* Name of the symbol                       */
                    512:     INT id;                     /* ID value for this label                  */
                    513:     INT idOrig;                 /* Original ID value for this label         */
                    514:     DWORD fpos;                 /* File pointer to "#define" in include file*/
                    515:     INT nValueOffset;           /* Offset to id value start from fpos       */
                    516: } LABEL;
                    517: typedef LABEL *NPLABEL;
                    518: 
                    519: /*
                    520:  * Structure that is used to link together a list of custom controls.
                    521:  * Each link points to an associated WINDOWCLASSDESC structure that
                    522:  * defines the custom control type in detail.
                    523:  */
                    524: typedef struct tagCUSTLINK {
                    525:     struct tagCUSTLINK *pclNext;/* Next CUSTLINK in linked list.            */
                    526:     LPTSTR pszFileName;         /* Full path to DLL file (NULL if emulated).*/
                    527:     LPTSTR pszDesc;             /* Short, descriptive text for the control. */
                    528:     PWINDOWCLASSDESC pwcd;      /* Points to the window class desc. struct. */
                    529: } CUSTLINK, *PCUSTLINK;
                    530: 
                    531: typedef struct {
                    532:     UINT ids;                   /* String id for the message text.          */
                    533:     UINT fMessageBox;           /* Flags for the MessageBox function.       */
                    534: } MESSAGEDATA;
                    535: 
                    536: /*
                    537:  * Class Style structure.  Specifies the style bits that describe
                    538:  * each style, along with a mask that specifies the bits to compare
                    539:  * when looking for this style.  The mask is necessary when more than
                    540:  * one bit specifies a style.  For example, look at the BS_* styles,
                    541:  * which currently use the low 3 bits of the style flag to specify
                    542:  * eight different styles.  The idControl field is the checkbox or
                    543:  * radio button control id in the styles dialogs that corresponds to
                    544:  * this particular style, or zero if it is not settable by the user.
                    545:  */
                    546: typedef struct {
                    547:     DWORD flStyle;              /* Style bits that identify this style.     */
                    548:     DWORD flStyleMask;          /* Mask with the relevant bits.             */
                    549:     INT idControl;              /* ID of the control in the styles dlg.     */
                    550: } CLASSSTYLE, *PCLASSSTYLE;
                    551: 
                    552: /*
                    553:  * RC Keyword structure.  This describes a predefined RC keyword, like
                    554:  * "RADIOBUTTON" and "LISTBOX".
                    555:  *
                    556:  * rckwd, prckwd
                    557:  */
                    558: typedef struct {
                    559:     DWORD flStyle;              /* Style that identifies this keyword.      */
                    560:     DWORD flStyleMask;          /* Mask with the relevant bits.             */
                    561:     DWORD flStyleDefault;       /* Other style bits implicitly defined.     */
                    562:     UINT idsKeyword;            /* The RC keyword.                          */
                    563:     BOOL fHasText;              /* TRUE if this keywd has a text field.     */
                    564: } RCKEYWORD, *PRCKEYWORD;
                    565: 
                    566: /*
                    567:  * Class style description structure.  These contain information on each
                    568:  * of the IC_* constants.
                    569:  *
                    570:  * csd, pcsd
                    571:  */
                    572: typedef struct {
                    573:     UINT idsClass;              /* Class string for this class.             */
                    574:     PCLASSSTYLE pacs;           /* Pointer to class styles array.           */
                    575:     INT cClassStyles;           /* Count of class styles.                   */
                    576:     UINT idsStylesStart;        /* Starting index to style strings.         */
                    577:     PRCKEYWORD parckwd;         /* Pointer to predefined RC keywords.       */
                    578:     INT cKeywords;              /* Count of predefined RC keywords.         */
                    579:     WORD idOrd;                 /* Predefined ordinal id for this class.    */
                    580: } CLASSSTYLEDESC;
                    581: 
                    582: /*
                    583:  * One single entry for an environment setting saved in the
                    584:  * profile file.  Used by ReadEnv and WriteEnv.
                    585:  */
                    586: typedef struct _INIENTRY {
                    587:     LPTSTR pszKeyName;
                    588:     PINT pnVar;
                    589:     INT nDefault;
                    590:     INT nSave;
                    591: } INIENTRY;
                    592: 
                    593: /*
                    594:  * This structure defines additional information on the dialog being
                    595:  * edited that only pertains to dialogs, not controls.  This information
                    596:  * is therefore in a separate structure rather than the CTYPE structure.
                    597:  * Any dialog specific information that can be changed using the Dialog
                    598:  * Styles dialog must be contained in this structure.
                    599:  */
                    600: typedef struct {
                    601:     WORD fResFlags;                 /* Dialog resource memory flags.        */
                    602:     WORD wLanguage;                 /* Language identifier for the dialog.  */
                    603:     LPTSTR pszClass;                /* The dialog's class (or NULL).        */
                    604:     LPTSTR pszMenu;                 /* The dialog's menu (or NULL).         */
                    605:     DWORD DataVersion;              /* Data Version data for this dialog.   */
                    606:     DWORD Version;                  /* Version data for this dialog.        */
                    607:     DWORD Characteristics;          /* Characteristics data for this dialog.*/
                    608:     INT nPointSize;                 /* Point size of the dialog's font.     */
                    609:     TCHAR szFontName[LF_FACESIZE];  /* Face name of the dialog's font.      */
                    610: } DIALOGINFO, *PDIALOGINFO;
                    611: 
                    612: /*
                    613:  * This structure contains the globals that describe the current
                    614:  * dialog being edited.
                    615:  */
                    616: typedef struct {
                    617:     NPCTYPE npc;                    /* CTYPE structure for the dialog.      */
                    618:     LPTSTR pszDlgName;              /* Current dialog's name.               */
                    619:     PRESLINK prl;                   /* NULL or the dlg's resource link.     */
                    620:     BOOL fFontSpecified;            /* TRUE if a font is set for the dialog.*/
                    621:     HFONT hFont;                    /* Font handle of the dialog's font.    */
                    622:     INT cxChar;                     /* Pixel width of character box.        */
                    623:     INT cyChar;                     /* Pixel height of character box.       */
                    624:     DIALOGINFO di;                  /* Additional info for current dialog.  */
                    625: } CURRENTDLG;
                    626: 
                    627: /*
                    628:  * Structure that maps a subject (like a menu id or a dialog id) with
                    629:  * a help context to pass in to WinHelp.
                    630:  */
                    631: typedef struct {
                    632:     INT idSubject;                  /* Subject, usually a menu or dialog id.*/
                    633:     INT HelpContext;                /* The matching help context.           */
                    634: } HELPMAP;
                    635: typedef HELPMAP *PHELPMAP;
                    636: 
                    637: 
                    638: /*
                    639:  * The aligned ordinal structure.  Ordinals start with a word that is
                    640:  * always 0xffff, followed by a word that contains the ordinal id.
                    641:  */
                    642: typedef struct {
                    643:     WORD wReserved;
                    644:     WORD wOrdID;
                    645: } ORDINAL, *PORDINAL;
                    646: 
                    647: 
                    648: typedef struct {
                    649:     DWORD DataSize;                 // Size of data.
                    650:     DWORD HeaderSize;               // Size of the resource header.
                    651: } RES, *PRES;
                    652: 
                    653: typedef struct {
                    654:     DWORD DataVersion;              // Predefined resource data version.
                    655:     WORD MemoryFlags;               // Resource memory flags.
                    656:     WORD LanguageId;                // UNICODE support for NLS.
                    657:     DWORD Version;                  // Version of the resource data.
                    658:     DWORD Characteristics;          // Characteristics of the data.
                    659: } RES2, *PRES2;
                    660: 
                    661: 
                    662: typedef struct {
                    663:     DWORD lStyle;                   // Style for the dialog.
                    664:     DWORD lExtendedStyle;           // The extended style.
                    665:     WORD NumberOfItems;             // Number of controls.
                    666:     WORD x;                         // Starting x location.
                    667:     WORD y;                         // Starting y location.
                    668:     WORD cx;                        // Dialog width.
                    669:     WORD cy;                        // Dialog height.
                    670: } *PDIALOGBOXHEADER;
                    671: 
                    672: #define SIZEOF_DIALOGBOXHEADER  (                               \
                    673:     sizeof(DWORD) +                 /* lStyle           */      \
                    674:     sizeof(DWORD) +                 /* lExtendedStyle   */      \
                    675:     sizeof(WORD) +                  /* NumberOfItems    */      \
                    676:     sizeof(WORD) +                  /* x                */      \
                    677:     sizeof(WORD) +                  /* y                */      \
                    678:     sizeof(WORD) +                  /* cx               */      \
                    679:     sizeof(WORD)                    /* cy               */      \
                    680:     )
                    681: 
                    682: 
                    683: typedef struct {
                    684:     DWORD lStyle;                   // Style for the control.
                    685:     DWORD lExtendedStyle;           // The extended style.
                    686:     WORD x;                         // Starting x location.
                    687:     WORD y;                         // Starting y location.
                    688:     WORD cx;                        // Control width.
                    689:     WORD cy;                        // Control height.
                    690:     WORD wId;                       // Control id.
                    691: } *PCONTROLDATA;
                    692: 
                    693: #define SIZEOF_CONTROLDATA  (                                   \
                    694:     sizeof(DWORD) +                 /* lStyle           */      \
                    695:     sizeof(DWORD) +                 /* lExtendedStyle   */      \
                    696:     sizeof(WORD) +                  /* x                */      \
                    697:     sizeof(WORD) +                  /* y                */      \
                    698:     sizeof(WORD) +                  /* cx               */      \
                    699:     sizeof(WORD) +                  /* cy               */      \
                    700:     sizeof(WORD))                   /* wId              */
                    701: 
                    702: 
                    703: /*
                    704:  * SubLanguage table structure.  This structure describes each entry of a
                    705:  * sub language table.  These tables are pointed to by each entry in
                    706:  * the language table.
                    707:  */
                    708: typedef struct {
                    709:     WORD wSubLang;                  // SubLanguage value.
                    710:     INT idsSubLang;                 // String id of SUBLANG_* define.
                    711:     INT idsSubLangDesc;             // String id of sub-lang description.
                    712: } SUBLANGTABLE, *PSUBLANGTABLE;
                    713: 
                    714: /*
                    715:  * Language table structure.  This structure describes each entry in the
                    716:  * language table, which describes each unicode language.
                    717:  */
                    718: typedef struct {
                    719:     WORD wPrimary;                  // Language primary value.
                    720:     INT idsLang;                    // String id of LANG_* define.
                    721:     INT idsLangDesc;                // String id of language description.
                    722:     INT cSubLangs;                  // Number of sublanguages for this lang.
                    723:     PSUBLANGTABLE asl;              // Points to table of sublanguages.
                    724: } LANGTABLE;
                    725: 
                    726: 
                    727: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.