|
|
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: styles.c ! 14: * ! 15: * Handles the control styles selection, including the styles dialogs. ! 16: * ! 17: * Functions: ! 18: * ! 19: * StylesDialog() ! 20: * GenericStylesDlgProc() ! 21: * CheckBoxStylesDlgProc() ! 22: * RadioButtonStylesDlgProc() ! 23: * PushButtonStylesDlgProc() ! 24: * ComboBoxStylesDlgProc() ! 25: * EditStylesDlgProc() ! 26: * ListBoxStylesDlgProc() ! 27: * CustomStylesDlgProc() ! 28: * DialogStylesDlgProc() ! 29: * FontNameEnumFunc() ! 30: * PointSizeEnumFunc() ! 31: * EnableComboBoxStyles() ! 32: * EnableEditStyles() ! 33: * EnableListBoxStyles() ! 34: * SetCustomStylesField() ! 35: * GetCustomStylesField() ! 36: * EnableDialogStyles() ! 37: * FillFontNameCombo() ! 38: * FillPointSizeCombo() ! 39: * AddToPointSizeCombo() ! 40: * FillLanguageCombo() ! 41: * FillSubLanguageCombo() ! 42: * CheckStyleBoxes() ! 43: * QueryCheckedStyles() ! 44: * StylesHelp() ! 45: * ! 46: * Comments: ! 47: * ! 48: ****************************************************************************/ ! 49: ! 50: #include "dlgedit.h" ! 51: #include "dlgfuncs.h" ! 52: #include "dlgextrn.h" ! 53: #include "dialogs.h" ! 54: ! 55: ! 56: STATICFN VOID EnableComboBoxStyles(HWND hwnd, INT idCtrl); ! 57: STATICFN VOID EnableEditStyles(HWND hwnd, INT idCtrl); ! 58: STATICFN VOID EnableListBoxStyles(HWND hwnd, INT idCtrl); ! 59: STATICFN VOID SetCustomStylesField(HWND hwnd, DWORD flStyle); ! 60: STATICFN DWORD GetCustomStylesField(HWND hwnd); ! 61: STATICFN VOID EnableDialogStyles(HWND hwnd, INT idCtrl); ! 62: STATICFN VOID FillFontNameCombo(HWND hwndDlg); ! 63: STATICFN VOID FillPointSizeCombo(HWND hwndDlg, LPTSTR pszFaceName); ! 64: STATICFN VOID AddToPointSizeCombo(HWND hwndCombo, INT nPointSize); ! 65: STATICFN VOID FillLanguageCombo(HWND hwndDlg); ! 66: STATICFN VOID FillSubLanguageCombo(HWND hwndDlg, INT iLang); ! 67: STATICFN VOID CheckStyleBoxes(HWND hwnd, INT iClass, DWORD flStyle); ! 68: STATICFN VOID QueryCheckedStyles(HWND hwnd, INT iClass, DWORD *pflStyle); ! 69: STATICFN VOID StylesHelp(VOID); ! 70: ! 71: /* ! 72: * Global pointer to the CTYPE for the control or dialog whose styles ! 73: * are being worked on. All the styles dialog procs and workers use ! 74: * this pointer. ! 75: */ ! 76: static NPCTYPE npcStyles; ! 77: ! 78: /* ! 79: * Globals that receive the new styles the user selected. ! 80: */ ! 81: static DWORD flStyleNew; ! 82: static DWORD flExtStyleNew; ! 83: static LPTSTR pszTextNew; ! 84: static DIALOGINFO diNew; ! 85: ! 86: ! 87: ! 88: /************************************************************************ ! 89: * StylesDialog ! 90: * ! 91: * Displays the appropriate styles dialog for the currently selected ! 92: * control. If the user OK's the changes, this function sets the ! 93: * style of the control. ! 94: * ! 95: ************************************************************************/ ! 96: ! 97: VOID StylesDialog(VOID) ! 98: { ! 99: NPCTYPE npc; ! 100: HWND hwndOld; ! 101: INT fDlgResult; ! 102: BOOL fChanged = FALSE; ! 103: BOOL fFontChanged = FALSE; ! 104: TCHAR szClassNew[CCHTEXTMAX]; ! 105: TCHAR szMenuNew[CCHTEXTMAX]; ! 106: TCHAR szTextNew[CCHTEXTMAX]; ! 107: ! 108: /* ! 109: * Quit if nothing was selected, or if we are in translate mode. ! 110: */ ! 111: if (!gnpcSel || gfTranslateMode) ! 112: return; ! 113: ! 114: /* ! 115: * Set globals that the styles dialogs and worker routines will use. ! 116: */ ! 117: npcStyles = gnpcSel; ! 118: flStyleNew = npcStyles->flStyle; ! 119: flExtStyleNew = npcStyles->flExtStyle; ! 120: ! 121: if (npcStyles->text) ! 122: NameOrdCpy(szTextNew, npcStyles->text); ! 123: else ! 124: *szTextNew = CHAR_NULL; ! 125: ! 126: pszTextNew = szTextNew; ! 127: ! 128: /* ! 129: * Set some other globals if this is the dialog instead of a control. ! 130: */ ! 131: if (gfDlgSelected) { ! 132: diNew.fResFlags = gcd.di.fResFlags; ! 133: diNew.wLanguage = gcd.di.wLanguage; ! 134: diNew.DataVersion = gcd.di.DataVersion; ! 135: diNew.Version = gcd.di.Version; ! 136: diNew.Characteristics = gcd.di.Characteristics; ! 137: ! 138: lstrcpy(diNew.szFontName, gcd.di.szFontName); ! 139: diNew.nPointSize = gcd.di.nPointSize; ! 140: ! 141: diNew.pszClass = szClassNew; ! 142: if (gcd.di.pszClass) ! 143: NameOrdCpy(szClassNew, gcd.di.pszClass); ! 144: else ! 145: *szClassNew = CHAR_NULL; ! 146: ! 147: diNew.pszMenu = szMenuNew; ! 148: if (gcd.di.pszMenu) ! 149: NameOrdCpy(szMenuNew, gcd.di.pszMenu); ! 150: else ! 151: *szMenuNew = CHAR_NULL; ! 152: } ! 153: ! 154: /* ! 155: * Is this a custom control that has a styles proc to use? ! 156: */ ! 157: if (npcStyles->pwcd->iType == W_CUSTOM && npcStyles->pwcd->lpfnStyle) { ! 158: fDlgResult = CallCustomStyle(npcStyles, &flStyleNew, &flExtStyleNew, ! 159: szTextNew); ! 160: } ! 161: else { ! 162: /* ! 163: * Show the appropriate styles dialog. ! 164: */ ! 165: fDlgResult = DlgBox(npcStyles->pwcd->idStylesDialog, ! 166: (WNDPROC)npcStyles->pwcd->pfnStylesDlgProc); ! 167: } ! 168: ! 169: if (fDlgResult == IDOK) { ! 170: /* ! 171: * Now go through and determine if anything was really changed. ! 172: */ ! 173: if (npcStyles->flStyle != flStyleNew || ! 174: npcStyles->flExtStyle != flExtStyleNew || ! 175: NameOrdCmp(npcStyles->text ? ! 176: npcStyles->text : szEmpty, szTextNew) != 0) ! 177: fChanged = TRUE; ! 178: ! 179: /* ! 180: * If this is the dialog, check if some other things were changed. ! 181: */ ! 182: if (gfDlgSelected) { ! 183: if (gcd.di.fResFlags != diNew.fResFlags || ! 184: gcd.di.wLanguage != diNew.wLanguage || ! 185: NameOrdCmp(gcd.di.pszClass ? ! 186: gcd.di.pszClass : szEmpty, diNew.pszClass) != 0 || ! 187: NameOrdCmp(gcd.di.pszMenu ? ! 188: gcd.di.pszMenu : szEmpty, diNew.pszMenu) != 0) ! 189: fChanged = TRUE; ! 190: ! 191: if (lstrcmp(gcd.di.szFontName, diNew.szFontName) != 0 || ! 192: (*diNew.szFontName && ! 193: gcd.di.nPointSize != diNew.nPointSize)) ! 194: fChanged = fFontChanged = TRUE; ! 195: } ! 196: } ! 197: ! 198: /* ! 199: * Did something change? ! 200: */ ! 201: if (fChanged) { ! 202: if (gfDlgSelected) { ! 203: hwndOld = npcStyles->hwnd; ! 204: CreateControl(npcStyles, pszTextNew, flStyleNew, flExtStyleNew, ! 205: npcStyles->id, &npcStyles->rc, (HWND)NULL, &diNew); ! 206: ! 207: /* ! 208: * Create all the control windows in the new dialog. ! 209: * They must be created (not just moved over by changing ! 210: * the parent and owner) because some controls have ! 211: * allocated memory on the old dialogs heap, and this ! 212: * heap will become invalid after the old dialog ! 213: * is destroyed below. ! 214: */ ! 215: for (npc = npcHead; npc; npc = npc->npcNext) { ! 216: /* ! 217: * If this is an icon control and the dialog font ! 218: * was just changed, we need to resize the control ! 219: * based on the new default icon size. ! 220: */ ! 221: if (npc->pwcd->iType == W_ICON && fFontChanged) { ! 222: npc->rc.right = npc->rc.left + awcd[W_ICON].cxDefault; ! 223: npc->rc.bottom = npc->rc.top + awcd[W_ICON].cyDefault; ! 224: } ! 225: ! 226: CreateControl(npc, npc->text, npc->flStyle, npc->flExtStyle, ! 227: npc->id, &npc->rc, (HWND)NULL, NULL); ! 228: } ! 229: ! 230: /* ! 231: * Now move all the drag windows over to the new dialog. ! 232: * This must be done after creating all the controls ! 233: * because of the touchy Z-order that the drag windows ! 234: * and the controls must have for painting and selection ! 235: * of the drag windows to work properly. Note that we ! 236: * rely on SetParent to add the window at ! 237: * the TOP in Z-order. ! 238: */ ! 239: for (npc = npcHead; npc; npc = npc->npcNext) { ! 240: SetParent(npc->hwndDrag, npcStyles->hwnd); ! 241: ! 242: /* ! 243: * Adjust the position of the drag window. ! 244: */ ! 245: SizeDragToControl(npc); ! 246: } ! 247: ! 248: ShowWindow(npcStyles->hwnd, SW_SHOWNA); ! 249: ToolboxOnTop(); ! 250: DestroyWindow(hwndOld); ! 251: } ! 252: else { ! 253: hwndOld = npcStyles->hwnd; ! 254: ! 255: if (CreateControl(npcStyles, pszTextNew, flStyleNew, flExtStyleNew, ! 256: npcStyles->id, &npcStyles->rc, hwndOld, NULL)) { ! 257: /* ! 258: * Get rid of the old control window. ! 259: */ ! 260: DestroyWindow(hwndOld); ! 261: ! 262: /* ! 263: * Adjust the size and position of its drag window. ! 264: */ ! 265: SizeDragToControl(npcStyles); ! 266: } ! 267: } ! 268: ! 269: gfResChged = gfDlgChanged = TRUE; ! 270: ShowFileStatus(FALSE); ! 271: StatusUpdate(); ! 272: StatusSetEnable(); ! 273: } ! 274: } ! 275: ! 276: ! 277: ! 278: /************************************************************************ ! 279: * GenericStylesDlgProc ! 280: * ! 281: * Dialog procedure for styles. ! 282: * ! 283: ************************************************************************/ ! 284: ! 285: DIALOGPROC GenericStylesDlgProc( ! 286: HWND hwnd, ! 287: UINT msg, ! 288: WPARAM wParam, ! 289: LPARAM lParam) ! 290: { ! 291: switch (msg) { ! 292: case WM_INITDIALOG: ! 293: CheckStyleBoxes(hwnd, npcStyles->pwcd->iClass, ! 294: npcStyles->flStyle); ! 295: CheckStyleBoxes(hwnd, IC_WINDOW, npcStyles->flStyle); ! 296: ! 297: CenterWindow(hwnd); ! 298: ! 299: return TRUE; ! 300: ! 301: case WM_COMMAND: ! 302: switch (LOWORD(wParam)) { ! 303: case IDOK: ! 304: QueryCheckedStyles(hwnd, npcStyles->pwcd->iClass, ! 305: &flStyleNew); ! 306: QueryCheckedStyles(hwnd, IC_WINDOW, &flStyleNew); ! 307: EndDialog(hwnd, IDOK); ! 308: return TRUE; ! 309: ! 310: case IDCANCEL: ! 311: EndDialog(hwnd, IDCANCEL); ! 312: return TRUE; ! 313: ! 314: case IDHELP: ! 315: StylesHelp(); ! 316: break; ! 317: } ! 318: ! 319: return FALSE; ! 320: ! 321: default: ! 322: return FALSE; ! 323: } ! 324: } ! 325: ! 326: ! 327: ! 328: /************************************************************************ ! 329: * CheckBoxStylesDlgProc ! 330: * ! 331: * Dialog procedure for checkboxes. ! 332: * ! 333: ************************************************************************/ ! 334: ! 335: DIALOGPROC CheckBoxStylesDlgProc( ! 336: HWND hwnd, ! 337: UINT msg, ! 338: WPARAM wParam, ! 339: LPARAM lParam) ! 340: { ! 341: DWORD dwType; ! 342: BOOL f3State; ! 343: BOOL fAuto; ! 344: ! 345: switch (msg) { ! 346: case WM_INITDIALOG: ! 347: CheckStyleBoxes(hwnd, npcStyles->pwcd->iClass, ! 348: npcStyles->flStyle); ! 349: CheckStyleBoxes(hwnd, IC_WINDOW, npcStyles->flStyle); ! 350: ! 351: dwType = npcStyles->flStyle & BS_ALL; ! 352: if (dwType == BS_AUTOCHECKBOX || dwType == BS_AUTO3STATE) ! 353: CheckDlgButton(hwnd, DID_BS_AUTOXXX, 1); ! 354: ! 355: if (dwType == BS_3STATE || dwType == BS_AUTO3STATE) ! 356: CheckDlgButton(hwnd, DID_BS_3STATE, 1); ! 357: ! 358: CenterWindow(hwnd); ! 359: ! 360: return TRUE; ! 361: ! 362: case WM_COMMAND: ! 363: switch (LOWORD(wParam)) { ! 364: case IDOK: ! 365: QueryCheckedStyles(hwnd, npcStyles->pwcd->iClass, ! 366: &flStyleNew); ! 367: QueryCheckedStyles(hwnd, IC_WINDOW, &flStyleNew); ! 368: ! 369: fAuto = IsDlgButtonChecked(hwnd, DID_BS_AUTOXXX); ! 370: f3State = IsDlgButtonChecked(hwnd, DID_BS_3STATE); ! 371: flStyleNew &= ~BS_ALL; ! 372: if (fAuto) { ! 373: if (f3State) ! 374: flStyleNew |= BS_AUTO3STATE; ! 375: else ! 376: flStyleNew |= BS_AUTOCHECKBOX; ! 377: } ! 378: else { ! 379: if (f3State) ! 380: flStyleNew |= BS_3STATE; ! 381: else ! 382: flStyleNew |= BS_CHECKBOX; ! 383: } ! 384: ! 385: EndDialog(hwnd, IDOK); ! 386: return TRUE; ! 387: ! 388: case IDCANCEL: ! 389: EndDialog(hwnd, IDCANCEL); ! 390: return TRUE; ! 391: ! 392: case IDHELP: ! 393: StylesHelp(); ! 394: break; ! 395: } ! 396: ! 397: return FALSE; ! 398: ! 399: default: ! 400: return FALSE; ! 401: } ! 402: } ! 403: ! 404: ! 405: ! 406: /************************************************************************ ! 407: * RadioButtonStylesDlgProc ! 408: * ! 409: * Dialog box procedure for radio buttons. ! 410: * ! 411: ************************************************************************/ ! 412: ! 413: DIALOGPROC RadioButtonStylesDlgProc( ! 414: HWND hwnd, ! 415: UINT msg, ! 416: WPARAM wParam, ! 417: LPARAM lParam) ! 418: { ! 419: switch (msg) { ! 420: case WM_INITDIALOG: ! 421: CheckStyleBoxes(hwnd, npcStyles->pwcd->iClass, ! 422: npcStyles->flStyle); ! 423: CheckStyleBoxes(hwnd, IC_WINDOW, npcStyles->flStyle); ! 424: ! 425: if ((npcStyles->flStyle & BS_ALL) == BS_AUTORADIOBUTTON) ! 426: CheckDlgButton(hwnd, DID_BS_AUTOXXX, 1); ! 427: ! 428: CenterWindow(hwnd); ! 429: ! 430: return TRUE; ! 431: ! 432: case WM_COMMAND: ! 433: switch (LOWORD(wParam)) { ! 434: case IDOK: ! 435: QueryCheckedStyles(hwnd, npcStyles->pwcd->iClass, ! 436: &flStyleNew); ! 437: QueryCheckedStyles(hwnd, IC_WINDOW, &flStyleNew); ! 438: ! 439: flStyleNew &= ~BS_ALL; ! 440: if (IsDlgButtonChecked(hwnd, DID_BS_AUTOXXX)) ! 441: flStyleNew |= BS_AUTORADIOBUTTON; ! 442: else ! 443: flStyleNew |= BS_RADIOBUTTON; ! 444: ! 445: EndDialog(hwnd, IDOK); ! 446: return TRUE; ! 447: ! 448: case IDCANCEL: ! 449: EndDialog(hwnd, IDCANCEL); ! 450: return TRUE; ! 451: ! 452: case IDHELP: ! 453: StylesHelp(); ! 454: break; ! 455: } ! 456: ! 457: return FALSE; ! 458: ! 459: default: ! 460: return FALSE; ! 461: } ! 462: } ! 463: ! 464: ! 465: ! 466: /************************************************************************ ! 467: * PushButtonStylesDlgProc ! 468: * ! 469: * We do not normally allow more than one default push button in a ! 470: * dialog. but if this button is already a default button, we must ! 471: * allow them to change it to a normal one, even if there is already ! 472: * another default button in the dialog. Note that this condition ! 473: * would normally never happen, unless they read in a res file with ! 474: * this condition already. ! 475: * ! 476: ************************************************************************/ ! 477: ! 478: DIALOGPROC PushButtonStylesDlgProc( ! 479: HWND hwnd, ! 480: UINT msg, ! 481: WPARAM wParam, ! 482: LPARAM lParam) ! 483: { ! 484: NPCTYPE npc; ! 485: ! 486: switch (msg) { ! 487: case WM_INITDIALOG: ! 488: CheckStyleBoxes(hwnd, npcStyles->pwcd->iClass, ! 489: npcStyles->flStyle); ! 490: CheckStyleBoxes(hwnd, IC_WINDOW, npcStyles->flStyle); ! 491: ! 492: /* ! 493: * Only test for possibly disabling the "default" ! 494: * checkbox if the current control does not have the ! 495: * "default" style. If it does, we must always allow ! 496: * them to turn it off. ! 497: */ ! 498: if ((npcStyles->flStyle & BS_ALL) != BS_DEFPUSHBUTTON) { ! 499: /* ! 500: * Loop through all the controls. If any pushbutton ! 501: * is found with the "default" style, we disable the ! 502: * "Default" checkbox in the styles dialog. ! 503: */ ! 504: for (npc = npcHead; npc; npc = npc->npcNext) ! 505: if ((npc->pwcd->iType == W_PUSHBUTTON) && ! 506: (npc->flStyle & BS_ALL) == BS_DEFPUSHBUTTON) { ! 507: EnableWindow(GetDlgItem(hwnd, DID_BS_DEFPUSHBUTTON), ! 508: FALSE); ! 509: break; ! 510: } ! 511: } ! 512: ! 513: CenterWindow(hwnd); ! 514: ! 515: return TRUE; ! 516: ! 517: case WM_COMMAND: ! 518: switch (LOWORD(wParam)) { ! 519: case IDOK: ! 520: QueryCheckedStyles(hwnd, npcStyles->pwcd->iClass, ! 521: &flStyleNew); ! 522: QueryCheckedStyles(hwnd, IC_WINDOW, &flStyleNew); ! 523: ! 524: EndDialog(hwnd, IDOK); ! 525: return TRUE; ! 526: ! 527: case IDCANCEL: ! 528: EndDialog(hwnd, IDCANCEL); ! 529: return TRUE; ! 530: ! 531: case IDHELP: ! 532: StylesHelp(); ! 533: break; ! 534: } ! 535: ! 536: return FALSE; ! 537: ! 538: default: ! 539: return FALSE; ! 540: } ! 541: } ! 542: ! 543: ! 544: ! 545: /************************************************************************ ! 546: * ComboBoxStylesDlgProc ! 547: * ! 548: * Dialog procedure for combo boxes. ! 549: * ! 550: ************************************************************************/ ! 551: ! 552: DIALOGPROC ComboBoxStylesDlgProc( ! 553: HWND hwnd, ! 554: UINT msg, ! 555: WPARAM wParam, ! 556: LPARAM lParam) ! 557: { ! 558: switch (msg) { ! 559: case WM_INITDIALOG: ! 560: CheckStyleBoxes(hwnd, npcStyles->pwcd->iClass, ! 561: npcStyles->flStyle); ! 562: CheckStyleBoxes(hwnd, IC_WINDOW, npcStyles->flStyle); ! 563: ! 564: EnableComboBoxStyles(hwnd, 0); ! 565: ! 566: CenterWindow(hwnd); ! 567: ! 568: return TRUE; ! 569: ! 570: case WM_COMMAND: ! 571: switch (LOWORD(wParam)) { ! 572: case DID_CBS_OWNERDRAWFIXED: ! 573: case DID_CBS_OWNERDRAWVARIABLE: ! 574: if (HIWORD(wParam) == BN_CLICKED) ! 575: EnableComboBoxStyles(hwnd, ! 576: LOWORD(wParam)); ! 577: ! 578: return TRUE; ! 579: ! 580: case IDOK: ! 581: QueryCheckedStyles(hwnd, npcStyles->pwcd->iClass, ! 582: &flStyleNew); ! 583: QueryCheckedStyles(hwnd, IC_WINDOW, &flStyleNew); ! 584: EndDialog(hwnd, IDOK); ! 585: return TRUE; ! 586: ! 587: case IDCANCEL: ! 588: EndDialog(hwnd, IDCANCEL); ! 589: return TRUE; ! 590: ! 591: case IDHELP: ! 592: StylesHelp(); ! 593: break; ! 594: } ! 595: ! 596: return FALSE; ! 597: ! 598: default: ! 599: return FALSE; ! 600: } ! 601: } ! 602: ! 603: ! 604: ! 605: /************************************************************************ ! 606: * EnableComboBoxStyles ! 607: * ! 608: * Checks/unchecks, disables/enables various checkboxes that are ! 609: * mutually exclusive and/or dependant for the Combo Box Styles dialog. ! 610: * ! 611: * Arguments: ! 612: * HWND hwnd - Dialog window handle. ! 613: * INT idCtrl - ID of the control that was clicked on. ! 614: * ! 615: ************************************************************************/ ! 616: ! 617: STATICFN VOID EnableComboBoxStyles( ! 618: HWND hwnd, ! 619: INT idCtrl) ! 620: { ! 621: BOOL fFixedChecked; ! 622: BOOL fVariableChecked; ! 623: ! 624: fFixedChecked = IsDlgButtonChecked(hwnd, DID_CBS_OWNERDRAWFIXED); ! 625: fVariableChecked = IsDlgButtonChecked(hwnd, DID_CBS_OWNERDRAWVARIABLE); ! 626: ! 627: if (fFixedChecked || fVariableChecked) { ! 628: EnableWindow(GetDlgItem(hwnd, DID_CBS_HASSTRINGS), TRUE); ! 629: } ! 630: else { ! 631: EnableWindow(GetDlgItem(hwnd, DID_CBS_HASSTRINGS), FALSE); ! 632: CheckDlgButton(hwnd, DID_CBS_HASSTRINGS, 0); ! 633: } ! 634: ! 635: switch (idCtrl) { ! 636: case DID_CBS_OWNERDRAWFIXED: ! 637: if (fFixedChecked) ! 638: CheckDlgButton(hwnd, DID_CBS_OWNERDRAWVARIABLE, 0); ! 639: ! 640: break; ! 641: ! 642: case DID_CBS_OWNERDRAWVARIABLE: ! 643: if (fVariableChecked) ! 644: CheckDlgButton(hwnd, DID_CBS_OWNERDRAWFIXED, 0); ! 645: ! 646: break; ! 647: } ! 648: } ! 649: ! 650: ! 651: ! 652: /************************************************************************ ! 653: * EditStylesDlgProc ! 654: * ! 655: * Dialog procedure for edit boxes. ! 656: * ! 657: ************************************************************************/ ! 658: ! 659: DIALOGPROC EditStylesDlgProc( ! 660: HWND hwnd, ! 661: UINT msg, ! 662: WPARAM wParam, ! 663: LPARAM lParam) ! 664: { ! 665: switch (msg) { ! 666: case WM_INITDIALOG: ! 667: CheckStyleBoxes(hwnd, npcStyles->pwcd->iClass, ! 668: npcStyles->flStyle); ! 669: CheckStyleBoxes(hwnd, IC_WINDOW, npcStyles->flStyle); ! 670: ! 671: EnableEditStyles(hwnd, 0); ! 672: ! 673: CenterWindow(hwnd); ! 674: ! 675: return TRUE; ! 676: ! 677: case WM_COMMAND: ! 678: switch (LOWORD(wParam)) { ! 679: case DID_ES_UPPERCASE: ! 680: case DID_ES_LOWERCASE: ! 681: case DID_ES_MULTILINE: ! 682: if (HIWORD(wParam) == BN_CLICKED) ! 683: EnableEditStyles(hwnd, ! 684: LOWORD(wParam)); ! 685: ! 686: return TRUE; ! 687: ! 688: case IDOK: ! 689: QueryCheckedStyles(hwnd, npcStyles->pwcd->iClass, ! 690: &flStyleNew); ! 691: QueryCheckedStyles(hwnd, IC_WINDOW, &flStyleNew); ! 692: EndDialog(hwnd, IDOK); ! 693: return TRUE; ! 694: ! 695: case IDCANCEL: ! 696: EndDialog(hwnd, IDCANCEL); ! 697: return TRUE; ! 698: ! 699: case IDHELP: ! 700: StylesHelp(); ! 701: break; ! 702: } ! 703: ! 704: return FALSE; ! 705: ! 706: default: ! 707: return FALSE; ! 708: } ! 709: } ! 710: ! 711: ! 712: ! 713: /************************************************************************ ! 714: * EnableEditStyles ! 715: * ! 716: * Checks/unchecks, disables/enables various checkboxes that are ! 717: * mutually exclusive and/or dependant for the Edit Field Styles dialog. ! 718: * ! 719: * Arguments: ! 720: * HWND hwnd - Dialog window handle. ! 721: * INT idCtrl - ID of the control that was clicked on. ! 722: * ! 723: ************************************************************************/ ! 724: ! 725: STATICFN VOID EnableEditStyles( ! 726: HWND hwnd, ! 727: INT idCtrl) ! 728: { ! 729: if (IsDlgButtonChecked(hwnd, DID_ES_MULTILINE)) { ! 730: EnableWindow(GetDlgItem(hwnd, DID_ES_CENTER), TRUE); ! 731: EnableWindow(GetDlgItem(hwnd, DID_ES_RIGHT), TRUE); ! 732: EnableWindow(GetDlgItem(hwnd, DID_WS_VSCROLL), TRUE); ! 733: EnableWindow(GetDlgItem(hwnd, DID_ES_AUTOVSCROLL), TRUE); ! 734: EnableWindow(GetDlgItem(hwnd, DID_WS_HSCROLL), TRUE); ! 735: } ! 736: else { ! 737: EnableWindow(GetDlgItem(hwnd, DID_ES_CENTER), FALSE); ! 738: EnableWindow(GetDlgItem(hwnd, DID_ES_RIGHT), FALSE); ! 739: EnableWindow(GetDlgItem(hwnd, DID_WS_VSCROLL), FALSE); ! 740: EnableWindow(GetDlgItem(hwnd, DID_ES_AUTOVSCROLL), FALSE); ! 741: EnableWindow(GetDlgItem(hwnd, DID_WS_HSCROLL), FALSE); ! 742: ! 743: CheckDlgButton(hwnd, DID_ES_LEFT, 1); ! 744: CheckDlgButton(hwnd, DID_ES_CENTER, 0); ! 745: CheckDlgButton(hwnd, DID_ES_RIGHT, 0); ! 746: CheckDlgButton(hwnd, DID_WS_VSCROLL, 0); ! 747: CheckDlgButton(hwnd, DID_ES_AUTOVSCROLL, 0); ! 748: CheckDlgButton(hwnd, DID_WS_HSCROLL, 0); ! 749: } ! 750: ! 751: if (idCtrl == DID_ES_UPPERCASE) { ! 752: if (IsDlgButtonChecked(hwnd, DID_ES_UPPERCASE)) ! 753: CheckDlgButton(hwnd, DID_ES_LOWERCASE, 0); ! 754: } ! 755: else if (idCtrl == DID_ES_LOWERCASE) { ! 756: if (IsDlgButtonChecked(hwnd, DID_ES_LOWERCASE)) ! 757: CheckDlgButton(hwnd, DID_ES_UPPERCASE, 0); ! 758: } ! 759: } ! 760: ! 761: ! 762: ! 763: /************************************************************************ ! 764: * ListBoxStylesDlgProc ! 765: * ! 766: * Dialog procedure for list boxes. ! 767: * ! 768: ************************************************************************/ ! 769: ! 770: DIALOGPROC ListBoxStylesDlgProc( ! 771: HWND hwnd, ! 772: UINT msg, ! 773: WPARAM wParam, ! 774: LPARAM lParam) ! 775: { ! 776: switch (msg) { ! 777: case WM_INITDIALOG: ! 778: CheckStyleBoxes(hwnd, npcStyles->pwcd->iClass, ! 779: npcStyles->flStyle); ! 780: CheckStyleBoxes(hwnd, IC_WINDOW, npcStyles->flStyle); ! 781: ! 782: EnableListBoxStyles(hwnd, 0); ! 783: ! 784: CenterWindow(hwnd); ! 785: ! 786: return TRUE; ! 787: ! 788: case WM_COMMAND: ! 789: switch (LOWORD(wParam)) { ! 790: case DID_LBS_STANDARD: ! 791: case DID_LBS_NOTIFY: ! 792: case DID_LBS_SORT: ! 793: case DID_WS_VSCROLL: ! 794: case DID_WS_BORDER: ! 795: case DID_LBS_MULTIPLESEL: ! 796: case DID_LBS_EXTENDEDSEL: ! 797: case DID_LBS_OWNERDRAWFIXED: ! 798: case DID_LBS_OWNERDRAWVARIABLE: ! 799: case DID_LBS_NODATA: ! 800: case DID_LBS_HASSTRINGS: ! 801: if (HIWORD(wParam) == BN_CLICKED) ! 802: EnableListBoxStyles(hwnd, ! 803: LOWORD(wParam)); ! 804: ! 805: return TRUE; ! 806: ! 807: case IDOK: ! 808: QueryCheckedStyles(hwnd, npcStyles->pwcd->iClass, ! 809: &flStyleNew); ! 810: QueryCheckedStyles(hwnd, IC_WINDOW, &flStyleNew); ! 811: EndDialog(hwnd, IDOK); ! 812: return TRUE; ! 813: ! 814: case IDCANCEL: ! 815: EndDialog(hwnd, IDCANCEL); ! 816: return TRUE; ! 817: ! 818: case IDHELP: ! 819: StylesHelp(); ! 820: break; ! 821: } ! 822: ! 823: return FALSE; ! 824: ! 825: default: ! 826: return FALSE; ! 827: } ! 828: } ! 829: ! 830: ! 831: ! 832: /************************************************************************ ! 833: * EnableListBoxStyles ! 834: * ! 835: * Checks/unchecks, disables/enables various checkboxes that are ! 836: * mutually exclusive and/or dependant for the List Box Styles dialog. ! 837: * ! 838: * Arguments: ! 839: * HWND hwnd - Dialog window handle. ! 840: * INT idCtrl - ID of the control that was clicked on. ! 841: * ! 842: ************************************************************************/ ! 843: ! 844: STATICFN VOID EnableListBoxStyles( ! 845: HWND hwnd, ! 846: INT idCtrl) ! 847: { ! 848: WORD fCheckState; ! 849: BOOL fFixedChecked; ! 850: BOOL fVariableChecked; ! 851: ! 852: fFixedChecked = IsDlgButtonChecked(hwnd, DID_LBS_OWNERDRAWFIXED); ! 853: fVariableChecked = IsDlgButtonChecked(hwnd, DID_LBS_OWNERDRAWVARIABLE); ! 854: ! 855: if (fFixedChecked || fVariableChecked) { ! 856: EnableWindow(GetDlgItem(hwnd, DID_LBS_HASSTRINGS), TRUE); ! 857: } ! 858: else { ! 859: EnableWindow(GetDlgItem(hwnd, DID_LBS_HASSTRINGS), FALSE); ! 860: CheckDlgButton(hwnd, DID_LBS_HASSTRINGS, 0); ! 861: } ! 862: ! 863: EnableWindow(GetDlgItem(hwnd, DID_LBS_NODATA), fFixedChecked); ! 864: ! 865: switch (idCtrl) { ! 866: case DID_LBS_STANDARD: ! 867: fCheckState = (WORD)(IsDlgButtonChecked(hwnd, DID_LBS_STANDARD) ! 868: ? 1 : 0); ! 869: CheckDlgButton(hwnd, DID_LBS_NOTIFY, fCheckState); ! 870: CheckDlgButton(hwnd, DID_LBS_SORT, fCheckState); ! 871: CheckDlgButton(hwnd, DID_WS_VSCROLL, fCheckState); ! 872: CheckDlgButton(hwnd, DID_WS_BORDER, fCheckState); ! 873: ! 874: if (fCheckState) ! 875: CheckDlgButton(hwnd, DID_LBS_NODATA, 0); ! 876: ! 877: break; ! 878: ! 879: case DID_LBS_OWNERDRAWFIXED: ! 880: if (fFixedChecked) ! 881: CheckDlgButton(hwnd, DID_LBS_OWNERDRAWVARIABLE, 0); ! 882: else ! 883: CheckDlgButton(hwnd, DID_LBS_NODATA, 0); ! 884: ! 885: break; ! 886: ! 887: case DID_LBS_OWNERDRAWVARIABLE: ! 888: if (fVariableChecked) { ! 889: CheckDlgButton(hwnd, DID_LBS_OWNERDRAWFIXED, 0); ! 890: CheckDlgButton(hwnd, DID_LBS_NODATA, 0); ! 891: EnableWindow(GetDlgItem(hwnd, DID_LBS_NODATA), FALSE); ! 892: } ! 893: ! 894: break; ! 895: ! 896: case DID_LBS_MULTIPLESEL: ! 897: if (IsDlgButtonChecked(hwnd, DID_LBS_MULTIPLESEL)) ! 898: CheckDlgButton(hwnd, DID_LBS_EXTENDEDSEL, 0); ! 899: ! 900: break; ! 901: ! 902: case DID_LBS_EXTENDEDSEL: ! 903: if (IsDlgButtonChecked(hwnd, DID_LBS_EXTENDEDSEL)) ! 904: CheckDlgButton(hwnd, DID_LBS_MULTIPLESEL, 0); ! 905: ! 906: break; ! 907: ! 908: case DID_LBS_NODATA: ! 909: if (IsDlgButtonChecked(hwnd, DID_LBS_NODATA)) { ! 910: CheckDlgButton(hwnd, DID_LBS_SORT, 0); ! 911: CheckDlgButton(hwnd, DID_LBS_HASSTRINGS, 0); ! 912: CheckDlgButton(hwnd, DID_LBS_STANDARD, 0); ! 913: } ! 914: ! 915: break; ! 916: ! 917: case DID_LBS_HASSTRINGS: ! 918: if (IsDlgButtonChecked(hwnd, DID_LBS_HASSTRINGS)) ! 919: CheckDlgButton(hwnd, DID_LBS_NODATA, 0); ! 920: ! 921: break; ! 922: ! 923: default: ! 924: if (!IsDlgButtonChecked(hwnd, DID_LBS_NOTIFY) || ! 925: !IsDlgButtonChecked(hwnd, DID_LBS_SORT) || ! 926: !IsDlgButtonChecked(hwnd, DID_WS_VSCROLL) || ! 927: !IsDlgButtonChecked(hwnd, DID_WS_BORDER)) ! 928: fCheckState = 0; ! 929: else ! 930: fCheckState = 1; ! 931: ! 932: CheckDlgButton(hwnd, DID_LBS_STANDARD, fCheckState); ! 933: ! 934: if (IsDlgButtonChecked(hwnd, DID_LBS_SORT) || ! 935: IsDlgButtonChecked(hwnd, DID_LBS_HASSTRINGS)) ! 936: CheckDlgButton(hwnd, DID_LBS_NODATA, 0); ! 937: ! 938: break; ! 939: } ! 940: } ! 941: ! 942: ! 943: ! 944: /************************************************************************ ! 945: * CustomStylesDlgProc ! 946: * ! 947: * Dialog procedure for custom controls. ! 948: * ! 949: ************************************************************************/ ! 950: ! 951: DIALOGPROC CustomStylesDlgProc( ! 952: HWND hwnd, ! 953: UINT msg, ! 954: WPARAM wParam, ! 955: LPARAM lParam) ! 956: { ! 957: switch (msg) { ! 958: case WM_INITDIALOG: ! 959: SetDlgItemText(hwnd, DID_CUSTOMSTYLESCLASS, ! 960: npcStyles->pwcd->pszClass); ! 961: SendDlgItemMessage(hwnd, DID_CUSTOMSTYLESSTYLES, EM_LIMITTEXT, ! 962: CCHHEXLONGMAX, 0L); ! 963: SetCustomStylesField(hwnd, npcStyles->flStyle); ! 964: CheckStyleBoxes(hwnd, IC_WINDOW, npcStyles->flStyle); ! 965: ! 966: CenterWindow(hwnd); ! 967: ! 968: return TRUE; ! 969: ! 970: case WM_COMMAND: ! 971: switch (LOWORD(wParam)) { ! 972: case DID_CUSTOMSTYLESSTYLES: ! 973: if (HIWORD(wParam) == EN_CHANGE) { ! 974: flStyleNew = GetCustomStylesField(hwnd); ! 975: CheckStyleBoxes(hwnd, IC_WINDOW, flStyleNew); ! 976: } ! 977: ! 978: break; ! 979: ! 980: case DID_WS_VISIBLE: ! 981: case DID_WS_DISABLED: ! 982: case DID_WS_GROUP: ! 983: case DID_WS_TABSTOP: ! 984: if (HIWORD(wParam) == BN_CLICKED) { ! 985: flStyleNew = GetCustomStylesField(hwnd); ! 986: QueryCheckedStyles(hwnd, IC_WINDOW, &flStyleNew); ! 987: SetCustomStylesField(hwnd, flStyleNew); ! 988: } ! 989: ! 990: break; ! 991: ! 992: case IDOK: ! 993: flStyleNew = GetCustomStylesField(hwnd); ! 994: ! 995: EndDialog(hwnd, IDOK); ! 996: ! 997: return TRUE; ! 998: ! 999: case IDCANCEL: ! 1000: EndDialog(hwnd, IDCANCEL); ! 1001: return TRUE; ! 1002: ! 1003: case IDHELP: ! 1004: StylesHelp(); ! 1005: break; ! 1006: } ! 1007: ! 1008: return FALSE; ! 1009: ! 1010: default: ! 1011: return FALSE; ! 1012: } ! 1013: } ! 1014: ! 1015: ! 1016: ! 1017: /************************************************************************ ! 1018: * SetCustomStylesField ! 1019: * ! 1020: * Sets the style bits in a custom control. ! 1021: * ! 1022: * Arguments: ! 1023: * HWND hwnd - handle to the custom control ! 1024: * DWORD flStyle - style of the custom control ! 1025: * ! 1026: ************************************************************************/ ! 1027: ! 1028: STATICFN VOID SetCustomStylesField( ! 1029: HWND hwnd, ! 1030: DWORD flStyle) ! 1031: { ! 1032: TCHAR szBuf[32]; ! 1033: ! 1034: wsprintf(szBuf, L"%#.8lx", flStyle); ! 1035: SetDlgItemText(hwnd, DID_CUSTOMSTYLESSTYLES, szBuf); ! 1036: } ! 1037: ! 1038: ! 1039: ! 1040: /************************************************************************ ! 1041: * GetCustomStylesField ! 1042: * ! 1043: * Gets the style bits of a custom control. ! 1044: * ! 1045: * Arguments: ! 1046: * HWND hwnd - handle to the custom control. ! 1047: * ! 1048: * Returns: ! 1049: * ! 1050: * The style bits specified for the custom control. ! 1051: * ! 1052: ************************************************************************/ ! 1053: ! 1054: STATICFN DWORD GetCustomStylesField( ! 1055: HWND hwnd) ! 1056: { ! 1057: TCHAR szBuf[CCHTEXTMAX]; ! 1058: ! 1059: GetDlgItemText(hwnd, DID_CUSTOMSTYLESSTYLES, szBuf, CCHTEXTMAX); ! 1060: ! 1061: return valtoi(szBuf); ! 1062: } ! 1063: ! 1064: ! 1065: ! 1066: /************************************************************************ ! 1067: * DialogStylesDlgProc ! 1068: * ! 1069: * Dialog procedure for a dialog box. ! 1070: * ! 1071: ************************************************************************/ ! 1072: ! 1073: DIALOGPROC DialogStylesDlgProc( ! 1074: HWND hwnd, ! 1075: UINT msg, ! 1076: WPARAM wParam, ! 1077: LPARAM lParam) ! 1078: { ! 1079: DWORD flResFlagsNew; ! 1080: INT nPointSize; ! 1081: INT iLang; ! 1082: INT iSubLang; ! 1083: TCHAR szFontName[LF_FACESIZE]; ! 1084: INT nIndex; ! 1085: ! 1086: switch (msg) { ! 1087: case WM_INITDIALOG: ! 1088: CheckStyleBoxes(hwnd, IC_RESFLAGS, (DWORD)diNew.fResFlags); ! 1089: CheckStyleBoxes(hwnd, IC_DIALOG, npcStyles->flStyle); ! 1090: CheckStyleBoxes(hwnd, IC_WINDOW, npcStyles->flStyle); ! 1091: ! 1092: if (IsDlgButtonChecked(hwnd, DID_WS_CAPTION)) { ! 1093: CheckDlgButton(hwnd, DID_WS_BORDER, 1); ! 1094: CheckDlgButton(hwnd, DID_WS_DLGFRAME, 1); ! 1095: } ! 1096: ! 1097: FillFontNameCombo(hwnd); ! 1098: FillLanguageCombo(hwnd); ! 1099: ! 1100: if (IsOrd(diNew.pszClass)) ! 1101: SetDlgItemInt(hwnd, DID_DLGSTYLECLASS, ! 1102: OrdID(diNew.pszClass), FALSE); ! 1103: else ! 1104: SetDlgItemText(hwnd, DID_DLGSTYLECLASS, diNew.pszClass); ! 1105: ! 1106: if (IsOrd(diNew.pszMenu)) ! 1107: SetDlgItemInt(hwnd, DID_DLGSTYLEMENU, ! 1108: OrdID(diNew.pszMenu), FALSE); ! 1109: else ! 1110: SetDlgItemText(hwnd, DID_DLGSTYLEMENU, diNew.pszMenu); ! 1111: ! 1112: EnableDialogStyles(hwnd, 0); ! 1113: ! 1114: CenterWindow(hwnd); ! 1115: ! 1116: return TRUE; ! 1117: ! 1118: case WM_COMMAND: ! 1119: switch (LOWORD(wParam)) { ! 1120: case DID_WS_BORDER: ! 1121: case DID_WS_DLGFRAME: ! 1122: case DID_WS_CAPTION: ! 1123: case DID_WS_POPUP: ! 1124: case DID_WS_CHILD: ! 1125: if (HIWORD(wParam) == BN_CLICKED) ! 1126: EnableDialogStyles(hwnd, ! 1127: LOWORD(wParam)); ! 1128: ! 1129: return TRUE; ! 1130: ! 1131: case DID_DLGSTYLEFONTNAME: ! 1132: /* ! 1133: * Did the font name combo change? ! 1134: */ ! 1135: if (HIWORD(wParam) == CBN_EDITCHANGE || ! 1136: HIWORD(wParam) == CBN_SELCHANGE) { ! 1137: /* ! 1138: * Get the font name and begin looking for it. ! 1139: */ ! 1140: if (HIWORD(wParam) == CBN_EDITCHANGE) { ! 1141: /* ! 1142: * The edit field was typed into. Get the ! 1143: * new text from there. ! 1144: */ ! 1145: GetDlgItemText(hwnd, DID_DLGSTYLEFONTNAME, ! 1146: szFontName, LF_FACESIZE); ! 1147: } ! 1148: else { ! 1149: /* ! 1150: * A new string was selected from the list ! 1151: * box. Get it from the list box, because ! 1152: * at this point the new text is not yet set ! 1153: * into the edit control! ! 1154: */ ! 1155: nIndex = (INT)SendDlgItemMessage(hwnd, ! 1156: DID_DLGSTYLEFONTNAME, CB_GETCURSEL, 0, 0L); ! 1157: ! 1158: if (nIndex != CB_ERR) ! 1159: SendDlgItemMessage(hwnd, ! 1160: DID_DLGSTYLEFONTNAME, CB_GETLBTEXT, ! 1161: nIndex, (DWORD)szFontName); ! 1162: else ! 1163: *szFontName = CHAR_NULL; ! 1164: } ! 1165: ! 1166: FillPointSizeCombo(hwnd, szFontName); ! 1167: } ! 1168: ! 1169: return TRUE; ! 1170: ! 1171: case DID_DLGSTYLELANG: ! 1172: /* ! 1173: * Did the language combo change? ! 1174: */ ! 1175: if (HIWORD(wParam) == CBN_SELCHANGE) { ! 1176: nIndex = (INT)SendDlgItemMessage(hwnd, ! 1177: DID_DLGSTYLELANG, CB_GETCURSEL, 0, 0L); ! 1178: iLang = (INT)SendDlgItemMessage(hwnd, ! 1179: DID_DLGSTYLELANG, CB_GETITEMDATA, nIndex, 0); ! 1180: FillSubLanguageCombo(hwnd, iLang); ! 1181: } ! 1182: ! 1183: return TRUE; ! 1184: ! 1185: case IDOK: ! 1186: /* ! 1187: * If they have entered a font name and an empty ! 1188: * or zero point size, display an error. ! 1189: */ ! 1190: nPointSize = GetDlgItemInt( ! 1191: hwnd, DID_DLGSTYLEPOINTSIZE, NULL, FALSE); ! 1192: if (!nPointSize && ! 1193: SendDlgItemMessage(hwnd, ! 1194: DID_DLGSTYLEFONTNAME, WM_GETTEXTLENGTH, 0, 0L)) { ! 1195: Message(MSG_ZEROPOINTSIZE); ! 1196: SetFocus(GetDlgItem(hwnd, DID_DLGSTYLEPOINTSIZE)); ! 1197: return TRUE; ! 1198: } ! 1199: ! 1200: GetDlgItemText(hwnd, DID_DLGSTYLEFONTNAME, ! 1201: diNew.szFontName, LF_FACESIZE); ! 1202: diNew.nPointSize = nPointSize; ! 1203: ! 1204: /* ! 1205: * Get the Language. ! 1206: */ ! 1207: nIndex = (INT)SendDlgItemMessage(hwnd, ! 1208: DID_DLGSTYLELANG, CB_GETCURSEL, 0, 0L); ! 1209: iLang = (INT)SendDlgItemMessage(hwnd, ! 1210: DID_DLGSTYLELANG, CB_GETITEMDATA, ! 1211: nIndex, 0); ! 1212: nIndex = (INT)SendDlgItemMessage(hwnd, ! 1213: DID_DLGSTYLESUBLANG, CB_GETCURSEL, 0, 0L); ! 1214: iSubLang = (INT)SendDlgItemMessage(hwnd, ! 1215: DID_DLGSTYLESUBLANG, CB_GETITEMDATA, ! 1216: nIndex, 0); ! 1217: diNew.wLanguage = MAKELANGID(gaLangTable[iLang].wPrimary, ! 1218: gaLangTable[iLang].asl[iSubLang].wSubLang); ! 1219: ! 1220: /* ! 1221: * Get the resource flags. We need to use a temporary ! 1222: * long variable because QueryCheckedStyles requires ! 1223: * a long. ! 1224: */ ! 1225: flResFlagsNew = diNew.fResFlags; ! 1226: QueryCheckedStyles(hwnd, IC_RESFLAGS, &flResFlagsNew); ! 1227: diNew.fResFlags = (WORD)flResFlagsNew; ! 1228: ! 1229: QueryCheckedStyles(hwnd, IC_DIALOG, &flStyleNew); ! 1230: QueryCheckedStyles(hwnd, IC_WINDOW, &flStyleNew); ! 1231: ! 1232: /* ! 1233: * Set the DS_SETFONT style, if they specified ! 1234: * a font. ! 1235: */ ! 1236: if (*diNew.szFontName) ! 1237: flStyleNew |= DS_SETFONT; ! 1238: else ! 1239: flStyleNew &= ~DS_SETFONT; ! 1240: ! 1241: GetDlgItemText(hwnd, DID_DLGSTYLECLASS, ! 1242: diNew.pszClass, CCHTEXTMAX); ! 1243: ! 1244: /* ! 1245: * Convert the class to an ordinal, if necessary. ! 1246: */ ! 1247: StrToNameOrd(diNew.pszClass, FALSE); ! 1248: ! 1249: GetDlgItemText(hwnd, DID_DLGSTYLEMENU, ! 1250: diNew.pszMenu, CCHTEXTMAX); ! 1251: ! 1252: /* ! 1253: * Convert the menu name to an ordinal, if necessary. ! 1254: */ ! 1255: StrToNameOrd(diNew.pszMenu, FALSE); ! 1256: ! 1257: /* ! 1258: * If they just removed the caption style, ! 1259: * clear the dialog's caption text at the ! 1260: * same time. ! 1261: */ ! 1262: if ((npcStyles->flStyle & WS_CAPTION) == WS_CAPTION && ! 1263: (flStyleNew & WS_CAPTION) != WS_CAPTION) ! 1264: *pszTextNew = CHAR_NULL; ! 1265: ! 1266: EndDialog(hwnd, IDOK); ! 1267: return TRUE; ! 1268: ! 1269: case IDCANCEL: ! 1270: EndDialog(hwnd, IDCANCEL); ! 1271: return TRUE; ! 1272: ! 1273: case IDHELP: ! 1274: StylesHelp(); ! 1275: break; ! 1276: } ! 1277: ! 1278: return FALSE; ! 1279: ! 1280: default: ! 1281: return FALSE; ! 1282: } ! 1283: } ! 1284: ! 1285: ! 1286: ! 1287: /************************************************************************ ! 1288: * EnableDialogStyles ! 1289: * ! 1290: * Checks and unchecks various checkboxes that are mutually exclusive ! 1291: * for the Dialog Styles dialog. ! 1292: * ! 1293: * Arguments: ! 1294: * HWND hwnd - Dialog window handle. ! 1295: * INT idCtrl - ID of the control that was clicked on. ! 1296: * ! 1297: ************************************************************************/ ! 1298: ! 1299: STATICFN VOID EnableDialogStyles( ! 1300: HWND hwnd, ! 1301: INT idCtrl) ! 1302: { ! 1303: switch (idCtrl) { ! 1304: case DID_WS_CAPTION: ! 1305: if (IsDlgButtonChecked(hwnd, DID_WS_CAPTION)) { ! 1306: CheckDlgButton(hwnd, DID_WS_BORDER, 1); ! 1307: CheckDlgButton(hwnd, DID_WS_DLGFRAME, 1); ! 1308: } ! 1309: else { ! 1310: CheckDlgButton(hwnd, DID_WS_BORDER, 0); ! 1311: CheckDlgButton(hwnd, DID_WS_DLGFRAME, 0); ! 1312: } ! 1313: ! 1314: break; ! 1315: ! 1316: case DID_WS_BORDER: ! 1317: case DID_WS_DLGFRAME: ! 1318: if (IsDlgButtonChecked(hwnd, DID_WS_BORDER) && ! 1319: IsDlgButtonChecked(hwnd, DID_WS_DLGFRAME)) ! 1320: CheckDlgButton(hwnd, DID_WS_CAPTION, 1); ! 1321: else ! 1322: CheckDlgButton(hwnd, DID_WS_CAPTION, 0); ! 1323: ! 1324: break; ! 1325: ! 1326: case DID_WS_CHILD: ! 1327: if (IsDlgButtonChecked(hwnd, DID_WS_CHILD)) ! 1328: CheckDlgButton(hwnd, DID_WS_POPUP, 0); ! 1329: ! 1330: break; ! 1331: ! 1332: case DID_WS_POPUP: ! 1333: if (IsDlgButtonChecked(hwnd, DID_WS_POPUP)) ! 1334: CheckDlgButton(hwnd, DID_WS_CHILD, 0); ! 1335: ! 1336: break; ! 1337: } ! 1338: } ! 1339: ! 1340: ! 1341: ! 1342: /************************************************************************ ! 1343: * FillFontNameCombo ! 1344: * ! 1345: * Fills combo box with available fonts for dialog. ! 1346: * ! 1347: * Arguments: ! 1348: * HWND hwndDlg - Dialog window handle. ! 1349: * ! 1350: ************************************************************************/ ! 1351: ! 1352: STATICFN VOID FillFontNameCombo( ! 1353: HWND hwndDlg) ! 1354: { ! 1355: HDC hDC; ! 1356: HWND hwndCombo; ! 1357: TCHAR szName1[LF_FACESIZE]; ! 1358: TCHAR szName2[LF_FACESIZE]; ! 1359: LPTSTR pszName; ! 1360: LPTSTR pszNameLast; ! 1361: LPTSTR pszNameTemp; ! 1362: INT iIndex; ! 1363: INT iItems; ! 1364: ! 1365: hwndCombo = GetDlgItem(hwndDlg, DID_DLGSTYLEFONTNAME); ! 1366: ! 1367: if (hDC = GetDC(ghwndMain)) { ! 1368: EnumFonts(hDC, NULL, (FONTENUMPROC) FontNameEnumFunc, (LPARAM)&hwndCombo); ! 1369: ReleaseDC(ghwndMain, hDC); ! 1370: } ! 1371: ! 1372: /* ! 1373: * Strip out any duplicate names in the combobox. This routine ! 1374: * relies on the items being sorted first. ! 1375: */ ! 1376: iItems = (INT)SendMessage(hwndCombo, CB_GETCOUNT, 0, 0); ! 1377: *szName1 = CHAR_NULL; ! 1378: *szName2 = CHAR_NULL; ! 1379: pszName = szName1; ! 1380: pszNameLast = szName2; ! 1381: for (iIndex = 0; iIndex < iItems;) { ! 1382: /* ! 1383: * Get the text of the next item. ! 1384: */ ! 1385: SendMessage(hwndCombo, CB_GETLBTEXT, iIndex, (DWORD)pszName); ! 1386: ! 1387: /* ! 1388: * If it matches the previous item, delete it. Otherwise, ! 1389: * flip the buffers to save the current items text and ! 1390: * go on to the next item. ! 1391: */ ! 1392: if (lstrcmp(pszName, pszNameLast) == 0) { ! 1393: SendMessage(hwndCombo, CB_DELETESTRING, iIndex, 0); ! 1394: iItems--; ! 1395: } ! 1396: else { ! 1397: pszNameTemp = pszNameLast; ! 1398: pszNameLast = pszName; ! 1399: pszName = pszNameTemp; ! 1400: iIndex++; ! 1401: } ! 1402: } ! 1403: ! 1404: /* ! 1405: * Initialize the font fields. The order the fields are set ! 1406: * is important, because setting the face name clears out the ! 1407: * point size combo. ! 1408: */ ! 1409: SetDlgItemText(hwndDlg, DID_DLGSTYLEFONTNAME, diNew.szFontName); ! 1410: FillPointSizeCombo(hwndDlg, diNew.szFontName); ! 1411: } ! 1412: ! 1413: ! 1414: ! 1415: /************************************************************************ ! 1416: * FontNameEnumFunc ! 1417: * ! 1418: * Enumeration function that adds all the font face names to the ! 1419: * Font Face Name combo box in the Dialog Styles dialog. ! 1420: * ! 1421: * Arguments: ! 1422: * LPLOGFONT lpLogFont - pointer to font structure ! 1423: * LPTEXTMETRIC lpTextMetric - pointer to textmetric struct for font ! 1424: * INT nFontType - type of font ! 1425: * LPVOID lpData - font data ! 1426: * ! 1427: ************************************************************************/ ! 1428: ! 1429: BOOL APIENTRY FontNameEnumFunc( ! 1430: LPLOGFONT lpLogFont, ! 1431: LPTEXTMETRIC lpTextMetric, ! 1432: INT nFontType, ! 1433: LPVOID lpData) ! 1434: { ! 1435: /* ! 1436: * Add this name to the combo box. ! 1437: */ ! 1438: SendMessage(*((LPHWND)lpData), CB_ADDSTRING, 0, ! 1439: (DWORD)lpLogFont->lfFaceName); ! 1440: ! 1441: /* ! 1442: * Keep on going... ! 1443: */ ! 1444: return TRUE; ! 1445: } ! 1446: ! 1447: ! 1448: ! 1449: /************************************************************************ ! 1450: * FillPointSizeCombo ! 1451: * ! 1452: * This function fills the Point Size combobox with the point sizes ! 1453: * that are available for the given face name. It should be called ! 1454: * whenever the Font Name combobox is changed to keep them in sync. ! 1455: * ! 1456: * Arguments: ! 1457: * HWND hwndDlg - Dialog window handle. ! 1458: * LPTSTR pszFaceName - Face name for the selected font. ! 1459: * ! 1460: ************************************************************************/ ! 1461: ! 1462: STATICFN VOID FillPointSizeCombo( ! 1463: HWND hwndDlg, ! 1464: LPTSTR pszFaceName) ! 1465: { ! 1466: HDC hDC; ! 1467: HWND hwndCombo; ! 1468: ! 1469: hwndCombo = GetDlgItem(hwndDlg, DID_DLGSTYLEPOINTSIZE); ! 1470: SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0L); ! 1471: ! 1472: if (*pszFaceName && (hDC = GetDC(ghwndMain))) { ! 1473: EnumFonts(hDC, pszFaceName, (FONTENUMPROC) PointSizeEnumFunc, (LPARAM)&hwndCombo); ! 1474: ReleaseDC(ghwndMain, hDC); ! 1475: } ! 1476: ! 1477: /* ! 1478: * Select a default one. This is the point size that is currently ! 1479: * selected if the face name is the current one, or else it is the ! 1480: * first point size in the list. ! 1481: */ ! 1482: if (gcd.fFontSpecified && lstrcmp(pszFaceName, gcd.di.szFontName) == 0) ! 1483: SetDlgItemInt(hwndDlg, DID_DLGSTYLEPOINTSIZE, gcd.di.nPointSize, FALSE); ! 1484: else ! 1485: SendDlgItemMessage(hwndDlg, DID_DLGSTYLEPOINTSIZE, ! 1486: CB_SETCURSEL, 0, 0L); ! 1487: } ! 1488: ! 1489: ! 1490: ! 1491: /************************************************************************ ! 1492: * PointSizeEnumFunc ! 1493: * ! 1494: * Enumeration function that adds all the point sizes to the ! 1495: * Pt. Size combo box in the Dialog Styles dialog. ! 1496: * ! 1497: * Arguments: ! 1498: * LPLOGFONT lpLogFont - pointer to font structure ! 1499: * LPTEXTMETRIC lpTextMetric - pointer to textmetric struct for font ! 1500: * INT nFontType - type of font ! 1501: * LPVOID lpData - font data ! 1502: * ! 1503: ************************************************************************/ ! 1504: ! 1505: BOOL APIENTRY PointSizeEnumFunc( ! 1506: LPLOGFONT lpLogFont, ! 1507: LPTEXTMETRIC lpTextMetric, ! 1508: INT nFontType, ! 1509: LPVOID lpData) ! 1510: { ! 1511: HWND hwndCombo; ! 1512: INT nPointSize; ! 1513: ! 1514: hwndCombo = *((LPHWND)lpData); ! 1515: ! 1516: if (nFontType == RASTER_FONTTYPE) { ! 1517: /* ! 1518: * Convert the pixels to point size. Note that because of the ! 1519: * definition of the tmHeight field, the tmInternalLeading has ! 1520: * to be subtracted from it before converting to get the proper ! 1521: * font point size. This is done automatically by the Windows ! 1522: * CreateFont call if you pass in a nHeight parameter that is ! 1523: * negative, so be aware of this when doing the reverse calculation ! 1524: * to create a font of the proper height! ! 1525: */ ! 1526: nPointSize = PixelsToPointSize( ! 1527: lpTextMetric->tmHeight - lpTextMetric->tmInternalLeading); ! 1528: ! 1529: AddToPointSizeCombo(hwndCombo, nPointSize); ! 1530: } ! 1531: else { ! 1532: /* ! 1533: * For scalable (TrueType, ATM or vector) fonts, add the ! 1534: * common point sizes. This list was pulled out of the ! 1535: ( commdlg.dll Font dialog. ! 1536: */ ! 1537: AddToPointSizeCombo(hwndCombo, 8); ! 1538: AddToPointSizeCombo(hwndCombo, 9); ! 1539: AddToPointSizeCombo(hwndCombo, 10); ! 1540: AddToPointSizeCombo(hwndCombo, 11); ! 1541: AddToPointSizeCombo(hwndCombo, 12); ! 1542: AddToPointSizeCombo(hwndCombo, 14); ! 1543: AddToPointSizeCombo(hwndCombo, 16); ! 1544: AddToPointSizeCombo(hwndCombo, 18); ! 1545: AddToPointSizeCombo(hwndCombo, 20); ! 1546: AddToPointSizeCombo(hwndCombo, 22); ! 1547: AddToPointSizeCombo(hwndCombo, 24); ! 1548: AddToPointSizeCombo(hwndCombo, 26); ! 1549: AddToPointSizeCombo(hwndCombo, 28); ! 1550: AddToPointSizeCombo(hwndCombo, 36); ! 1551: AddToPointSizeCombo(hwndCombo, 48); ! 1552: AddToPointSizeCombo(hwndCombo, 72); ! 1553: } ! 1554: ! 1555: /* ! 1556: * Keep on going... ! 1557: */ ! 1558: return TRUE; ! 1559: } ! 1560: ! 1561: ! 1562: ! 1563: /************************************************************************ ! 1564: * AddToPointSizeCombo ! 1565: * ! 1566: * This function adds a point size to the point size combobox. ! 1567: * It does not allow duplicate point sizes, and the sizes will ! 1568: * be inserted in order. ! 1569: * ! 1570: * Arguments: ! 1571: * HWND hwndCombo - The combobox window handle. ! 1572: * INT nPointSize - The point size to add. ! 1573: * ! 1574: ************************************************************************/ ! 1575: ! 1576: STATICFN VOID AddToPointSizeCombo( ! 1577: HWND hwndCombo, ! 1578: INT nPointSize) ! 1579: { ! 1580: TCHAR szPointSize[31]; ! 1581: INT nPoints2; ! 1582: INT iIndex; ! 1583: INT iIndexAdd; ! 1584: INT iItems; ! 1585: ! 1586: iItems = (INT)SendMessage(hwndCombo, CB_GETCOUNT, 0, 0); ! 1587: for (iIndex = 0, iIndexAdd = -1; iIndex < iItems; iIndex++) { ! 1588: nPoints2 = (INT)SendMessage(hwndCombo, CB_GETITEMDATA, iIndex, 0); ! 1589: ! 1590: if (nPoints2 == nPointSize) { ! 1591: /* ! 1592: * A duplicate was found. Skip this one. ! 1593: */ ! 1594: return; ! 1595: } ! 1596: else if (nPoints2 > nPointSize) { ! 1597: iIndexAdd = iIndex; ! 1598: break; ! 1599: } ! 1600: } ! 1601: ! 1602: /* ! 1603: * Add this point size to the combo box. ! 1604: */ ! 1605: itoaw(nPointSize, szPointSize, 10); ! 1606: iIndex = (INT)SendMessage(hwndCombo, CB_INSERTSTRING, ! 1607: iIndexAdd, (DWORD)szPointSize); ! 1608: SendMessage(hwndCombo, CB_SETITEMDATA, iIndex, (DWORD)nPointSize); ! 1609: } ! 1610: ! 1611: ! 1612: ! 1613: /************************************************************************ ! 1614: * FillLanguageCombo ! 1615: * ! 1616: * This function fills the Language combobox with the known languages. ! 1617: * ! 1618: * Arguments: ! 1619: * HWND hwndDlg - Dialog window handle. ! 1620: * ! 1621: ************************************************************************/ ! 1622: ! 1623: STATICFN VOID FillLanguageCombo( ! 1624: HWND hwndDlg) ! 1625: { ! 1626: HWND hwndCombo; ! 1627: INT i; ! 1628: INT iIndex; ! 1629: INT iSel; ! 1630: INT iLang; ! 1631: WORD wPrimary; ! 1632: ! 1633: hwndCombo = GetDlgItem(hwndDlg, DID_DLGSTYLELANG); ! 1634: SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0L); ! 1635: ! 1636: for (i = 0; i < gcLanguages; i++) { ! 1637: iIndex = (INT)SendMessage(hwndCombo, CB_ADDSTRING, ! 1638: 0, (DWORD)ids(gaLangTable[i].idsLangDesc)); ! 1639: SendMessage(hwndCombo, CB_SETITEMDATA, iIndex, (DWORD)i); ! 1640: } ! 1641: ! 1642: wPrimary = (WORD)PRIMARYLANGID(diNew.wLanguage); ! 1643: for (i = 0, iSel = 0; i < gcLanguages; i++) { ! 1644: iLang = (INT)SendMessage(hwndCombo, CB_GETITEMDATA, i, 0); ! 1645: ! 1646: if (gaLangTable[iLang].wPrimary == wPrimary) { ! 1647: iSel = i; ! 1648: break; ! 1649: } ! 1650: } ! 1651: ! 1652: SendMessage(hwndCombo, CB_SETCURSEL, iSel, 0L); ! 1653: ! 1654: FillSubLanguageCombo(hwndDlg, ! 1655: (INT)SendMessage(hwndCombo, CB_GETITEMDATA, iSel, 0)); ! 1656: } ! 1657: ! 1658: ! 1659: ! 1660: /************************************************************************ ! 1661: * FillSubLanguageCombo ! 1662: * ! 1663: * This function fills the Sub-Language combobox with the sub-languages ! 1664: * for the specified language. ! 1665: * ! 1666: * Arguments: ! 1667: * HWND hwndDlg - Dialog window handle. ! 1668: * INT iLang - Index to the language in the language table. ! 1669: * ! 1670: ************************************************************************/ ! 1671: ! 1672: STATICFN VOID FillSubLanguageCombo( ! 1673: HWND hwndDlg, ! 1674: INT iLang) ! 1675: { ! 1676: HWND hwndCombo; ! 1677: INT i; ! 1678: INT iIndex; ! 1679: INT iSel = 0; ! 1680: WORD wSubLang; ! 1681: ! 1682: hwndCombo = GetDlgItem(hwndDlg, DID_DLGSTYLESUBLANG); ! 1683: SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0L); ! 1684: ! 1685: for (i = 0; i < gaLangTable[iLang].cSubLangs; i++) { ! 1686: iIndex = (INT)SendMessage(hwndCombo, CB_ADDSTRING, 0, ! 1687: (DWORD)ids(gaLangTable[iLang].asl[i].idsSubLangDesc)); ! 1688: SendMessage(hwndCombo, CB_SETITEMDATA, iIndex, (DWORD)i); ! 1689: } ! 1690: ! 1691: /* ! 1692: * Is this the language set for the dialog? If so, find the ! 1693: * sublanguage and make that the default. ! 1694: */ ! 1695: if (gaLangTable[iLang].wPrimary == (WORD)PRIMARYLANGID(diNew.wLanguage)) { ! 1696: wSubLang = SUBLANGID(diNew.wLanguage); ! 1697: for (i = 0; i < gaLangTable[iLang].cSubLangs; i++) { ! 1698: iIndex = (INT)SendMessage(hwndCombo, CB_GETITEMDATA, i, 0); ! 1699: if (wSubLang == gaLangTable[iLang].asl[iIndex].wSubLang) { ! 1700: iSel = i; ! 1701: break; ! 1702: } ! 1703: } ! 1704: } ! 1705: ! 1706: SendMessage(hwndCombo, CB_SETCURSEL, iSel, 0L); ! 1707: } ! 1708: ! 1709: ! 1710: ! 1711: /************************************************************************ ! 1712: * CheckStyleBoxes ! 1713: * ! 1714: * This function takes the given style and checks the appropriate ! 1715: * check boxes and radio buttons in the styles dialog. The iClass ! 1716: * determines the lookup table to use. ! 1717: * ! 1718: * Arguments: ! 1719: * HWND hwnd - Dialog window handle. ! 1720: * INT iClass - Control class (determines the style lookup table). ! 1721: * DWORD flStyle - Style of the control. ! 1722: * ! 1723: ************************************************************************/ ! 1724: ! 1725: STATICFN VOID CheckStyleBoxes( ! 1726: HWND hwnd, ! 1727: INT iClass, ! 1728: DWORD flStyle) ! 1729: { ! 1730: register INT i; ! 1731: PCLASSSTYLE pcs; ! 1732: HWND hwndControl; ! 1733: DWORD flStyleMask; ! 1734: ! 1735: i = acsd[iClass].cClassStyles; ! 1736: pcs = acsd[iClass].pacs; ! 1737: ! 1738: while (i--) { ! 1739: /* ! 1740: * Is there a DID_* defined for this style? ! 1741: */ ! 1742: if (pcs->idControl) { ! 1743: /* ! 1744: * Does the dialog have a control with this id? ! 1745: */ ! 1746: if (hwndControl = GetDlgItem(hwnd, pcs->idControl)) { ! 1747: flStyleMask = ! 1748: pcs->flStyleMask ? pcs->flStyleMask : pcs->flStyle; ! 1749: ! 1750: /* ! 1751: * If there is a match, check the box. Otherwise, ! 1752: * uncheck it. ! 1753: */ ! 1754: SendMessage(hwndControl, BM_SETCHECK, ! 1755: ((flStyle & flStyleMask) == pcs->flStyle) ? 1 : 0, ! 1756: 0L); ! 1757: } ! 1758: } ! 1759: ! 1760: pcs++; ! 1761: } ! 1762: } ! 1763: ! 1764: ! 1765: ! 1766: /************************************************************************ ! 1767: * QueryCheckedStyles ! 1768: * ! 1769: * This function returns the new style that the user has selected from ! 1770: * dialog. It reads all the checkboxes and builds up the style. ! 1771: * Upon entry, the DWORD that is at pflStyle should be set to the ! 1772: * original style for the control. Chosen bits will be masked off ! 1773: * and set as appropriate. This allows bits that are not settable ! 1774: * from within this styles dialog to be left untouched. ! 1775: * ! 1776: * Arguments: ! 1777: * HWND hwnd - Dialog window handle. ! 1778: * INT iClass - Control class (determines the style lookup table). ! 1779: * DWORD *pflStyle - Where to return the style of the control. What ! 1780: * this points to should initially have the original ! 1781: * styles of the control. ! 1782: * ! 1783: ************************************************************************/ ! 1784: ! 1785: STATICFN VOID QueryCheckedStyles( ! 1786: HWND hwnd, ! 1787: INT iClass, ! 1788: DWORD *pflStyle) ! 1789: { ! 1790: register INT i; ! 1791: PCLASSSTYLE pcs; ! 1792: HWND hwndControl; ! 1793: DWORD flStyleMask; ! 1794: DWORD flStyle; ! 1795: ! 1796: /* ! 1797: * The first step is to strip off all bits that may be changed by ! 1798: * the current dialog. ! 1799: */ ! 1800: flStyle = *pflStyle; ! 1801: i = acsd[iClass].cClassStyles; ! 1802: pcs = acsd[iClass].pacs; ! 1803: while (i--) { ! 1804: /* ! 1805: * Is this a style that is settable by a dialog, and does the ! 1806: * current dialog have this style control? ! 1807: */ ! 1808: if (pcs->idControl && GetDlgItem(hwnd, pcs->idControl)) { ! 1809: flStyleMask = ! 1810: pcs->flStyleMask ? pcs->flStyleMask : pcs->flStyle; ! 1811: ! 1812: /* ! 1813: * Strip off all bits in the mask for this style. ! 1814: */ ! 1815: flStyle &= ~flStyleMask; ! 1816: } ! 1817: ! 1818: pcs++; ! 1819: } ! 1820: ! 1821: /* ! 1822: * Now we go through all bits that may be set and set any that the ! 1823: * user has selected. ! 1824: */ ! 1825: i = acsd[iClass].cClassStyles; ! 1826: pcs = acsd[iClass].pacs; ! 1827: while (i--) { ! 1828: if (pcs->idControl && ! 1829: (hwndControl = GetDlgItem(hwnd, pcs->idControl))) { ! 1830: if (SendMessage(hwndControl, BM_GETCHECK, 0, 0L)) ! 1831: flStyle |= pcs->flStyle; ! 1832: } ! 1833: ! 1834: pcs++; ! 1835: } ! 1836: ! 1837: *pflStyle = flStyle; ! 1838: } ! 1839: ! 1840: ! 1841: ! 1842: /************************************************************************ ! 1843: * StylesHelp ! 1844: * ! 1845: * This function shows the appropriate help context from any of the ! 1846: * styles dialogs. It uses the type of control in npcStyles to ! 1847: * determine what help to show. ! 1848: * ! 1849: ************************************************************************/ ! 1850: ! 1851: STATICFN VOID StylesHelp(VOID) ! 1852: { ! 1853: WinHelp(ghwndMain, gszHelpFile, HELP_CONTEXT, ! 1854: npcStyles->pwcd->HelpContext); ! 1855: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.