|
|
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: globals.c ! 14: * ! 15: * Contains global data for the dialog box editor. ! 16: * ! 17: ****************************************************************************/ ! 18: ! 19: #include "dlgedit.h" ! 20: #include "dlgextrn.h" /* Including this verifies they are synched.*/ ! 21: #include "dlgfuncs.h" ! 22: #include "dialogs.h" ! 23: #include "dlghelp.h" ! 24: ! 25: HANDLE ghInst; /* Application instance handle. */ ! 26: HMENU ghMenuMain; /* Main menu handle. */ ! 27: PRESLINK gprlHead = NULL; /* Head of the linked list of resources.*/ ! 28: CURRENTDLG gcd; /* Describes the current dialog. */ ! 29: HPEN hpenDarkGray; /* A dark gray pen. */ ! 30: HANDLE ghAccTable; /* The accelerator table handle. */ ! 31: INT gMenuSelected = 0; /* Currently selected menu item. */ ! 32: HBITMAP ghbmDragHandle = NULL; /* Handle for the drag handle bitmap. */ ! 33: HBITMAP ghbmDragHandle2 = NULL; /* Handle for hollow drag handle bitmap.*/ ! 34: HDC ghDCMem = NULL; /* Memory DC for drawing bitmaps. */ ! 35: INT gCurTool = W_NOTHING; /* Currently selected tool. */ ! 36: PWINDOWCLASSDESC gpwcdCurTool = NULL; /* Describes current tool. */ ! 37: BOOL gfToolLocked = FALSE; /* TRUE if a tool is locked down. */ ! 38: PCUSTLINK gpclHead = NULL; /* Head of custom control linked list. */ ! 39: ! 40: /* ! 41: * When the dialog editor displays one of its own dialogs, this value ! 42: * will contain the resource id of it. It is zero if there is not a ! 43: * dialog up. ! 44: */ ! 45: INT gidCurrentDlg = 0; ! 46: ! 47: /* ! 48: * Ordinal for the icon control to display in the dialog. It will be ! 49: * initialized to one of the editor's own icons. ! 50: */ ! 51: ORDINAL gordIcon; ! 52: ! 53: /* ! 54: * Bitmap handles for the up and down W_NOTHING (pointer) tool bitmaps. ! 55: */ ! 56: HBITMAP ghbmPointerToolUp = NULL; ! 57: HBITMAP ghbmPointerToolDown = NULL; ! 58: ! 59: /*-- Initialized "Preferences" Data ------------------------------------*/ ! 60: ! 61: /* ! 62: * Initialization data structure. This describes each profile entry ! 63: * that is contained in the initialization file. ! 64: */ ! 65: INIENTRY gaie[] = { ! 66: { L"fHexMode", &gfHexMode, FALSE, 0 }, ! 67: { L"fTranslateMode",&gfTranslateMode, FALSE, 0 }, ! 68: { L"fShowToolbox", &gfShowToolbox, TRUE, 0 }, ! 69: { L"fUseNewKeywords",&gfUseNewKeywords, TRUE, 0 }, ! 70: { L"cxGrid", &gcxGrid, DEFCXGRID, 0 }, ! 71: { L"cyGrid", &gcyGrid, DEFCYGRID, 0 }, ! 72: { L"xMargin", &gxMargin, DEFXMARGIN, 0 }, ! 73: { L"yMargin", &gyMargin, DEFYMARGIN, 0 }, ! 74: { L"xSpace", &gxSpace, DEFXSPACE, 0 }, ! 75: { L"ySpace", &gySpace, DEFYSPACE, 0 }, ! 76: { L"xMinPushSpace", &gxMinPushSpace, DEFXMINPUSHSPACE, 0 }, ! 77: { L"xMaxPushSpace", &gxMaxPushSpace, DEFXMAXPUSHSPACE, 0 }, ! 78: { L"yPushSpace", &gyPushSpace, DEFYPUSHSPACE, 0 }, ! 79: { NULL, NULL, 0, 0 } ! 80: }; ! 81: ! 82: BOOL gfHexMode; /* TRUE if in "hex" mode. */ ! 83: BOOL gfTranslateMode; /* TRUE if in "translate" mode. */ ! 84: BOOL gfShowToolbox; /* TRUE if Toolbox is to be shown. */ ! 85: BOOL gfUseNewKeywords; /* FALSE to only use "CONTROL" keyword. */ ! 86: INT gcxGrid; /* Current X grid. */ ! 87: INT gcyGrid; /* Current Y grid. */ ! 88: INT gxMargin; /* Top/bottom margin. */ ! 89: INT gyMargin; /* Left/right margin. */ ! 90: INT gxSpace; /* Horizontal control spacing. */ ! 91: INT gySpace; /* Vertical control spacing. */ ! 92: INT gxMinPushSpace; /* Minimum horizontal button spacing. */ ! 93: INT gxMaxPushSpace; /* Maximum horizontal button spacing. */ ! 94: INT gyPushSpace; /* Vertical button spacing. */ ! 95: ! 96: TCHAR szAppPos[] = L"AppPos"; /* App window's position keyname. */ ! 97: TCHAR szTBPos[] = L"TBPos"; /* Toolbox window's position keyname. */ ! 98: TCHAR szCustomDLL[] = L"CustomDLL";/* Section name for DLL cust. cntls. */ ! 99: ! 100: /*-- Sundry Handles.----------------------------------------------------*/ ! 101: HWND hwndStatus = NULL; /* Status ribbon window handle. */ ! 102: HWND ghwndToolbox = NULL; /* Toolbox window handle. */ ! 103: HWND ghwndTestDlg = NULL; /* Handle of the Test Mode dialog. */ ! 104: HWND ghwndMain = NULL; /* Main application window. */ ! 105: HWND ghwndSubClient = NULL; /* The "fake" client area. */ ! 106: HWND ghwndTrackOver = NULL; /* Window being tracked over. */ ! 107: ! 108: /*-- Some System constants.---------------------------------------------*/ ! 109: INT gcxSysChar; /* Pixel width of system font char box. */ ! 110: INT gcySysChar; /* Pixel height of system font char box.*/ ! 111: INT gcyBorder; /* System height of a border. */ ! 112: INT gcxPreDragMax; /* Max X mouse move during pre-drag. */ ! 113: INT gcyPreDragMax; /* Max Y mouse move during pre-drag. */ ! 114: INT gmsecPreDrag; /* The milliseconds that pre-drag lasts.*/ ! 115: INT gcyPixelsPerInch; /* Vertical pixels/inch of system. */ ! 116: INT gcyStatus; /* Saves height of the status window. */ ! 117: ! 118: /*-- Some state variables.----------------------------------------------*/ ! 119: INT gState = STATE_NORMAL; /* Has the editor "state" or mode. */ ! 120: BOOL gfResChged = FALSE; /* Tell if RES has changed */ ! 121: BOOL gfIncChged = FALSE; /* Tell if include has changed */ ! 122: BOOL gfDlgChanged = FALSE; /* TRUE if current dialog has changed. */ ! 123: INT gcSelected = 0; /* Count of selected windows. */ ! 124: BOOL gfTestMode = FALSE; /* TRUE if in "test" mode. */ ! 125: BOOL gfDisabled = FALSE; /* TRUE if editing is disabled for now. */ ! 126: BOOL gfEditingDlg = FALSE; /* TRUE means a dlg is picked to edit. */ ! 127: BOOL gfDlgSelected = FALSE; /* TRUE if the dialog has the selection.*/ ! 128: ! 129: /* ! 130: * Contains the window rectangle, in window units, for the "client" ! 131: * area for the currently chosen dialog being edited. This rectangle ! 132: * is relative to the dialog box window. The xLeft and yBottom fields ! 133: * contain the offset from the window origin of the dialog box to the ! 134: * origin of the "client" area. ! 135: */ ! 136: RECT grcDlgClient; ! 137: ! 138: /* ! 139: * Contains a rectangle that surrounds all the existing controls. This ! 140: * is used during tracking of the dialog to limit the minimum size that ! 141: * the dialog can be sized to. ! 142: */ ! 143: RECT grcMinDialog; ! 144: ! 145: /* ! 146: * Contains the offset from the origin of the currently selected ! 147: * control to the mouse pointer. This is updated when a control ! 148: * is clicked on and is used for dragging calculations. ! 149: */ ! 150: POINT gptCursorOffset; ! 151: ! 152: /* ! 153: * Contains the rectangle that surrounds the selected control(s). This ! 154: * rectangle is only valid if there are selected controls. ! 155: */ ! 156: RECT grcSelected; ! 157: ! 158: /* ! 159: * Contains the rectangle that surrounds the control(s) that are being ! 160: * copied. This is also used during a clipboard paste operation. In ! 161: * that case, it contains the rectangle that surrounds the control(s) ! 162: * as they are defined in the res image. ! 163: */ ! 164: RECT grcCopy; ! 165: ! 166: /* ! 167: * These contain the current location of the tracking rectangle when ! 168: * dragging a control. The values for grcTrackDU are in Dialog Units ! 169: * (DU's) and the values in grcTrackWin are in window units. The ! 170: * grcTrackWin values will only be valid if gfTrackRectShown is TRUE; ! 171: */ ! 172: RECT grcTrackDU; /* Track rect in dialog units. */ ! 173: RECT grcTrackWin; /* Track rect in window units. */ ! 174: BOOL gfTrackRectShown = FALSE; /* TRUE if track rect is visible. */ ! 175: HDC ghDCTrack; /* Clip DC used when tracking. */ ! 176: ! 177: /* ! 178: * Contains the current drag handle that is being tracked. This will ! 179: * be one of the DRAG_* constants. ! 180: */ ! 181: INT gHandleHit = DRAG_CENTER; ! 182: ! 183: /* ! 184: * Contains the overhang that is allowed during the current tracking ! 185: * operation. This is used by various routines during dragging so ! 186: * that limiting the tracking to the dialog boundaries works properly. ! 187: * In actuality, this is only non-zero when a combo box control is ! 188: * being drapped or dragged. It will be the height of the listbox ! 189: * portion of the combo. This is how combos are allowed to extend ! 190: * below the bottom of the dialog. ! 191: */ ! 192: INT gnOverHang; /* Maximum overhang during the drag. */ ! 193: ! 194: /* ! 195: * This pointer is either NULL, or else it points to a dialog resource. ! 196: * It is used when copying dialogs/controls, either with the Duplicate ! 197: * command or pasting from the clipboard. ! 198: */ ! 199: PRES gpResCopy; /* Copy of dialog/controls. */ ! 200: ! 201: /*-- CTYPE linked lists.------------------------------------------------*/ ! 202: NPCTYPE npcHead = NULL; /* Linked List of controls. */ ! 203: INT cWindows = 0; /* Number of Controls in pctype list. */ ! 204: ! 205: /* ! 206: * Pointer to the CTYPE structure for the currently selected control. ! 207: * This will be NULL if there is no control selected. ! 208: */ ! 209: NPCTYPE gnpcSel = NULL; ! 210: ! 211: /*-- Cursors used by editor.--------------------------------------------*/ ! 212: HCURSOR hcurArrow = NULL; /* Normal arrow cursor. */ ! 213: HCURSOR hcurWait = NULL; /* User Wait cursor, Hourglass. */ ! 214: HCURSOR hcurOutSel = NULL; /* Outline selection cursor. */ ! 215: HCURSOR hcurMove = NULL; /* System "Move" cursor. */ ! 216: HCURSOR hcurInsert = NULL; /* Insert cursor for Order/Group dialog.*/ ! 217: HCURSOR hcurDropTool = NULL; /* Cursor for when dropping new ctrls. */ ! 218: HCURSOR hcurSizeNESW = NULL; /* System sizing "NESW" cursor. */ ! 219: HCURSOR hcurSizeNS = NULL; /* System sizing "NS" cursor. */ ! 220: HCURSOR hcurSizeNWSE = NULL; /* System sizing "NWSE" cursor. */ ! 221: HCURSOR hcurSizeWE = NULL; /* System sizing "WE" cursor. */ ! 222: HBITMAP hbmTabStop = NULL; /* Bitmap for showing WS_TABSTOP style. */ ! 223: HBITMAP hbmTabStopSel = NULL; /* Selected version of the above. */ ! 224: ! 225: /*-- Window Class Strings.----------------------------------------------*/ ! 226: TCHAR szMainClass[] = L"DlgEdit";/* Application window class. */ ! 227: TCHAR szDragClass[] = L"Drag"; /* Class for drag handle windows. */ ! 228: TCHAR szSubClientClass[] = ! 229: L"SubClient"; /* Short client area window class. */ ! 230: TCHAR szToolboxClass[] = ! 231: L"Toolbox"; /* Toolbox window class. */ ! 232: TCHAR szToolBtnClass[] = ! 233: L"ToolBtn"; /* Toolbox button window class. */ ! 234: TCHAR szCustomClass[] = ! 235: L"DlgCustom"; /* Our custom emulator class. */ ! 236: ! 237: /*-- Miscellaneous variables.-------------------------------------------*/ ! 238: UINT fmtDlg; /* The Dialog Clipboard format */ ! 239: TCHAR szEmpty[] = L""; /* An empty string. */ ! 240: HHOOK ghhkMsgFilter; /* Hook handle for message filter func. */ ! 241: ! 242: /*-- Buffers.-----------------------------------------------------------*/ ! 243: TCHAR szFullResFile[CCHMAXPATH]; /* Full resource file name */ ! 244: LPTSTR pszResFile; /* Points to resource file name */ ! 245: TCHAR szFullIncludeFile[CCHMAXPATH];/* Full include file name */ ! 246: LPTSTR pszIncludeFile; /* Points to include file name */ ! 247: TCHAR gszHelpFile[CCHMAXPATH]; /* Path to the help file. */ ! 248: ! 249: /* ! 250: * Write buffer and index into it. This buffer is used by several ! 251: * sections to write out the different files. Note that only one ! 252: * file can be written out at a time using these globals. ! 253: */ ! 254: TCHAR gachWriteBuffer[CCHFILEBUFFER];/* Buffer for written file data. */ ! 255: INT cbWritePos; /* Pointer into gachWriteBuffer. */ ! 256: ! 257: /*-- Include Data.------------------------------------------------------*/ ! 258: NPLABEL plInclude = NULL; /* Pointer to Include data */ ! 259: NPLABEL plDelInclude = NULL; /* Pointer to deleted includes */ ! 260: ! 261: /* ! 262: * Describes each window class. Indexed by the W_ defined constants. ! 263: * The define CCONTROLS needs to be updated if controls are added or ! 264: * removed from this array. Note that CCONTROLS does NOT count the ! 265: * W_DIALOG type as a control, however. ! 266: */ ! 267: WINDOWCLASSDESC awcd[] = { ! 268: /* ! 269: * W_TEXT ! 270: */ ! 271: { ! 272: W_TEXT, ! 273: WS_CHILD | WS_GROUP | WS_VISIBLE | SS_LEFT, ! 274: WS_DISABLED, ! 275: 0, ! 276: 0, ! 277: 20, 8, ! 278: IC_STATIC, NULL, ! 279: FALSE, FALSE, TRUE, TRUE, TRUE, ! 280: DID_TEXTSTYLES, (WNDPROC)GenericStylesDlgProc, ! 281: HELPID_TEXTSTYLES, IDS_DEFTXTTEXT, NULL, NULL, ! 282: IDBM_CTTEXT, NULL, NULL, ! 283: IDBM_TUTEXT, NULL, IDBM_TDTEXT, NULL, ! 284: NULL, 0, NULL, NULL, NULL, 0 ! 285: }, ! 286: /* ! 287: * W_EDIT ! 288: */ ! 289: { ! 290: W_EDIT, ! 291: WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_LEFT | ! 292: ES_AUTOHSCROLL, ! 293: WS_DISABLED, ! 294: 0, ! 295: 0, ! 296: 32, 12, ! 297: IC_EDIT, NULL, ! 298: FALSE, FALSE, FALSE, TRUE, FALSE, ! 299: DID_EDITSTYLES, (WNDPROC)EditStylesDlgProc, ! 300: HELPID_EDITSTYLES, IDS_NULL, NULL, NULL, ! 301: IDBM_CTEDIT, NULL, NULL, ! 302: IDBM_TUEDIT, NULL, IDBM_TDEDIT, NULL, ! 303: NULL, 0, NULL, NULL, NULL, 0 ! 304: }, ! 305: /* ! 306: * W_GROUPBOX ! 307: */ ! 308: { ! 309: W_GROUPBOX, ! 310: WS_CHILD | WS_VISIBLE | BS_GROUPBOX, ! 311: WS_DISABLED, ! 312: 0, ! 313: 0, ! 314: 48, 40, ! 315: IC_BUTTON, NULL, ! 316: FALSE, FALSE, TRUE, TRUE, FALSE, ! 317: DID_GROUPBOXSTYLES, (WNDPROC)GenericStylesDlgProc, ! 318: HELPID_GROUPBOXSTYLES, IDS_DEFTXTGROUP, NULL, NULL, ! 319: IDBM_CTGROUP, NULL, NULL, ! 320: IDBM_TUGROUP, NULL, IDBM_TDGROUP, NULL, ! 321: NULL, 0, NULL, NULL, NULL, 0 ! 322: }, ! 323: /* ! 324: * W_PUSHBUTTON ! 325: */ ! 326: { ! 327: W_PUSHBUTTON, ! 328: WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | WS_TABSTOP, ! 329: WS_DISABLED, ! 330: 0, ! 331: 0, ! 332: 40, 14, ! 333: IC_BUTTON, NULL, ! 334: FALSE, FALSE, TRUE, TRUE, TRUE, ! 335: DID_PUSHBUTTONSTYLES, (WNDPROC)PushButtonStylesDlgProc, ! 336: HELPID_PUSHBUTTONSTYLES, IDS_DEFTXTPUSHBUTTON, NULL, NULL, ! 337: IDBM_CTPUSH, NULL, NULL, ! 338: IDBM_TUPUSH, NULL, IDBM_TDPUSH, NULL, ! 339: NULL, 0, NULL, NULL, NULL, 0 ! 340: }, ! 341: /* ! 342: * W_CHECKBOX ! 343: */ ! 344: { ! 345: W_CHECKBOX, ! 346: WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | WS_TABSTOP, ! 347: WS_DISABLED, ! 348: 0, ! 349: 0, ! 350: 40, 10, ! 351: IC_BUTTON, NULL, ! 352: FALSE, FALSE, TRUE, TRUE, TRUE, ! 353: DID_CHECKBOXSTYLES, (WNDPROC)CheckBoxStylesDlgProc, ! 354: HELPID_CHECKBOXSTYLES, IDS_DEFTXTCHECKBOX, NULL, NULL, ! 355: IDBM_CTCHECK, NULL, NULL, ! 356: IDBM_TUCHECK, NULL, IDBM_TDCHECK, NULL, ! 357: NULL, 0, NULL, NULL, NULL, 0 ! 358: }, ! 359: /* ! 360: * W_RADIOBUTTON ! 361: */ ! 362: { ! 363: W_RADIOBUTTON, ! 364: WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON, ! 365: WS_DISABLED, ! 366: 0, ! 367: 0, ! 368: 39, 10, ! 369: IC_BUTTON, NULL, ! 370: FALSE, FALSE, TRUE, TRUE, TRUE, ! 371: DID_RADIOBUTTONSTYLES, (WNDPROC)RadioButtonStylesDlgProc, ! 372: HELPID_RADIOBUTTONSTYLES, IDS_DEFTXTRADIOBUTTON, NULL, NULL, ! 373: IDBM_CTRADIO, NULL, NULL, ! 374: IDBM_TURADIO, NULL, IDBM_TDRADIO, NULL, ! 375: NULL, 0, NULL, NULL, NULL, 0 ! 376: }, ! 377: /* ! 378: * W_COMBOBOX ! 379: */ ! 380: { ! 381: W_COMBOBOX, ! 382: WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP | CBS_DROPDOWN | ! 383: CBS_SORT, ! 384: WS_DISABLED | CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE | ! 385: CBS_HASSTRINGS, ! 386: CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE | CBS_HASSTRINGS, ! 387: 0, ! 388: 48, 35, ! 389: IC_COMBOBOX, NULL, ! 390: FALSE, FALSE, FALSE, TRUE, FALSE, ! 391: DID_COMBOBOXSTYLES, (WNDPROC)ComboBoxStylesDlgProc, ! 392: HELPID_COMBOBOXSTYLES, IDS_NULL, NULL, NULL, ! 393: IDBM_CTCOMBO, NULL, NULL, ! 394: IDBM_TUCOMBO, NULL, IDBM_TDCOMBO, NULL, ! 395: NULL, 0, NULL, NULL, NULL, 0 ! 396: }, ! 397: /* ! 398: * W_LISTBOX ! 399: */ ! 400: { ! 401: W_LISTBOX, ! 402: WS_CHILD | WS_VISIBLE | LBS_STANDARD | WS_TABSTOP, ! 403: WS_DISABLED | LBS_OWNERDRAWFIXED | LBS_OWNERDRAWVARIABLE | ! 404: LBS_HASSTRINGS | LBS_NODATA, ! 405: LBS_OWNERDRAWFIXED | LBS_OWNERDRAWVARIABLE | LBS_HASSTRINGS | ! 406: LBS_NODATA, ! 407: 0, ! 408: 48, 40, ! 409: IC_LISTBOX, NULL, ! 410: FALSE, FALSE, FALSE, TRUE, FALSE, ! 411: DID_LISTBOXSTYLES, (WNDPROC)ListBoxStylesDlgProc, ! 412: HELPID_LISTBOXSTYLES, IDS_NULL, NULL, NULL, ! 413: IDBM_CTLIST, NULL, NULL, ! 414: IDBM_TULIST, NULL, IDBM_TDLIST, NULL, ! 415: NULL, 0, NULL, NULL, NULL, 0 ! 416: }, ! 417: /* ! 418: * W_HORZSCROLL ! 419: */ ! 420: { ! 421: W_HORZSCROLL, ! 422: WS_CHILD | WS_VISIBLE | SBS_HORZ, ! 423: WS_DISABLED, ! 424: 0, ! 425: 0, ! 426: 48, 0, ! 427: IC_SCROLLBAR, NULL, ! 428: FALSE, FALSE, FALSE, TRUE, FALSE, ! 429: DID_HORZSCROLLSTYLES, (WNDPROC)GenericStylesDlgProc, ! 430: HELPID_HORZSCROLLSTYLES, IDS_NULL, NULL, NULL, ! 431: IDBM_CTHSCROL, NULL, NULL, ! 432: IDBM_TUHSCROL, NULL, IDBM_TDHSCROL, NULL, ! 433: NULL, 0, NULL, NULL, NULL, 0 ! 434: }, ! 435: /* ! 436: * W_VERTSCROLL ! 437: */ ! 438: { ! 439: W_VERTSCROLL, ! 440: WS_CHILD | WS_VISIBLE | SBS_VERT, ! 441: WS_DISABLED, ! 442: 0, ! 443: 0, ! 444: 0, 40, ! 445: IC_SCROLLBAR, NULL, ! 446: FALSE, FALSE, FALSE, TRUE, FALSE, ! 447: DID_VERTSCROLLSTYLES, (WNDPROC)GenericStylesDlgProc, ! 448: HELPID_VERTSCROLLSTYLES, IDS_NULL, NULL, NULL, ! 449: IDBM_CTVSCROL, NULL, NULL, ! 450: IDBM_TUVSCROL, NULL, IDBM_TDVSCROL, NULL, ! 451: NULL, 0, NULL, NULL, NULL, 0 ! 452: }, ! 453: /* ! 454: * W_FRAME ! 455: */ ! 456: { ! 457: W_FRAME, ! 458: WS_CHILD | WS_VISIBLE | SS_BLACKFRAME, ! 459: WS_DISABLED, ! 460: 0, ! 461: 0, ! 462: 20, 16, ! 463: IC_STATIC, NULL, ! 464: FALSE, FALSE, FALSE, TRUE, FALSE, ! 465: DID_FRAMESTYLES, (WNDPROC)GenericStylesDlgProc, ! 466: HELPID_FRAMESTYLES, IDS_NULL, NULL, NULL, ! 467: IDBM_CTFRAME, NULL, NULL, ! 468: IDBM_TUFRAME, NULL, IDBM_TDFRAME, NULL, ! 469: NULL, 0, NULL, NULL, NULL, 0 ! 470: }, ! 471: /* ! 472: * W_RECT ! 473: */ ! 474: { ! 475: W_RECT, ! 476: WS_CHILD | WS_VISIBLE | SS_BLACKRECT, ! 477: WS_DISABLED, ! 478: 0, ! 479: 0, ! 480: 20, 16, ! 481: IC_STATIC, NULL, ! 482: FALSE, FALSE, FALSE, TRUE, FALSE, ! 483: DID_RECTSTYLES, (WNDPROC)GenericStylesDlgProc, ! 484: HELPID_RECTSTYLES, IDS_NULL, NULL, NULL, ! 485: IDBM_CTRECT, NULL, NULL, ! 486: IDBM_TURECT, NULL, IDBM_TDRECT, NULL, ! 487: NULL, 0, NULL, NULL, NULL, 0 ! 488: }, ! 489: /* ! 490: * W_ICON ! 491: */ ! 492: { ! 493: W_ICON, ! 494: WS_CHILD | WS_VISIBLE | SS_ICON, ! 495: WS_DISABLED, ! 496: 0, ! 497: 0, ! 498: 0, 0, ! 499: IC_STATIC, NULL, ! 500: FALSE, FALSE, TRUE, FALSE, FALSE, ! 501: DID_ICONSTYLES, (WNDPROC)GenericStylesDlgProc, ! 502: HELPID_ICONSTYLES, IDS_NULL, NULL, NULL, ! 503: IDBM_CTICON, NULL, NULL, ! 504: IDBM_TUICON, NULL, IDBM_TDICON, NULL, ! 505: NULL, 0, NULL, NULL, NULL, 0 ! 506: }, ! 507: /* ! 508: * W_CUSTOM ! 509: * ! 510: * For Custom controls, we do not allow our emulator control ! 511: * to be created with any other styles than the default ones ! 512: * (WS_CHILD and WS_VISIBLE), but whatever styles the user ! 513: * specifies are written out to the .res and .dlg files, ! 514: * of course. ! 515: */ ! 516: { ! 517: W_CUSTOM, ! 518: WS_CHILD | WS_VISIBLE, ! 519: WS_DISABLED, ! 520: 0, ! 521: 0, ! 522: 40, 14, ! 523: IC_CUSTOM, NULL, ! 524: TRUE, FALSE, TRUE, TRUE, FALSE, ! 525: DID_CUSTOMSTYLES, (WNDPROC)CustomStylesDlgProc, ! 526: HELPID_CUSTOMSTYLES, IDS_NULL, NULL, NULL, ! 527: IDBM_CTCUSTOM, NULL, NULL, ! 528: IDBM_TUCUSTOM, NULL, IDBM_TDCUSTOM, NULL, ! 529: NULL, 0, NULL, NULL, NULL, 0 ! 530: }, ! 531: /* ! 532: * W_DIALOG ! 533: */ ! 534: { ! 535: W_DIALOG, ! 536: WS_VISIBLE | WS_CAPTION | WS_SYSMENU | DS_MODALFRAME | WS_POPUP | ! 537: DS_SETFONT, ! 538: WS_DISABLED | DS_SYSMODAL | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | ! 539: WS_CHILD, ! 540: DS_SYSMODAL, ! 541: 0, ! 542: 160, 100, ! 543: IC_DIALOG, NULL, ! 544: FALSE, FALSE, TRUE, TRUE, FALSE, ! 545: DID_DIALOGSTYLES, (WNDPROC)DialogStylesDlgProc, ! 546: HELPID_DIALOGSTYLES, IDS_DEFTXTDIALOG, NULL, NULL, ! 547: 0, NULL, NULL, ! 548: 0, NULL, 0, NULL, ! 549: NULL, 0, NULL, NULL, NULL, 0 ! 550: } ! 551: }; ! 552: ! 553: /* ! 554: * This table maps the BS_* style of a button control into its ! 555: * appropriate W_* type that is used internally by the editor. ! 556: * This table assumes that any value used to index into it is ! 557: * masked by BS_ALL. ! 558: */ ! 559: INT rgmpiClsBtnType[] = { ! 560: W_PUSHBUTTON, /* BS_PUSHBUTTON */ ! 561: W_PUSHBUTTON, /* BS_DEFPUSHBUTTON */ ! 562: W_CHECKBOX, /* BS_CHECKBOX */ ! 563: W_CHECKBOX, /* BS_AUTOCHECKBOX */ ! 564: W_RADIOBUTTON, /* BS_RADIOBUTTON */ ! 565: W_CHECKBOX, /* BS_3STATE */ ! 566: W_CHECKBOX, /* BS_AUTO3STATE */ ! 567: W_GROUPBOX, /* BS_GROUPBOX */ ! 568: W_PUSHBUTTON, /* BS_USERBUTTON */ ! 569: W_RADIOBUTTON, /* BS_AUTORADIOBUTTON */ ! 570: W_PUSHBUTTON, /* BS_PUSHBOX */ ! 571: W_PUSHBUTTON /* BS_OWNERDRAW */ ! 572: }; ! 573: ! 574: /* Map low word of Static Control Style to static type. */ ! 575: /* ! 576: * This table maps the SS_* style of a static control into its ! 577: * appropriate W_* type that is used internally by the editor. ! 578: * This table assumes that any value used to index into it is ! 579: * masked by SS_ALL. ! 580: */ ! 581: INT rgmpiClsStcType[] = { ! 582: W_TEXT, /* SS_LEFT */ ! 583: W_TEXT, /* SS_CENTER */ ! 584: W_TEXT, /* SS_RIGHT */ ! 585: W_ICON, /* SS_ICON */ ! 586: W_RECT, /* SS_BLACKRECT */ ! 587: W_RECT, /* SS_GREYRECT */ ! 588: W_RECT, /* SS_WHITERECT */ ! 589: W_FRAME, /* SS_BLACKFRAME */ ! 590: W_FRAME, /* SS_GRAYFRAME */ ! 591: W_FRAME, /* SS_WHITEFRAME */ ! 592: W_TEXT, /* SS_USERITEM */ ! 593: W_TEXT, /* SS_SIMPLE */ ! 594: W_TEXT /* SS_LEFTNOWORDWRAP */ ! 595: }; ! 596: ! 597: /* ! 598: * Following are the tables with the predefined RC keywords for each ! 599: * class (IC_*). These tables describe each keyword other than the ! 600: * generic "CONTROL" keyword that is possible to use within a dialog ! 601: * template. The style describes the minimum bits that must be set ! 602: * to define the keyword. The mask allows a style to be specified ! 603: * that must have certain bits OFF for a match to occur. The default ! 604: * styles flag specifies style bits that are implicitly turned on ! 605: * when this keyword is specified in the dialog template in the .DLG ! 606: * file. These bits are checked against the style flag of the control ! 607: * that we are trying to match and if any of these default bits are ! 608: * NOT set for that control, we need to specify them in the .DLG file ! 609: * with a "NOT" in front of them to explicitly turn them off. ! 610: * ! 611: * The "Has Text" flag is set to FALSE in those cases where the syntax ! 612: * for the keyword does NOT include a text field, like "ICON" and ! 613: * "LISTBOX". ! 614: */ ! 615: ! 616: /* ! 617: * Array of the predefined RC keywords for Button styles. ! 618: */ ! 619: static RCKEYWORD arckwdButton[] = { ! 620: /* ! 621: * RADIOBUTTON ! 622: */ ! 623: { ! 624: BS_RADIOBUTTON, ! 625: BS_ALL, ! 626: WS_CHILD | WS_VISIBLE, ! 627: IDS_KEYRADIOBUTTON, TRUE ! 628: }, ! 629: /* ! 630: * CHECKBOX ! 631: */ ! 632: { ! 633: BS_CHECKBOX, ! 634: BS_ALL, ! 635: WS_CHILD | WS_VISIBLE | WS_TABSTOP, ! 636: IDS_KEYCHECKBOX, TRUE ! 637: }, ! 638: /* ! 639: * DEFPUSHBUTTON ! 640: */ ! 641: { ! 642: BS_DEFPUSHBUTTON, ! 643: BS_ALL, ! 644: WS_CHILD | WS_VISIBLE | WS_TABSTOP, ! 645: IDS_KEYDEFPUSHBUTTON, TRUE ! 646: }, ! 647: /* ! 648: * PUSHBUTTON ! 649: */ ! 650: { ! 651: BS_PUSHBUTTON, ! 652: BS_ALL, ! 653: WS_CHILD | WS_VISIBLE | WS_TABSTOP, ! 654: IDS_KEYPUSHBUTTON, TRUE ! 655: }, ! 656: /* ! 657: * GROUPBOX ! 658: */ ! 659: { ! 660: BS_GROUPBOX, ! 661: BS_ALL, ! 662: WS_CHILD | WS_VISIBLE, ! 663: IDS_KEYGROUPBOX, TRUE ! 664: }, ! 665: /* ! 666: * AUTO3STATE ! 667: */ ! 668: { ! 669: BS_AUTO3STATE, ! 670: BS_ALL, ! 671: WS_CHILD | WS_VISIBLE | WS_TABSTOP, ! 672: IDS_KEYAUTO3STATE, TRUE ! 673: }, ! 674: /* ! 675: * AUTOCHECKBOX ! 676: */ ! 677: { ! 678: BS_AUTOCHECKBOX, ! 679: BS_ALL, ! 680: WS_CHILD | WS_VISIBLE | WS_TABSTOP, ! 681: IDS_KEYAUTOCHECKBOX, TRUE ! 682: }, ! 683: /* ! 684: * AUTORADIOBUTTON ! 685: */ ! 686: { ! 687: BS_AUTORADIOBUTTON, ! 688: BS_ALL, ! 689: WS_CHILD | WS_VISIBLE, ! 690: IDS_KEYAUTORADIOBUTTON, TRUE ! 691: }, ! 692: /* ! 693: * STATE3 ! 694: */ ! 695: { ! 696: BS_3STATE, ! 697: BS_ALL, ! 698: WS_CHILD | WS_VISIBLE | WS_TABSTOP, ! 699: IDS_KEYSTATE3, TRUE ! 700: }, ! 701: /* ! 702: * USERBUTTON ! 703: */ ! 704: { ! 705: BS_USERBUTTON, ! 706: BS_ALL, ! 707: WS_CHILD | WS_VISIBLE | WS_TABSTOP, ! 708: IDS_KEYUSERBUTTON, TRUE ! 709: } ! 710: }; ! 711: ! 712: /* ! 713: * Array of the predefined RC keywords for Edit control styles. ! 714: */ ! 715: static RCKEYWORD arckwdEdit[] = { ! 716: /* ! 717: * EDIT ! 718: */ ! 719: { ! 720: 0L, ! 721: 0L, ! 722: WS_CHILD | WS_VISIBLE | ES_LEFT | WS_TABSTOP | WS_BORDER, ! 723: IDS_KEYEDITTEXT, FALSE ! 724: } ! 725: }; ! 726: ! 727: /* ! 728: * Array of the predefined RC keywords for Static styles. ! 729: */ ! 730: static RCKEYWORD arckwdStatic[] = { ! 731: /* ! 732: * ICON ! 733: */ ! 734: { ! 735: SS_ICON, ! 736: SS_ALL, ! 737: WS_CHILD | WS_VISIBLE, ! 738: IDS_KEYICON, TRUE ! 739: }, ! 740: /* ! 741: * RTEXT ! 742: */ ! 743: { ! 744: SS_RIGHT, ! 745: SS_ALL, ! 746: WS_CHILD | WS_GROUP | WS_VISIBLE, ! 747: IDS_KEYRTEXT, TRUE ! 748: }, ! 749: /* ! 750: * CTEXT ! 751: */ ! 752: { ! 753: SS_CENTER, ! 754: SS_ALL, ! 755: WS_CHILD | WS_GROUP | WS_VISIBLE, ! 756: IDS_KEYCTEXT, TRUE ! 757: }, ! 758: /* ! 759: * LTEXT ! 760: */ ! 761: { ! 762: SS_LEFT, ! 763: SS_ALL, ! 764: WS_CHILD | WS_GROUP | WS_VISIBLE, ! 765: IDS_KEYLTEXT, TRUE ! 766: } ! 767: }; ! 768: ! 769: /* ! 770: * Array of the predefined RC keywords for ListBox styles. ! 771: */ ! 772: static RCKEYWORD arckwdLB[] = { ! 773: /* ! 774: * LISTBOX ! 775: */ ! 776: { ! 777: 0L, ! 778: 0L, ! 779: WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_NOTIFY, ! 780: IDS_KEYLISTBOX, FALSE ! 781: } ! 782: }; ! 783: ! 784: /* ! 785: * Array of the predefined RC keywords for ComboBox styles. ! 786: */ ! 787: static RCKEYWORD arckwdComboBox[] = { ! 788: /* ! 789: * COMBOBOX ! 790: */ ! 791: { ! 792: 0L, ! 793: 0L, ! 794: WS_CHILD | WS_VISIBLE, ! 795: IDS_KEYCOMBOBOX, FALSE ! 796: } ! 797: }; ! 798: ! 799: /* ! 800: * Array of the predefined RC keywords for ScrollBar styles. ! 801: */ ! 802: static RCKEYWORD arckwdScrollBar[] = { ! 803: /* ! 804: * SCROLLBAR ! 805: */ ! 806: { ! 807: 0L, ! 808: 0L, ! 809: WS_CHILD | WS_VISIBLE, ! 810: IDS_KEYSCROLLBAR, FALSE ! 811: } ! 812: }; ! 813: ! 814: ! 815: /* ! 816: * Following are the Class Styles structures. These tables define the ! 817: * styles for the different window classes (IC_*). The first element ! 818: * is the style flag, followed by an optional style mask. If the style ! 819: * mask is zero, the style flag becomes the mask also. This is often good ! 820: * enough, but there are cases where the style depends on certain bits ! 821: * being off, as well as certain bits being on, to definitively identify ! 822: * a certain style. An extreme example of this is the BS_PUSHBUTTON ! 823: * style, which is actually zero (no bits are on). The mask for this ! 824: * style had to be set to include all four of the lower bits, or all ! 825: * buttons would be incorrectly figured to have the BS_PUSHBUTTON style. ! 826: * With the proper mask, only styles that have all four lower bits ! 827: * OFF will be considered to have the BS_PUSHBUTTON style. ! 828: */ ! 829: ! 830: /* ! 831: * Button styles. ! 832: */ ! 833: static CLASSSTYLE acsButton[] = { ! 834: {BS_PUSHBUTTON, BS_ALL, DID_BS_PUSHBUTTON }, ! 835: {BS_DEFPUSHBUTTON, BS_ALL, DID_BS_DEFPUSHBUTTON }, ! 836: {BS_CHECKBOX, BS_ALL, 0 }, ! 837: {BS_AUTOCHECKBOX, BS_ALL, 0 }, ! 838: {BS_RADIOBUTTON, BS_ALL, 0 }, ! 839: {BS_3STATE, BS_ALL, 0 }, ! 840: {BS_AUTO3STATE, BS_ALL, 0 }, ! 841: {BS_GROUPBOX, BS_ALL, 0 }, ! 842: {BS_USERBUTTON, BS_ALL, 0 }, ! 843: {BS_AUTORADIOBUTTON, BS_ALL, 0 }, ! 844: {BS_PUSHBOX, BS_ALL, 0 }, ! 845: {BS_OWNERDRAW, BS_ALL, DID_BS_OWNERDRAW }, ! 846: {BS_LEFTTEXT, 0, DID_BS_LEFTTEXT } ! 847: }; ! 848: ! 849: /* ! 850: * Scroll bar styles. ! 851: */ ! 852: static CLASSSTYLE acsSB[] = { ! 853: {SBS_HORZ, SBS_ALL, 0 }, ! 854: {SBS_VERT, SBS_ALL, 0 }, ! 855: {SBS_TOPALIGN, 0, 0 }, ! 856: {SBS_LEFTALIGN, 0, 0 }, ! 857: {SBS_BOTTOMALIGN, 0, 0 }, ! 858: {SBS_RIGHTALIGN, 0, 0 }, ! 859: {SBS_SIZEBOXTOPLEFTALIGN, 0, 0 }, ! 860: {SBS_SIZEBOXBOTTOMRIGHTALIGN, 0, 0 }, ! 861: {SBS_SIZEBOX, 0, 0 } ! 862: }; ! 863: ! 864: /* ! 865: * Entry field styles. ! 866: */ ! 867: static CLASSSTYLE acsEdit[] = { ! 868: {ES_LEFT, ES_ALIGN, DID_ES_LEFT }, ! 869: {ES_CENTER, ES_ALIGN, DID_ES_CENTER }, ! 870: {ES_RIGHT, ES_ALIGN, DID_ES_RIGHT }, ! 871: {ES_MULTILINE, 0, DID_ES_MULTILINE }, ! 872: {ES_UPPERCASE, 0, DID_ES_UPPERCASE }, ! 873: {ES_LOWERCASE, 0, DID_ES_LOWERCASE }, ! 874: {ES_PASSWORD, 0, DID_ES_PASSWORD }, ! 875: {ES_AUTOVSCROLL, 0, DID_ES_AUTOVSCROLL }, ! 876: {ES_AUTOHSCROLL, 0, DID_ES_AUTOHSCROLL }, ! 877: {ES_NOHIDESEL, 0, DID_ES_NOHIDESEL }, ! 878: {ES_OEMCONVERT, 0, DID_ES_OEMCONVERT }, ! 879: {ES_READONLY, 0, DID_ES_READONLY } ! 880: }; ! 881: ! 882: /* ! 883: * Static styles. ! 884: */ ! 885: static CLASSSTYLE acsStatic[] = { ! 886: {SS_LEFT, SS_ALL, DID_SS_LEFT }, ! 887: {SS_CENTER, SS_ALL, DID_SS_CENTER }, ! 888: {SS_RIGHT, SS_ALL, DID_SS_RIGHT }, ! 889: {SS_ICON, SS_ALL, 0 }, ! 890: {SS_BLACKRECT, SS_ALL, DID_SS_BLACKRECT }, ! 891: {SS_GRAYRECT, SS_ALL, DID_SS_GRAYRECT }, ! 892: {SS_WHITERECT, SS_ALL, DID_SS_WHITERECT }, ! 893: {SS_BLACKFRAME, SS_ALL, DID_SS_BLACKFRAME }, ! 894: {SS_GRAYFRAME, SS_ALL, DID_SS_GRAYFRAME }, ! 895: {SS_WHITEFRAME, SS_ALL, DID_SS_WHITEFRAME }, ! 896: {SS_USERITEM, SS_ALL, DID_SS_USERITEM }, ! 897: {SS_SIMPLE, SS_ALL, DID_SS_SIMPLE }, ! 898: {SS_LEFTNOWORDWRAP, SS_ALL, DID_SS_LEFTNOWORDWRAP }, ! 899: {SS_NOPREFIX, 0, DID_SS_NOPREFIX } ! 900: }; ! 901: ! 902: /* ! 903: * List box styles. ! 904: */ ! 905: static CLASSSTYLE acsLB[] = { ! 906: {LBS_NOTIFY, 0, DID_LBS_NOTIFY }, ! 907: {LBS_SORT, 0, DID_LBS_SORT }, ! 908: {LBS_NOREDRAW, 0, DID_LBS_NOREDRAW }, ! 909: {LBS_MULTIPLESEL, 0, DID_LBS_MULTIPLESEL }, ! 910: {LBS_OWNERDRAWFIXED, 0, DID_LBS_OWNERDRAWFIXED }, ! 911: {LBS_OWNERDRAWVARIABLE, 0, DID_LBS_OWNERDRAWVARIABLE }, ! 912: {LBS_HASSTRINGS, 0, DID_LBS_HASSTRINGS }, ! 913: {LBS_USETABSTOPS, 0, DID_LBS_USETABSTOPS }, ! 914: {LBS_NOINTEGRALHEIGHT, 0, DID_LBS_NOINTEGRALHEIGHT }, ! 915: {LBS_MULTICOLUMN, 0, DID_LBS_MULTICOLUMN }, ! 916: {LBS_WANTKEYBOARDINPUT, 0, DID_LBS_WANTKEYBOARDINPUT }, ! 917: {LBS_EXTENDEDSEL, 0, DID_LBS_EXTENDEDSEL }, ! 918: {LBS_DISABLENOSCROLL, 0, DID_LBS_DISABLENOSCROLL }, ! 919: {LBS_NODATA, 0, DID_LBS_NODATA } ! 920: }; ! 921: ! 922: /* ! 923: * Combo Box styles. ! 924: */ ! 925: static CLASSSTYLE acsComboBox[] = { ! 926: {CBS_SIMPLE, CBS_ALL, DID_CBS_SIMPLE }, ! 927: {CBS_DROPDOWN, CBS_ALL, DID_CBS_DROPDOWN }, ! 928: {CBS_DROPDOWNLIST, CBS_ALL, DID_CBS_DROPDOWNLIST }, ! 929: {CBS_OWNERDRAWFIXED, 0, DID_CBS_OWNERDRAWFIXED }, ! 930: {CBS_OWNERDRAWVARIABLE, 0, DID_CBS_OWNERDRAWVARIABLE }, ! 931: {CBS_AUTOHSCROLL, 0, DID_CBS_AUTOHSCROLL }, ! 932: {CBS_OEMCONVERT, 0, DID_CBS_OEMCONVERT }, ! 933: {CBS_SORT, 0, DID_CBS_SORT }, ! 934: {CBS_HASSTRINGS, 0, DID_CBS_HASSTRINGS }, ! 935: {CBS_NOINTEGRALHEIGHT, 0, DID_CBS_NOINTEGRALHEIGHT }, ! 936: {CBS_DISABLENOSCROLL, 0, DID_CBS_DISABLENOSCROLL } ! 937: }; ! 938: ! 939: /* ! 940: * Dialog styles. ! 941: */ ! 942: static CLASSSTYLE acsDialog[] = { ! 943: {DS_ABSALIGN, 0, DID_DS_ABSALIGN }, ! 944: {DS_SYSMODAL, 0, DID_DS_SYSMODAL }, ! 945: {DS_LOCALEDIT, 0, DID_DS_LOCALEDIT }, ! 946: {DS_SETFONT, 0, 0 }, ! 947: {DS_MODALFRAME, 0, DID_DS_MODALFRAME }, ! 948: {DS_NOIDLEMSG, 0, DID_DS_NOIDLEMSG }, ! 949: /* ! 950: * The following two styles are the same bits as WS_GROUP and ! 951: * WS_TABSTOP, so they must be in this table and there has ! 952: * to be special case code for writing the appropriate string ! 953: * out when writing dialog styles. ! 954: */ ! 955: {WS_MINIMIZEBOX, 0, DID_WS_MINIMIZEBOX }, ! 956: {WS_MAXIMIZEBOX, 0, DID_WS_MAXIMIZEBOX } ! 957: }; ! 958: ! 959: /* ! 960: * Window styles. ! 961: */ ! 962: static CLASSSTYLE acsWindow[] = { ! 963: {WS_POPUP, 0, DID_WS_POPUP }, ! 964: {WS_CHILD, 0, DID_WS_CHILD }, ! 965: {WS_MINIMIZE, 0, DID_WS_MINIMIZE }, ! 966: {WS_VISIBLE, 0, DID_WS_VISIBLE }, ! 967: {WS_DISABLED, 0, DID_WS_DISABLED }, ! 968: {WS_CLIPSIBLINGS, 0, DID_WS_CLIPSIBLINGS }, ! 969: {WS_CLIPCHILDREN, 0, DID_WS_CLIPCHILDREN }, ! 970: {WS_MAXIMIZE, 0, DID_WS_MAXIMIZE }, ! 971: {WS_CAPTION, WS_CAPTIONALL, DID_WS_CAPTION }, ! 972: {WS_BORDER, WS_CAPTIONALL, DID_WS_BORDER }, ! 973: {WS_DLGFRAME, WS_CAPTIONALL, DID_WS_DLGFRAME }, ! 974: {WS_VSCROLL, 0, DID_WS_VSCROLL }, ! 975: {WS_HSCROLL, 0, DID_WS_HSCROLL }, ! 976: {WS_SYSMENU, 0, DID_WS_SYSMENU }, ! 977: {WS_THICKFRAME, 0, DID_WS_THICKFRAME }, ! 978: {WS_GROUP, 0, DID_WS_GROUP }, ! 979: {WS_TABSTOP, 0, DID_WS_TABSTOP } ! 980: }; ! 981: ! 982: /* ! 983: * Resource Flags styles. ! 984: */ ! 985: static CLASSSTYLE acsResFlags[] = { ! 986: {MMF_MOVEABLE, 0, DID_MMF_MOVEABLE }, ! 987: {MMF_PURE, 0, DID_MMF_PURE }, ! 988: {MMF_PRELOAD, 0, DID_MMF_PRELOAD }, ! 989: {MMF_DISCARDABLE, 0, DID_MMF_DISCARDABLE } ! 990: }; ! 991: ! 992: /* ! 993: * Extended Styles. ! 994: */ ! 995: static CLASSSTYLE acsExStyle[] = { ! 996: {WS_EX_DLGMODALFRAME, 0, 0 }, ! 997: {WS_EX_NOPARENTNOTIFY, 0, 0 }, ! 998: {WS_EX_TOPMOST, 0, 0 }, ! 999: {WS_EX_ACCEPTFILES, 0, 0 }, ! 1000: {WS_EX_TRANSPARENT, 0, 0 } ! 1001: }; ! 1002: ! 1003: ! 1004: /* ! 1005: * Array of class style description structures. These are indexed by ! 1006: * the IC_* constants and describe each class. They contain pointers ! 1007: * to both the class styles array and the predefined keywords array ! 1008: * for each class. ! 1009: * ! 1010: * The last few entries are included in the table for convenience, ! 1011: * and are used to describe things like the various window (WS_*, WS_EX_*) ! 1012: * and resource memory flags (MMF_*) styles, although they don't exactly ! 1013: * map to an IC_* style that a control will have. ! 1014: */ ! 1015: CLASSSTYLEDESC acsd[] = { ! 1016: /* ! 1017: * IC_BUTTON ! 1018: */ ! 1019: { ! 1020: IDS_WCBUTTON, ! 1021: acsButton, sizeof(acsButton) / sizeof(CLASSSTYLE), IDS_IC_BUTTON, ! 1022: arckwdButton, sizeof(arckwdButton) / sizeof(RCKEYWORD), ! 1023: ORDID_BUTTONCLASS ! 1024: }, ! 1025: /* ! 1026: * IC_SCROLLBAR ! 1027: */ ! 1028: { ! 1029: IDS_WCSCROLLBAR, ! 1030: acsSB, sizeof(acsSB) / sizeof(CLASSSTYLE), IDS_IC_SCROLLBAR, ! 1031: arckwdScrollBar, sizeof(arckwdScrollBar) / sizeof(RCKEYWORD), ! 1032: ORDID_SCROLLBARCLASS ! 1033: }, ! 1034: /* ! 1035: * IC_EDIT ! 1036: */ ! 1037: { ! 1038: IDS_WCEDIT, ! 1039: acsEdit, sizeof(acsEdit) / sizeof(CLASSSTYLE), IDS_IC_EDIT, ! 1040: arckwdEdit, sizeof(arckwdEdit) / sizeof(RCKEYWORD), ! 1041: ORDID_EDITCLASS ! 1042: }, ! 1043: /* ! 1044: * IC_STATIC ! 1045: */ ! 1046: { ! 1047: IDS_WCSTATIC, ! 1048: acsStatic, sizeof(acsStatic) / sizeof(CLASSSTYLE), IDS_IC_STATIC, ! 1049: arckwdStatic, sizeof(arckwdStatic) / sizeof(RCKEYWORD), ! 1050: ORDID_STATICCLASS ! 1051: }, ! 1052: /* ! 1053: * IC_LISTBOX ! 1054: */ ! 1055: { ! 1056: IDS_WCLISTBOX, ! 1057: acsLB, sizeof(acsLB) / sizeof(CLASSSTYLE), IDS_IC_LISTBOX, ! 1058: arckwdLB, sizeof(arckwdLB) / sizeof(RCKEYWORD), ! 1059: ORDID_LISTBOXCLASS ! 1060: }, ! 1061: /* ! 1062: * IC_COMBOBOX ! 1063: */ ! 1064: { ! 1065: IDS_WCCOMBOBOX, ! 1066: acsComboBox, sizeof(acsComboBox) / sizeof(CLASSSTYLE), IDS_IC_COMBOBOX, ! 1067: arckwdComboBox, sizeof(arckwdComboBox) / sizeof(RCKEYWORD), ! 1068: ORDID_COMBOBOXCLASS ! 1069: }, ! 1070: /* ! 1071: * IC_CUSTOM ! 1072: */ ! 1073: { ! 1074: IDS_WCCUSTOM, ! 1075: NULL, 0, 0, ! 1076: NULL, 0, ! 1077: 0 ! 1078: }, ! 1079: /* ! 1080: * IC_DIALOG ! 1081: */ ! 1082: { ! 1083: IDS_WCDIALOG, ! 1084: acsDialog, sizeof(acsDialog) / sizeof(CLASSSTYLE), IDS_IC_DIALOG, ! 1085: NULL, 0, ! 1086: 0 ! 1087: }, ! 1088: /* ! 1089: * IC_WINDOW ! 1090: */ ! 1091: { ! 1092: IDS_NULL, ! 1093: acsWindow, sizeof(acsWindow) / sizeof(CLASSSTYLE), IDS_IC_WINDOW, ! 1094: NULL, 0, ! 1095: 0 ! 1096: }, ! 1097: /* ! 1098: * IC_RESFLAGS ! 1099: */ ! 1100: { ! 1101: IDS_NULL, ! 1102: acsResFlags, sizeof(acsResFlags) / sizeof(CLASSSTYLE), 0, ! 1103: NULL, 0, ! 1104: 0 ! 1105: }, ! 1106: /* ! 1107: * IC_EXSTYLE ! 1108: */ ! 1109: { ! 1110: IDS_NULL, ! 1111: acsExStyle, sizeof(acsExStyle) / sizeof(CLASSSTYLE), IDS_IC_EXSTYLE, ! 1112: NULL, 0, ! 1113: 0 ! 1114: } ! 1115: }; ! 1116: ! 1117: /* ! 1118: * Message box messages, for the Message() function. ! 1119: */ ! 1120: MESSAGEDATA gamdMessages[] = { ! 1121: { IDS_DELETEDIALOG, MB_YESNO | MB_ICONEXCLAMATION }, ! 1122: { IDS_OUTOFMEMORY, MB_OK | MB_ICONHAND }, ! 1123: { IDS_CANTCREATE, MB_OK | MB_ICONEXCLAMATION }, ! 1124: { IDS_SYMNOCHANGE, MB_OK | MB_ICONEXCLAMATION }, ! 1125: { IDS_IDSYMMISMATCH, MB_OK | MB_ICONEXCLAMATION }, ! 1126: { IDS_CLOSING, MB_YESNOCANCEL | MB_ICONEXCLAMATION }, ! 1127: { IDS_BADRESFILE, MB_OK | MB_ICONEXCLAMATION }, ! 1128: { IDS_INCLCLOSING, MB_YESNOCANCEL | MB_ICONEXCLAMATION }, ! 1129: { IDS_SYMEXISTS, MB_OK | MB_ICONEXCLAMATION }, ! 1130: { IDS_BADSYMBOLID, MB_OK | MB_ICONEXCLAMATION }, ! 1131: { IDS_LABELDUPID, MB_OK | MB_ICONEXCLAMATION }, ! 1132: { IDS_SELECTFIRST, MB_OK | MB_ICONEXCLAMATION }, ! 1133: { IDS_CTRLDUPID, MB_OK | MB_ICONEXCLAMATION }, ! 1134: { IDS_BADCUSTDLL, MB_OK | MB_ICONEXCLAMATION }, ! 1135: { IDS_NOCLIP, MB_OK | MB_ICONEXCLAMATION }, ! 1136: { IDS_INTERNAL, MB_OK | MB_ICONEXCLAMATION }, ! 1137: { IDS_NOMOUSE, MB_OK | MB_ICONEXCLAMATION }, ! 1138: { IDS_NOINIT, MB_OK | MB_ICONEXCLAMATION }, ! 1139: { IDS_GTZERO, MB_OK | MB_ICONEXCLAMATION }, ! 1140: { IDS_ICONNAMEHASBLANKS,MB_OK | MB_ICONEXCLAMATION }, ! 1141: { IDS_IDUPIDS, MB_OK | MB_ICONEXCLAMATION }, ! 1142: { IDS_CREATECTRLERROR, MB_OK | MB_ICONEXCLAMATION }, ! 1143: { IDS_CANTOPENRES, MB_OK | MB_ICONEXCLAMATION }, ! 1144: { IDS_CONFIRMDISCARD, MB_YESNO | MB_ICONEXCLAMATION }, ! 1145: { IDS_SYMNOTFOUND, MB_OK | MB_ICONEXCLAMATION }, ! 1146: { IDS_NOCLASS, MB_OK | MB_ICONEXCLAMATION }, ! 1147: { IDS_POSITIVENUM, MB_OK | MB_ICONEXCLAMATION }, ! 1148: { IDS_MEMERROR, MB_OK | MB_ICONHAND }, ! 1149: { IDS_DLGNAMEHASBLANKS, MB_OK | MB_ICONEXCLAMATION }, ! 1150: { IDS_NODLGNAME, MB_OK | MB_ICONEXCLAMATION }, ! 1151: { IDS_CANTINITDLL, MB_OK | MB_ICONEXCLAMATION }, ! 1152: { IDS_NOICONNAME, MB_OK | MB_ICONEXCLAMATION }, ! 1153: { IDS_RESTOREDIALOG, MB_YESNO | MB_ICONEXCLAMATION }, ! 1154: { IDS_ZEROPOINTSIZE, MB_OK | MB_ICONEXCLAMATION }, ! 1155: { IDS_MINGTMAXSPACE, MB_OK | MB_ICONEXCLAMATION }, ! 1156: { IDS_CUSTCNTLINUSE, MB_OK | MB_ICONEXCLAMATION }, ! 1157: { IDS_CUSTALREADYLOADED,MB_OK | MB_ICONEXCLAMATION }, ! 1158: { IDS_CANTLOADDLL, MB_OK | MB_ICONEXCLAMATION }, ! 1159: { IDS_DLLBADEXPORTS, MB_OK | MB_ICONEXCLAMATION }, ! 1160: { IDS_DLLBADCOUNT, MB_OK | MB_ICONEXCLAMATION } ! 1161: }; ! 1162: ! 1163: /* ! 1164: * Table that maps menu items to help context id's for them. ! 1165: */ ! 1166: HELPMAP gahmapMenu[] = { ! 1167: {MENU_NEWRES, HELPID_FILE_NEWRES }, ! 1168: {MENU_OPEN, HELPID_FILE_OPEN }, ! 1169: {MENU_SAVE, HELPID_FILE_SAVE }, ! 1170: {MENU_SAVEAS, HELPID_FILE_SAVEAS }, ! 1171: {MENU_SETINCLUDE, HELPID_FILE_SETINCLUDE }, ! 1172: {MENU_NEWCUST, HELPID_FILE_NEWCUST }, ! 1173: {MENU_OPENCUST, HELPID_FILE_OPENCUST }, ! 1174: {MENU_REMCUST, HELPID_FILE_REMCUST }, ! 1175: {MENU_EXIT, HELPID_FILE_EXIT }, ! 1176: ! 1177: {MENU_RESTOREDIALOG, HELPID_EDIT_RESTOREDIALOG }, ! 1178: {MENU_CUT, HELPID_EDIT_CUT }, ! 1179: {MENU_COPY, HELPID_EDIT_COPY }, ! 1180: {MENU_PASTE, HELPID_EDIT_PASTE }, ! 1181: {MENU_DELETE, HELPID_EDIT_DELETE }, ! 1182: {MENU_DUPLICATE, HELPID_EDIT_DUPLICATE }, ! 1183: {MENU_SYMBOLS, HELPID_EDIT_SYMBOLS }, ! 1184: {MENU_STYLES, HELPID_EDIT_STYLES }, ! 1185: {MENU_SIZETOTEXT, HELPID_EDIT_SIZETOTEXT }, ! 1186: {MENU_NEWDIALOG, HELPID_EDIT_NEWDIALOG }, ! 1187: {MENU_SELECTDIALOG, HELPID_EDIT_SELECTDIALOG }, ! 1188: ! 1189: {MENU_ALIGNLEFT, HELPID_ARRANGE_ALIGNLEFT }, ! 1190: {MENU_ALIGNVERT, HELPID_ARRANGE_ALIGNVERT }, ! 1191: {MENU_ALIGNRIGHT, HELPID_ARRANGE_ALIGNRIGHT }, ! 1192: {MENU_ALIGNTOP, HELPID_ARRANGE_ALIGNTOP }, ! 1193: {MENU_ALIGNHORZ, HELPID_ARRANGE_ALIGNHORZ }, ! 1194: {MENU_ALIGNBOTTOM, HELPID_ARRANGE_ALIGNBOTTOM }, ! 1195: {MENU_SPACEHORZ, HELPID_ARRANGE_SPACEHORZ }, ! 1196: {MENU_SPACEVERT, HELPID_ARRANGE_SPACEVERT }, ! 1197: {MENU_ARRSIZEWIDTH, HELPID_ARRANGE_ARRSIZEWIDTH }, ! 1198: {MENU_ARRSIZEHEIGHT, HELPID_ARRANGE_ARRSIZEHEIGHT }, ! 1199: {MENU_ARRPUSHBOTTOM, HELPID_ARRANGE_ARRPUSHBOTTOM }, ! 1200: {MENU_ARRPUSHRIGHT, HELPID_ARRANGE_ARRPUSHRIGHT }, ! 1201: {MENU_ORDERGROUP, HELPID_ARRANGE_ORDERGROUP }, ! 1202: {MENU_ARRSETTINGS, HELPID_ARRANGE_ARRSETTINGS }, ! 1203: ! 1204: {MENU_TESTMODE, HELPID_OPTIONS_TESTMODE }, ! 1205: {MENU_HEXMODE, HELPID_OPTIONS_HEXMODE }, ! 1206: {MENU_TRANSLATE, HELPID_OPTIONS_TRANSLATE }, ! 1207: {MENU_USENEWKEYWORDS, HELPID_OPTIONS_USENEWKEYWORDS }, ! 1208: {MENU_SHOWTOOLBOX, HELPID_OPTIONS_SHOWTOOLBOX }, ! 1209: ! 1210: {MENU_CONTENTS, HELPID_HELP_CONTENTS }, ! 1211: {MENU_SEARCH, HELPID_HELP_SEARCH }, ! 1212: // No help for the About menu command. ! 1213: ! 1214: {0, 0 } ! 1215: }; ! 1216: ! 1217: /* ! 1218: * Table that maps dialog ids to help context id's for them. ! 1219: */ ! 1220: HELPMAP gahmapDialog[] = { ! 1221: // No help for the About dialog. ! 1222: {DID_ARRSETTINGS, HELPID_ARRSETTINGS }, ! 1223: {DID_CHECKBOXSTYLES, HELPID_CHECKBOXSTYLES }, ! 1224: {DID_COMBOBOXSTYLES, HELPID_COMBOBOXSTYLES }, ! 1225: {DID_CUSTOMSTYLES, HELPID_CUSTOMSTYLES }, ! 1226: {DID_DIALOGSTYLES, HELPID_DIALOGSTYLES }, ! 1227: {DID_EDITSTYLES, HELPID_EDITSTYLES }, ! 1228: {DID_FRAMESTYLES, HELPID_FRAMESTYLES }, ! 1229: {DID_GROUPBOXSTYLES, HELPID_GROUPBOXSTYLES }, ! 1230: {DID_ORDERGROUP, HELPID_ORDERGROUP }, ! 1231: {DID_HORZSCROLLSTYLES, HELPID_HORZSCROLLSTYLES }, ! 1232: {DID_ICONSTYLES, HELPID_ICONSTYLES }, ! 1233: {DID_LISTBOXSTYLES, HELPID_LISTBOXSTYLES }, ! 1234: {DID_NEWCUST, HELPID_NEWCUST }, ! 1235: {DID_PUSHBUTTONSTYLES, HELPID_PUSHBUTTONSTYLES }, ! 1236: {DID_RADIOBUTTONSTYLES, HELPID_RADIOBUTTONSTYLES }, ! 1237: {DID_RECTSTYLES, HELPID_RECTSTYLES }, ! 1238: {DID_REMCUST, HELPID_REMCUST }, ! 1239: {DID_SELECTDIALOG, HELPID_SELECTDIALOG }, ! 1240: {DID_SYMBOLS, HELPID_SYMBOLS }, ! 1241: {DID_TEXTSTYLES, HELPID_TEXTSTYLES }, ! 1242: {DID_VERTSCROLLSTYLES, HELPID_VERTSCROLLSTYLES }, ! 1243: ! 1244: {DID_COMMONFILEOPENINCLUDE, HELPID_COMMONFILEOPENINCLUDE }, ! 1245: {DID_COMMONFILEOPENRES, HELPID_COMMONFILEOPENRES }, ! 1246: {DID_COMMONFILESAVEINCLUDE, HELPID_COMMONFILESAVEINCLUDE }, ! 1247: {DID_COMMONFILESAVERES, HELPID_COMMONFILESAVERES }, ! 1248: {DID_COMMONFILEOPENDLL, HELPID_COMMONFILEOPENDLL }, ! 1249: ! 1250: {DID_TOOLBOX, HELPID_TOOLBOX }, ! 1251: {DID_STATUS, HELPID_PROPERTIESBAR }, ! 1252: ! 1253: {0, 0 } ! 1254: }; ! 1255: ! 1256: ! 1257: /* ! 1258: * Language and Sub Language tables. ! 1259: */ ! 1260: ! 1261: static SUBLANGTABLE aslNeutral[] = { ! 1262: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1263: { SUBLANG_DEFAULT, IDS_SUBLANG_DEFAULT, IDS_SL_DEFAULT } ! 1264: }; ! 1265: ! 1266: static SUBLANGTABLE aslChinese[] = { ! 1267: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1268: { SUBLANG_CHINESE_SIMPLIFIED, IDS_SUBLANG_CHINESE_SIMPLIFIED, IDS_SL_CHINESE_SIMPLIFIED }, ! 1269: { SUBLANG_CHINESE_TRADITIONAL, IDS_SUBLANG_CHINESE_TRADITIONAL, IDS_SL_CHINESE_TRADITIONAL } ! 1270: }; ! 1271: ! 1272: static SUBLANGTABLE aslDutch[] = { ! 1273: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1274: { SUBLANG_DUTCH, IDS_SUBLANG_DUTCH, IDS_SL_DUTCH }, ! 1275: { SUBLANG_DUTCH_BELGIAN,IDS_SUBLANG_DUTCH_BELGIAN, IDS_SL_DUTCH_BELGIAN} ! 1276: }; ! 1277: ! 1278: static SUBLANGTABLE aslEnglish[] = { ! 1279: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1280: { SUBLANG_ENGLISH_US, IDS_SUBLANG_ENGLISH_US, IDS_SL_ENGLISH_US }, ! 1281: { SUBLANG_ENGLISH_UK, IDS_SUBLANG_ENGLISH_UK, IDS_SL_ENGLISH_UK }, ! 1282: { SUBLANG_ENGLISH_AUS, IDS_SUBLANG_ENGLISH_AUS, IDS_SL_ENGLISH_AUS }, ! 1283: { SUBLANG_ENGLISH_CAN, IDS_SUBLANG_ENGLISH_CAN, IDS_SL_ENGLISH_CAN } ! 1284: }; ! 1285: ! 1286: static SUBLANGTABLE aslFrench[] = { ! 1287: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1288: { SUBLANG_FRENCH, IDS_SUBLANG_FRENCH, IDS_SL_FRENCH }, ! 1289: { SUBLANG_FRENCH_BELGIAN, IDS_SUBLANG_FRENCH_BELGIAN, IDS_SL_FRENCH_BELGIAN }, ! 1290: { SUBLANG_FRENCH_CANADIAN, IDS_SUBLANG_FRENCH_CANADIAN, IDS_SL_FRENCH_CANADIAN }, ! 1291: { SUBLANG_FRENCH_SWISS, IDS_SUBLANG_FRENCH_SWISS, IDS_SL_FRENCH_SWISS } ! 1292: }; ! 1293: ! 1294: static SUBLANGTABLE aslGerman[] = { ! 1295: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1296: { SUBLANG_GERMAN, IDS_SUBLANG_GERMAN, IDS_SL_GERMAN }, ! 1297: { SUBLANG_GERMAN_SWISS, IDS_SUBLANG_GERMAN_SWISS, IDS_SL_GERMAN_SWISS } ! 1298: }; ! 1299: ! 1300: static SUBLANGTABLE aslItalian[] = { ! 1301: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1302: { SUBLANG_ITALIAN, IDS_SUBLANG_ITALIAN, IDS_SL_ITALIAN }, ! 1303: { SUBLANG_ITALIAN_SWISS, IDS_SUBLANG_ITALIAN_SWISS, IDS_SL_ITALIAN_SWISS } ! 1304: }; ! 1305: ! 1306: static SUBLANGTABLE aslNorwegian[] = { ! 1307: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1308: { SUBLANG_NORWEGIAN_BOKMAL, IDS_SUBLANG_NORWEGIAN_BOKMAL, IDS_SL_NORWEGIAN_BOKMAL }, ! 1309: { SUBLANG_NORWEGIAN_NYNORSK, IDS_SUBLANG_NORWEGIAN_NYNORSK, IDS_SL_NORWEGIAN_NYNORSK } ! 1310: }; ! 1311: ! 1312: static SUBLANGTABLE aslPortuguese[] = { ! 1313: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1314: { SUBLANG_PORTUGUESE, IDS_SUBLANG_PORTUGUESE, IDS_SL_PORTUGUESE }, ! 1315: { SUBLANG_PORTUGUESE_BRAZILIAN, IDS_SUBLANG_PORTUGUESE_BRAZILIAN, IDS_SL_PORTUGUESE_BRAZILIAN } ! 1316: }; ! 1317: ! 1318: static SUBLANGTABLE aslSerboCroatian[] = { ! 1319: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1320: { SUBLANG_SERBO_CROATIAN_CYRILLIC, IDS_SUBLANG_SERBO_CROATIAN_CYRILLIC, IDS_SL_SERBO_CROATIAN_CYRILLIC }, ! 1321: { SUBLANG_SERBO_CROATIAN_LATIN, IDS_SUBLANG_SERBO_CROATIAN_LATIN, IDS_SL_SERBO_CROATIAN_LATIN } ! 1322: }; ! 1323: ! 1324: static SUBLANGTABLE aslSpanish[] = { ! 1325: { SUBLANG_NEUTRAL, IDS_SUBLANG_NEUTRAL, IDS_SL_NEUTRAL }, ! 1326: { SUBLANG_SPANISH, IDS_SUBLANG_SPANISH, IDS_SL_SPANISH }, ! 1327: { SUBLANG_SPANISH_MEXICAN, IDS_SUBLANG_SPANISH_MEXICAN, IDS_SL_SPANISH_MEXICAN }, ! 1328: { SUBLANG_SPANISH_MODERN, IDS_SUBLANG_SPANISH_MODERN, IDS_SL_SPANISH_MODERN } ! 1329: }; ! 1330: ! 1331: ! 1332: LANGTABLE gaLangTable[] = { ! 1333: { LANG_NEUTRAL, IDS_LANG_NEUTRAL, IDS_L_NEUTRAL, ! 1334: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1335: { LANG_ALBANIAN, IDS_LANG_ALBANIAN, IDS_L_ALBANIAN, ! 1336: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1337: { LANG_ARABIC, IDS_LANG_ARABIC, IDS_L_ARABIC, ! 1338: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1339: { LANG_BAHASA, IDS_LANG_BAHASA, IDS_L_BAHASA, ! 1340: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1341: { LANG_BULGARIAN, IDS_LANG_BULGARIAN, IDS_L_BULGARIAN, ! 1342: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1343: { LANG_CATALAN, IDS_LANG_CATALAN, IDS_L_CATALAN, ! 1344: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1345: { LANG_CHINESE, IDS_LANG_CHINESE, IDS_L_CHINESE, ! 1346: sizeof(aslChinese) / sizeof(SUBLANGTABLE), aslChinese }, ! 1347: { LANG_CZECH, IDS_LANG_CZECH, IDS_L_CZECH, ! 1348: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1349: { LANG_DANISH, IDS_LANG_DANISH, IDS_L_DANISH, ! 1350: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1351: { LANG_DUTCH, IDS_LANG_DUTCH, IDS_L_DUTCH, ! 1352: sizeof(aslDutch) / sizeof(SUBLANGTABLE), aslDutch }, ! 1353: { LANG_ENGLISH, IDS_LANG_ENGLISH, IDS_L_ENGLISH, ! 1354: sizeof(aslEnglish) / sizeof(SUBLANGTABLE), aslEnglish }, ! 1355: { LANG_FINNISH, IDS_LANG_FINNISH, IDS_L_FINNISH, ! 1356: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1357: { LANG_FRENCH, IDS_LANG_FRENCH, IDS_L_FRENCH, ! 1358: sizeof(aslFrench) / sizeof(SUBLANGTABLE), aslFrench }, ! 1359: { LANG_GERMAN, IDS_LANG_GERMAN, IDS_L_GERMAN, ! 1360: sizeof(aslGerman) / sizeof(SUBLANGTABLE), aslGerman }, ! 1361: { LANG_GREEK, IDS_LANG_GREEK, IDS_L_GREEK, ! 1362: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1363: { LANG_HEBREW, IDS_LANG_HEBREW, IDS_L_HEBREW, ! 1364: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1365: { LANG_HUNGARIAN, IDS_LANG_HUNGARIAN, IDS_L_HUNGARIAN, ! 1366: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1367: { LANG_ICELANDIC, IDS_LANG_ICELANDIC, IDS_L_ICELANDIC, ! 1368: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1369: { LANG_ITALIAN, IDS_LANG_ITALIAN, IDS_L_ITALIAN, ! 1370: sizeof(aslItalian) / sizeof(SUBLANGTABLE), aslItalian }, ! 1371: { LANG_JAPANESE, IDS_LANG_JAPANESE, IDS_L_JAPANESE, ! 1372: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1373: { LANG_KOREAN, IDS_LANG_KOREAN, IDS_L_KOREAN, ! 1374: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1375: { LANG_NORWEGIAN, IDS_LANG_NORWEGIAN, IDS_L_NORWEGIAN, ! 1376: sizeof(aslNorwegian) / sizeof(SUBLANGTABLE), aslNorwegian }, ! 1377: { LANG_POLISH, IDS_LANG_POLISH, IDS_L_POLISH, ! 1378: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1379: { LANG_PORTUGUESE, IDS_LANG_PORTUGUESE, IDS_L_PORTUGUESE, ! 1380: sizeof(aslPortuguese) / sizeof(SUBLANGTABLE), aslPortuguese }, ! 1381: { LANG_RHAETO_ROMAN, IDS_LANG_RHAETO_ROMAN, IDS_L_RHAETO_ROMAN, ! 1382: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1383: { LANG_ROMANIAN, IDS_LANG_ROMANIAN, IDS_L_ROMANIAN, ! 1384: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1385: { LANG_RUSSIAN, IDS_LANG_RUSSIAN, IDS_L_RUSSIAN, ! 1386: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1387: { LANG_SERBO_CROATIAN, IDS_LANG_SERBO_CROATIAN, IDS_L_SERBO_CROATIAN, ! 1388: sizeof(aslSerboCroatian) / sizeof(SUBLANGTABLE), aslSerboCroatian }, ! 1389: { LANG_SLOVAK, IDS_LANG_SLOVAK, IDS_L_SLOVAK, ! 1390: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1391: { LANG_SPANISH, IDS_LANG_SPANISH, IDS_L_SPANISH, ! 1392: sizeof(aslSpanish) / sizeof(SUBLANGTABLE), aslSpanish }, ! 1393: { LANG_SWEDISH, IDS_LANG_SWEDISH, IDS_L_SWEDISH, ! 1394: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1395: { LANG_THAI, IDS_LANG_THAI, IDS_L_THAI, ! 1396: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1397: { LANG_TURKISH, IDS_LANG_TURKISH, IDS_L_TURKISH, ! 1398: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral }, ! 1399: { LANG_URDU, IDS_LANG_URDU, IDS_L_URDU, ! 1400: sizeof(aslNeutral) / sizeof(SUBLANGTABLE), aslNeutral } ! 1401: }; ! 1402: ! 1403: INT gcLanguages = sizeof(gaLangTable) / sizeof(LANGTABLE); ! 1404: ! 1405: ! 1406:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.