|
|
1.1 ! root 1: /*************************************************************************** ! 2: * * ! 3: * MODULE : Imagedlg.c * ! 4: * * ! 5: * PURPOSE : Dialog functions for ImagEdit's dialogs. * ! 6: * * ! 7: * HISTORY : 3/03/89 by LR * ! 8: * * ! 9: ***************************************************************************/ ! 10: ! 11: #include "imagedit.h" ! 12: #include "dialogs.h" ! 13: #include "iehelp.h" ! 14: ! 15: ! 16: STATICFN BOOL NEAR NewImageOK(HWND hwnd, INT iType); ! 17: STATICFN VOID NEAR SelectImageInit(HWND hwnd); ! 18: STATICFN BOOL NEAR SelectImageOK(HWND hwnd); ! 19: ! 20: ! 21: ! 22: /************************************************************************ ! 23: * DlgBox ! 24: * ! 25: * This function basically does a DialogBox. ! 26: * ! 27: * Arguments: ! 28: * INT idDlg = Ordinal name of the dialog. ! 29: * WNDPROC lpfnDlg = Dialog procedure to use (this function will ! 30: * call Make/FreeProcInstance). ! 31: * ! 32: * Returns: ! 33: * What DialogBox returned. ! 34: * ! 35: * History: ! 36: * ! 37: ************************************************************************/ ! 38: ! 39: INT DlgBox( ! 40: INT idDlg, ! 41: WNDPROC lpfnDlg) ! 42: { ! 43: WNDPROC lpfnDlgInst; ! 44: INT nResult; ! 45: INT idPrevDlg; ! 46: ! 47: EnteringDialog(idDlg, &idPrevDlg, TRUE); ! 48: lpfnDlgInst = (WNDPROC)MakeProcInstance((FARPROC)lpfnDlg, ghInst); ! 49: nResult = DialogBox(ghInst, MAKEINTRESOURCE(idDlg), ! 50: ghwndMain, lpfnDlgInst); ! 51: FreeProcInstance(lpfnDlgInst); ! 52: EnteringDialog(idPrevDlg, NULL, FALSE); ! 53: ! 54: return nResult; ! 55: } ! 56: ! 57: ! 58: ! 59: /************************************************************************ ! 60: * EnteringDialog ! 61: * ! 62: * This function enables or disables things based on whether we are ! 63: * going to show one of the editor's dialogs. It must be called ! 64: * before and after showing a dialog box. ! 65: * ! 66: * Arguments: ! 67: * INT idDlg - Ordinal name of the dialog. ! 68: * PINT pidPrevDlg - Points to where to save the id of the previous ! 69: * (current) dialog. If fEntering is FALSE, this ! 70: * is not used and should be NULL. ! 71: * BOOL fEntering - TRUE if about ready to show the dialog. FALSE if ! 72: * the dialog was just dismissed. For the FALSE case, ! 73: * the idDlg should be zero, or the id of the previous ! 74: * dialog. ! 75: * ! 76: * History: ! 77: * ! 78: ************************************************************************/ ! 79: ! 80: VOID EnteringDialog( ! 81: INT idDlg, ! 82: PINT pidPrevDlg, ! 83: BOOL fEntering) ! 84: { ! 85: /* ! 86: * If we are entering a new dialog, save the previous dialog ! 87: * in the place specified. ! 88: */ ! 89: if (fEntering) ! 90: *pidPrevDlg = gidCurrentDlg; ! 91: ! 92: gidCurrentDlg = idDlg; ! 93: ! 94: if (ghwndToolbox) ! 95: EnableWindow(ghwndToolbox, !fEntering); ! 96: ! 97: if (ghwndColor) ! 98: EnableWindow(ghwndColor, !fEntering); ! 99: ! 100: if (ghwndView) ! 101: EnableWindow(ghwndView, !fEntering); ! 102: } ! 103: ! 104: ! 105: ! 106: /************************************************************************ ! 107: * ImageNewDialog ! 108: * ! 109: * ! 110: * ! 111: * History: ! 112: * ! 113: ************************************************************************/ ! 114: ! 115: VOID ImageNewDialog( ! 116: INT iType) ! 117: { ! 118: switch (iType) { ! 119: case FT_ICON: ! 120: DlgBox(DID_NEWICONIMAGE, (WNDPROC)NewIconImageDlgProc); ! 121: break; ! 122: ! 123: case FT_CURSOR: ! 124: DlgBox(DID_NEWCURSORIMAGE, (WNDPROC)NewCursorImageDlgProc); ! 125: break; ! 126: } ! 127: } ! 128: ! 129: ! 130: ! 131: /************************************************************************ ! 132: * ImageSelectDialog ! 133: * ! 134: * ! 135: * ! 136: * History: ! 137: * ! 138: ************************************************************************/ ! 139: ! 140: VOID ImageSelectDialog(VOID) ! 141: { ! 142: switch (giType) { ! 143: case FT_ICON: ! 144: DlgBox(DID_SELECTICONIMAGE, (WNDPROC)SelectImageDlgProc); ! 145: break; ! 146: ! 147: case FT_CURSOR: ! 148: DlgBox(DID_SELECTCURSORIMAGE, (WNDPROC)SelectImageDlgProc); ! 149: break; ! 150: } ! 151: } ! 152: ! 153: ! 154: ! 155: /************************************************************************ ! 156: * ResourceTypeDlgProc ! 157: * ! 158: * Gets from the user the type of resource image that they want ! 159: * to edit (bitmap, icon or cursor). ! 160: * ! 161: * History: ! 162: * ! 163: ************************************************************************/ ! 164: ! 165: DIALOGPROC ResourceTypeDlgProc( ! 166: HWND hwnd, ! 167: UINT msg, ! 168: WPARAM wParam, ! 169: LPARAM lParam) ! 170: { ! 171: INT idChecked; ! 172: ! 173: switch (msg) { ! 174: case WM_INITDIALOG: ! 175: switch (giType) { ! 176: case FT_BITMAP: ! 177: idChecked = DID_RESOURCETYPEBITMAP; ! 178: break; ! 179: ! 180: case FT_ICON: ! 181: idChecked = DID_RESOURCETYPEICON; ! 182: break; ! 183: ! 184: case FT_CURSOR: ! 185: idChecked = DID_RESOURCETYPECURSOR; ! 186: break; ! 187: } ! 188: ! 189: CheckDlgButton(hwnd, idChecked, 1); ! 190: ! 191: CenterWindow(hwnd); ! 192: ! 193: break; ! 194: ! 195: case WM_COMMAND: ! 196: switch (LOWORD(wParam)) { ! 197: case IDOK: ! 198: if (IsDlgButtonChecked(hwnd, DID_RESOURCETYPEBITMAP)) ! 199: iNewFileType = FT_BITMAP; ! 200: else if (IsDlgButtonChecked(hwnd, DID_RESOURCETYPEICON)) ! 201: iNewFileType = FT_ICON; ! 202: else ! 203: iNewFileType = FT_CURSOR; ! 204: ! 205: EndDialog(hwnd, IDOK); ! 206: break; ! 207: ! 208: case IDCANCEL: ! 209: EndDialog(hwnd, IDCANCEL); ! 210: break; ! 211: ! 212: case IDHELP: ! 213: WinHelp(ghwndMain, gszHelpFile, HELP_CONTEXT, ! 214: HELPID_RESOURCETYPE); ! 215: break; ! 216: } ! 217: ! 218: break; ! 219: ! 220: default: ! 221: return FALSE; ! 222: } ! 223: ! 224: return TRUE; ! 225: } ! 226: ! 227: ! 228: ! 229: /************************************************************************ ! 230: * NewIconImageDlgProc ! 231: * ! 232: * ! 233: * ! 234: * Arguments: ! 235: * ! 236: * History: ! 237: * ! 238: ************************************************************************/ ! 239: ! 240: DIALOGPROC NewIconImageDlgProc( ! 241: HWND hwnd, ! 242: UINT msg, ! 243: WPARAM wParam, ! 244: LPARAM lParam) ! 245: { ! 246: HWND hwndList; ! 247: INT iSel; ! 248: PDEVICE pDevice; ! 249: ! 250: switch (msg) { ! 251: case WM_INITDIALOG: ! 252: hwndList = GetDlgItem(hwnd, DID_NEWIMAGELIST); ! 253: SendMessage(hwndList, LB_RESETCONTENT, 0, 0); ! 254: ! 255: for (pDevice = gpIconDeviceHead; pDevice; ! 256: pDevice = pDevice->pDeviceNext) { ! 257: if (!DeviceLinkUsed(pDevice)) { ! 258: iSel = (INT)SendMessage(hwndList, LB_INSERTSTRING, (WPARAM)-1, ! 259: (LONG)(LPSTR)pDevice->szDesc); ! 260: SendMessage(hwndList, LB_SETITEMDATA, iSel, ! 261: (DWORD)(LPSTR)pDevice); ! 262: } ! 263: } ! 264: ! 265: /* ! 266: * Select the first item. ! 267: */ ! 268: SendMessage(hwndList, LB_SETCURSEL, 0, 0L); ! 269: ! 270: CenterWindow(hwnd); ! 271: ! 272: break; ! 273: ! 274: case WM_COMMAND: ! 275: switch (LOWORD(wParam)) { ! 276: case DID_NEWIMAGELIST: ! 277: if (HIWORD(wParam) == LBN_DBLCLK) { ! 278: if (NewImageOK(hwnd, FT_ICON)) ! 279: EndDialog(hwnd, IDOK); ! 280: } ! 281: ! 282: break; ! 283: ! 284: case IDOK: ! 285: if (NewImageOK(hwnd, FT_ICON)) ! 286: EndDialog(hwnd, IDOK); ! 287: ! 288: break; ! 289: ! 290: case IDCANCEL: ! 291: EndDialog(hwnd, IDCANCEL); ! 292: break; ! 293: ! 294: case IDHELP: ! 295: WinHelp(ghwndMain, gszHelpFile, HELP_CONTEXT, ! 296: HELPID_NEWICONIMAGE); ! 297: break; ! 298: } ! 299: ! 300: break; ! 301: ! 302: default: ! 303: return FALSE; ! 304: } ! 305: ! 306: return TRUE; ! 307: } ! 308: ! 309: ! 310: ! 311: /************************************************************************ ! 312: * NewImageOK ! 313: * ! 314: * Processes the selection of a new image from the New Icon (Cursor) ! 315: * Image dialog procedures. ! 316: * ! 317: * History: ! 318: * ! 319: ************************************************************************/ ! 320: ! 321: STATICFN BOOL NEAR NewImageOK( ! 322: HWND hwnd, ! 323: INT iType) ! 324: { ! 325: HWND hwndLB; ! 326: INT iSelect; ! 327: PDEVICE pDevice; ! 328: ! 329: hwndLB = GetDlgItem(hwnd, DID_NEWIMAGELIST); ! 330: ! 331: if ((iSelect = (INT)SendMessage(hwndLB, LB_GETCURSEL, 0, 0)) != LB_ERR) { ! 332: /* ! 333: * Save away the current image. ! 334: */ ! 335: ImageSave(); ! 336: ! 337: pDevice = (PDEVICE)SendMessage(hwndLB, LB_GETITEMDATA, iSelect, 0); ! 338: ! 339: if (ImageNew(pDevice)) ! 340: return TRUE; ! 341: } ! 342: ! 343: return FALSE; ! 344: } ! 345: ! 346: ! 347: ! 348: /************************************************************************ ! 349: * NewCursorImageDlgProc ! 350: * ! 351: * ! 352: * ! 353: * Arguments: ! 354: * ! 355: * History: ! 356: * ! 357: ************************************************************************/ ! 358: ! 359: DIALOGPROC NewCursorImageDlgProc( ! 360: HWND hwnd, ! 361: UINT msg, ! 362: WPARAM wParam, ! 363: LPARAM lParam) ! 364: { ! 365: HWND hwndList; ! 366: INT iSel; ! 367: PDEVICE pDevice; ! 368: ! 369: switch (msg) { ! 370: case WM_INITDIALOG: ! 371: hwndList = GetDlgItem(hwnd, DID_NEWIMAGELIST); ! 372: SendMessage(hwndList, LB_RESETCONTENT, 0, 0); ! 373: ! 374: for (pDevice = gpCursorDeviceHead; pDevice; ! 375: pDevice = pDevice->pDeviceNext) { ! 376: if (!DeviceLinkUsed(pDevice)) { ! 377: iSel = (INT)SendMessage(hwndList, LB_INSERTSTRING, (WPARAM)-1, ! 378: (LONG)(LPSTR)pDevice->szDesc); ! 379: SendMessage(hwndList, LB_SETITEMDATA, iSel, ! 380: (DWORD)(LPSTR)pDevice); ! 381: } ! 382: } ! 383: ! 384: /* ! 385: * Select the first item. ! 386: */ ! 387: SendMessage(hwndList, LB_SETCURSEL, 0, 0L); ! 388: ! 389: CenterWindow(hwnd); ! 390: ! 391: break; ! 392: ! 393: case WM_COMMAND: ! 394: switch (LOWORD(wParam)) { ! 395: case DID_NEWIMAGELIST: ! 396: if (HIWORD(wParam) == LBN_DBLCLK) { ! 397: if (NewImageOK(hwnd, FT_CURSOR)) ! 398: EndDialog(hwnd, IDOK); ! 399: } ! 400: ! 401: break; ! 402: ! 403: case IDOK: ! 404: if (NewImageOK(hwnd, FT_CURSOR)) ! 405: EndDialog(hwnd, IDOK); ! 406: ! 407: break; ! 408: ! 409: case IDCANCEL: ! 410: EndDialog(hwnd, IDCANCEL); ! 411: break; ! 412: ! 413: case IDHELP: ! 414: WinHelp(ghwndMain, gszHelpFile, HELP_CONTEXT, ! 415: HELPID_NEWCURSORIMAGE); ! 416: break; ! 417: } ! 418: ! 419: break; ! 420: ! 421: default: ! 422: return FALSE; ! 423: } ! 424: ! 425: return TRUE; ! 426: } ! 427: ! 428: ! 429: ! 430: /************************************************************************ ! 431: * SelectImageDlgProc ! 432: * ! 433: * This is the Select Image dialog procedure. This proc is used for both ! 434: * icon and cursor images. ! 435: * ! 436: * History: ! 437: * ! 438: ************************************************************************/ ! 439: ! 440: DIALOGPROC SelectImageDlgProc( ! 441: HWND hwnd, ! 442: UINT msg, ! 443: WPARAM wParam, ! 444: LPARAM lParam) ! 445: { ! 446: switch (msg) { ! 447: case WM_INITDIALOG: ! 448: SelectImageInit(hwnd); ! 449: return TRUE; ! 450: ! 451: case WM_COMMAND: ! 452: switch (LOWORD(wParam)) { ! 453: case DID_SELECTIMAGELIST: ! 454: if (HIWORD(wParam) == LBN_DBLCLK) { ! 455: if (SelectImageOK(hwnd)) ! 456: EndDialog(hwnd, IDOK); ! 457: } ! 458: ! 459: break; ! 460: ! 461: case IDOK: ! 462: if (SelectImageOK(hwnd)) ! 463: EndDialog(hwnd, IDOK); ! 464: ! 465: break; ! 466: ! 467: case IDCANCEL: ! 468: EndDialog(hwnd, IDCANCEL); ! 469: break; ! 470: ! 471: case IDHELP: ! 472: WinHelp(ghwndMain, gszHelpFile, HELP_CONTEXT, ! 473: (giType == FT_ICON) ? ! 474: HELPID_SELECTICONIMAGE : HELPID_SELECTCURSORIMAGE); ! 475: break; ! 476: } ! 477: ! 478: return TRUE; ! 479: ! 480: default: ! 481: return FALSE; ! 482: } ! 483: } ! 484: ! 485: ! 486: ! 487: /************************************************************************ ! 488: * SelectImageInit ! 489: * ! 490: * Processes the WM_INITDIALOG message for the Open Image dialog ! 491: * procedure. ! 492: * ! 493: * This function fills the listbox with the names of all the current ! 494: * images for the current icon/cursor file. ! 495: * ! 496: * History: ! 497: * ! 498: ************************************************************************/ ! 499: ! 500: STATICFN VOID NEAR SelectImageInit( ! 501: HWND hwnd) ! 502: { ! 503: HWND hwndLB; ! 504: INT i; ! 505: PIMAGEINFO pImage; ! 506: ! 507: hwndLB = GetDlgItem(hwnd, DID_SELECTIMAGELIST); ! 508: ! 509: for (pImage = gpImageHead; pImage; pImage = pImage->pImageNext) { ! 510: i = (INT)SendMessage(hwndLB, LB_INSERTSTRING, (WPARAM)-1, ! 511: pImage->pDevice ? ! 512: (DWORD)(LPSTR)pImage->pDevice->szDesc : ! 513: (DWORD)(LPSTR)ids(IDS_UNKNOWNIMAGEFORMAT)); ! 514: ! 515: SendMessage(hwndLB, LB_SETITEMDATA, i, (DWORD)(LPSTR)pImage); ! 516: } ! 517: ! 518: /* ! 519: * Select the first item. ! 520: */ ! 521: SendMessage(hwndLB, LB_SETCURSEL, 0, 0L); ! 522: ! 523: CenterWindow(hwnd); ! 524: } ! 525: ! 526: ! 527: ! 528: /************************************************************************ ! 529: * SelectImageOK ! 530: * ! 531: * Processes the selection of a new image from the Open Image ! 532: * dialog procedure. ! 533: * ! 534: * History: ! 535: * ! 536: ************************************************************************/ ! 537: ! 538: STATICFN BOOL NEAR SelectImageOK( ! 539: HWND hwnd) ! 540: { ! 541: HWND hwndLB; ! 542: INT iSelect; ! 543: PIMAGEINFO pImage; ! 544: ! 545: hwndLB = GetDlgItem(hwnd, DID_SELECTIMAGELIST); ! 546: ! 547: if ((iSelect = (INT)SendMessage(hwndLB, LB_GETCURSEL, 0, 0)) == LB_ERR) ! 548: return FALSE; ! 549: ! 550: /* ! 551: * Get a pointer to the selected image (stored in the listbox ! 552: * items data field). ! 553: */ ! 554: pImage = (PIMAGEINFO)SendMessage(hwndLB, LB_GETITEMDATA, iSelect, 0L); ! 555: ! 556: return ImageOpen(pImage); ! 557: } ! 558: ! 559: ! 560: ! 561: /************************************************************************ ! 562: * BitmapSizeDlgProc ! 563: * ! 564: * Dialog that asks for the width, height and number of colors for ! 565: * a new bitmap file. ! 566: * ! 567: * The last values that the user successfully entered are remembered, ! 568: * and these values will be the defaults the next time that the ! 569: * dialog is invoked. ! 570: * ! 571: * History: ! 572: * ! 573: ************************************************************************/ ! 574: ! 575: DIALOGPROC BitmapSizeDlgProc( ! 576: HWND hwnd, ! 577: UINT msg, ! 578: WPARAM wParam, ! 579: LPARAM lParam) ! 580: { ! 581: static INT cxLast = DEFAULTBITMAPWIDTH; ! 582: static INT cyLast = DEFAULTBITMAPHEIGHT; ! 583: static INT nColorsLast = DEFAULTBITMAPCOLORS; ! 584: INT cx; ! 585: INT cy; ! 586: BOOL fTranslated; ! 587: INT nColors; ! 588: ! 589: switch (msg) { ! 590: case WM_INITDIALOG: ! 591: SetDlgItemInt(hwnd, DID_BITMAPSIZEWIDTH, cxLast, TRUE); ! 592: SetDlgItemInt(hwnd, DID_BITMAPSIZEHEIGHT, cyLast, TRUE); ! 593: ! 594: if (nColorsLast == 16) ! 595: CheckRadioButton(hwnd, DID_BITMAPSIZE2, DID_BITMAPSIZE16, ! 596: DID_BITMAPSIZE16); ! 597: else ! 598: CheckRadioButton(hwnd, DID_BITMAPSIZE2, DID_BITMAPSIZE16, ! 599: DID_BITMAPSIZE2); ! 600: ! 601: CenterWindow(hwnd); ! 602: ! 603: break; ! 604: ! 605: case WM_COMMAND: ! 606: switch (LOWORD(wParam)) { ! 607: case IDOK: ! 608: cx = GetDlgItemInt(hwnd, DID_BITMAPSIZEWIDTH, &fTranslated, FALSE); ! 609: if (!fTranslated) { ! 610: SetFocus(GetDlgItem(hwnd, DID_BITMAPSIZEWIDTH)); ! 611: Message(MSG_ENTERANUMBER); ! 612: break; ! 613: } ! 614: ! 615: cy = GetDlgItemInt(hwnd, DID_BITMAPSIZEHEIGHT, &fTranslated, FALSE); ! 616: if (!fTranslated) { ! 617: SetFocus(GetDlgItem(hwnd, DID_BITMAPSIZEHEIGHT)); ! 618: Message(MSG_ENTERANUMBER); ! 619: break; ! 620: } ! 621: ! 622: if (IsDlgButtonChecked(hwnd, DID_BITMAPSIZE2)) ! 623: nColors = 2; ! 624: else ! 625: nColors = 16; ! 626: ! 627: if (ImageNewBitmap(cx, cy, nColors)) { ! 628: cxLast = cx; ! 629: cyLast = cy; ! 630: nColorsLast = nColors; ! 631: ! 632: EndDialog(hwnd, IDOK); ! 633: } ! 634: ! 635: break; ! 636: ! 637: case IDCANCEL: ! 638: EndDialog(hwnd, IDCANCEL); ! 639: break; ! 640: ! 641: case IDHELP: ! 642: WinHelp(ghwndMain, gszHelpFile, HELP_CONTEXT, ! 643: HELPID_BITMAPSIZE); ! 644: break; ! 645: } ! 646: ! 647: break; ! 648: ! 649: default: ! 650: return FALSE; ! 651: } ! 652: ! 653: return TRUE; ! 654: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.