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