|
|
1.1 ! root 1: /* ! 2: FILE.C -- Open/Save As Dialog Box library routines ! 3: Created by Microsoft Corporation, 1989 ! 4: */ ! 5: #define INCL_DOSQUEUES ! 6: #include "tool.h" ! 7: ! 8: ! 9: /****************************************************************************\ ! 10: * This function is the Open dialog box window procedure. It handles input, ! 11: * allows the user to change directories, checks for legal filenames, opens ! 12: * specified files, appends default extensions and returns the file's name. ! 13: * ! 14: * The return values are ! 15: * TDF_INVALID - Library error (internal error), ! 16: * TDF_NOOPEN - User hits cancel ! 17: * TDF_NEWOPEN - Created new file (file left open) ! 18: * TDF_OLDOPEN - Opened existing file (file left open) ! 19: \****************************************************************************/ ! 20: ! 21: MRESULT CALLBACK DlgOpenWndProc(hwnd, msg, mp1, mp2) ! 22: HWND hwnd; ! 23: USHORT msg; ! 24: MPARAM mp1; ! 25: MPARAM mp2; ! 26: { ! 27: PDLF pdlf; ! 28: PSZ lpchFile; ! 29: CHAR sz[MAX_FNAME_LEN]; ! 30: ! 31: switch (msg) ! 32: { ! 33: case WM_INITDLG: ! 34: /* initialize dialog box */ ! 35: DlgInitOpen(hwnd, LONGFROMMP(mp2)); ! 36: ! 37: /* fill static field with path name and fill list box with ! 38: filenames that lMatch spec */ ! 39: if (!DlgDirList(hwnd, ((PDLF)(mp2))->pszExt+1, ID_DIRLIST, ! 40: ID_FILELIST, ID_PATH, ((PDLF)(mp2))->rgbFlags)) ! 41: /* NOTE: shouldn't we post a message if something screws up? */ ! 42: WinDismissDlg(hwnd, TDF_INVALID); ! 43: break; ! 44: ! 45: case WM_COMMAND: ! 46: pdlf = (PDLF) WinQueryWindowULong(hwnd, 0); ! 47: switch (SHORT1FROMMP(mp1)) ! 48: { ! 49: case MBID_OK: ! 50: /* Open button pressed */ ! 51: /* get name from edit box */ ! 52: WinQueryWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 53: CBROOTNAMEMAX, (PSZ)pdlf->szFileName); ! 54: Upper((PSZ)pdlf->szFileName); ! 55: if (lstrlen((PSZ)pdlf->szFileName)) ! 56: DlgOpenName(hwnd, pdlf); ! 57: break; ! 58: ! 59: case MBID_CANCEL: ! 60: /* Cancel button pressed, dismiss dialog box */ ! 61: WinDismissDlg(hwnd, TDF_NOOPEN); ! 62: break; ! 63: ! 64: case MBID_HELP: ! 65: /* Help button pressed */ ! 66: WinMessageBox( HWND_DESKTOP ! 67: , hwnd ! 68: , pdlf->pszInstructions ! 69: , pdlf->pszTitle ! 70: , NULL ! 71: , MB_OK | MB_APPLMODAL ); ! 72: break; ! 73: } ! 74: break; ! 75: ! 76: case WM_CONTROL: ! 77: pdlf = (PDLF) WinQueryWindowULong(hwnd, 0); ! 78: switch (SHORT1FROMMP(mp1)) ! 79: { ! 80: case ID_DIRLIST: ! 81: /* user clicked in directory list box */ ! 82: switch (SHORT2FROMMP(mp1)) ! 83: { ! 84: case LN_SELECT: ! 85: /* single click case */ ! 86: /* get current edit string */ ! 87: WinQueryWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 88: CBROOTNAMEMAX, (PSZ)sz); ! 89: Upper((PSZ)sz); ! 90: ! 91: /* get selected string */ ! 92: if (DlgDirSelect(hwnd, (PSZ)pdlf->szFileName, ID_DIRLIST)) ! 93: { ! 94: /* if edit field contains wild card, then append file ! 95: part to selected directory, otherwise append ! 96: last wildcard search spec */ ! 97: lpchFile = FileInPath((PSZ)sz); ! 98: lstrcat( (PSZ)pdlf->szFileName ! 99: , DlgSearchSpec( lpchFile) ! 100: ? lpchFile ! 101: : (PSZ)pdlf->szLastWild ); ! 102: /* set edit box to resulting name */ ! 103: WinSetWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 104: (PSZ)pdlf->szFileName); ! 105: } ! 106: break; ! 107: ! 108: case LN_ENTER: ! 109: /* get text from edit box */ ! 110: WinQueryWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 111: CBROOTNAMEMAX, (PSZ)pdlf->szFileName); ! 112: Upper((PSZ)pdlf->szFileName); ! 113: if( DlgSearchSpec( (PSZ)pdlf->szFileName)) ! 114: { ! 115: DlgDirList( hwnd ! 116: , (PSZ)pdlf->szFileName ! 117: , ID_DIRLIST ! 118: , ID_FILELIST ! 119: , ID_PATH ! 120: , pdlf->rgbFlags ); ! 121: lstrcpy( (PSZ)pdlf->szLastWild ! 122: , FileInPath( (PSZ)pdlf->szFileName)); ! 123: WinSetWindowText( WinWindowFromID( hwnd, ID_EDIT) ! 124: , (PSZ)pdlf->szFileName ); ! 125: } ! 126: break; ! 127: } ! 128: break; ! 129: ! 130: case ID_FILELIST: ! 131: /* user clicked in file list box */ ! 132: switch (SHORT2FROMMP(mp1)) ! 133: { ! 134: case LN_SELECT: ! 135: /* single click case */ ! 136: ! 137: /* get current edit string */ ! 138: /* if it contains a wildcard, save it before obliteration */ ! 139: WinQueryWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 140: CBROOTNAMEMAX, (PSZ)sz); ! 141: Upper((PSZ)sz); ! 142: if( DlgSearchSpec( (PSZ)sz)) ! 143: lstrcpy( (PSZ)pdlf->szLastWild, FileInPath( (PSZ)sz)); ! 144: ! 145: /* get selected file name */ ! 146: DlgDirSelect(hwnd, (PSZ)pdlf->szFileName, ID_FILELIST); ! 147: /* set edit box to resulting name */ ! 148: WinSetWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 149: (PSZ)pdlf->szFileName); ! 150: break; ! 151: ! 152: case LN_ENTER: ! 153: /* double click case, single click already processed */ ! 154: DlgOpenName(hwnd, pdlf); ! 155: break; ! 156: } ! 157: break; ! 158: } ! 159: break; ! 160: ! 161: default: ! 162: return (WinDefDlgProc(hwnd, msg, mp1, mp2)); ! 163: } ! 164: ! 165: return (MRFROMLONG(0L)); /* message processed */ ! 166: } ! 167: ! 168: ! 169: ! 170: ! 171: /****************************************************************************\ ! 172: * This function stores the pdlf in the dialog window structure, sets ! 173: * the title and instruction texts and limits the text size. ! 174: \****************************************************************************/ ! 175: ! 176: VOID PASCAL DlgInitOpen (hwnd, lpParm) ! 177: HWND hwnd; ! 178: ULONG lpParm; ! 179: { ! 180: PDLF pdlf; ! 181: ! 182: /* Set pdlf local to window */ ! 183: pdlf = (PDLF) lpParm; ! 184: WinSetWindowULong(hwnd, 0, lpParm); ! 185: ! 186: /* set edit box text size limit */ ! 187: WinSendDlgItemMsg(hwnd, ID_EDIT, EM_SETTEXTLIMIT, (MPARAM)CBROOTNAMEMAX, 0L); ! 188: ! 189: /* set edit window to search spec */ ! 190: if (pdlf->pszExt != (PSZ)NULL) ! 191: WinSetWindowText(WinWindowFromID(hwnd, ID_EDIT), pdlf->pszExt+1); ! 192: ! 193: /* set title window */ ! 194: if (pdlf->pszTitle != (PSZ)NULL) ! 195: WinSetWindowText(WinWindowFromID(hwnd, FID_TITLEBAR), pdlf->pszTitle); ! 196: } ! 197: ! 198: ! 199: ! 200: ! 201: /****************************************************************************\ ! 202: * This function processes the currently selected name in the open dialog ! 203: * box. If the name represents a directory, the current directory is ! 204: * changed to that one and the corresponding files are displayed. If the ! 205: * name is a file, then it is opened. ! 206: \****************************************************************************/ ! 207: ! 208: VOID PASCAL DlgOpenName(hwnd, pdlf) ! 209: HWND hwnd; ! 210: PDLF pdlf; ! 211: { ! 212: PSZ lpch; ! 213: USHORT wVal; ! 214: CHAR sz[MAX_FNAME_LEN]; ! 215: ! 216: /* try using current name as a directory */ ! 217: lstrcpy((PSZ)sz, (PSZ)pdlf->szFileName); ! 218: if (!DlgSearchSpec((PSZ)sz)) ! 219: DlgAddSearchExt(pdlf, (PSZ)sz); ! 220: if (DlgDirList(hwnd, (PSZ)sz, ID_DIRLIST, ID_FILELIST, ID_PATH, ! 221: pdlf->rgbFlags)) ! 222: { ! 223: /* name was a directory, extract and set file name */ ! 224: lpch = FileInPath((PSZ)sz); ! 225: lstrcpy((PSZ)pdlf->szFileName, lpch); ! 226: WinSetWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 227: (PSZ)pdlf->szFileName); ! 228: } ! 229: else ! 230: /* try to open name as a file */ ! 231: if ((wVal = DlgOpenFile(pdlf, hwnd)) != TDF_NOOPEN) ! 232: WinDismissDlg(hwnd, wVal); ! 233: } ! 234: ! 235: ! 236: ! 237: ! 238: /****************************************************************************\ ! 239: * This function is the SaveAs dialog box window procedure. It handles input, ! 240: * tests for legal filenames and uses message boxes to report any problems. ! 241: * ! 242: * Return values are: ! 243: * TDF_INVALID - Library error (internal error), ! 244: * TDF_NOOPEN - User hits cancel ! 245: * Specific for DLG_NOOPEN ! 246: * TDF_NEWSAVE - user wants to save to a new file (file not created) ! 247: * TDF_OLDSAVE - user wants to save over existing file (file not opened) ! 248: * else ! 249: * TDF_NEWSAVE - user wants to save to a new file (file left open) ! 250: * TDF_OLDSAVE - user wants to save over existing file (file left open) ! 251: \****************************************************************************/ ! 252: ! 253: MRESULT CALLBACK DlgSaveAsWndProc(hwnd, msg, mp1, mp2) ! 254: HWND hwnd; ! 255: USHORT msg; ! 256: MPARAM mp1; ! 257: MPARAM mp2; ! 258: { ! 259: PDLF pdlf; ! 260: PSZ lpchFile; ! 261: CHAR sz[MAX_FNAME_LEN]; ! 262: ! 263: switch (msg) ! 264: { ! 265: case WM_INITDLG: ! 266: /* Store pdlf, set instructions, limit text size */ ! 267: DlgInitSaveAs(hwnd, LONGFROMMP(mp2)); ! 268: ! 269: /* fill static field with path name and fill list box with ! 270: filenames that lMatch spec */ ! 271: if (!DlgDirList(hwnd, ((PDLF)(mp2))->pszExt+1, ID_DIRLIST, ! 272: ID_FILELIST, ID_PATH, ((PDLF)(mp2))->rgbFlags)) ! 273: /* NOTE: shouldn't we post a message if something screws up? */ ! 274: WinDismissDlg(hwnd, TDF_INVALID); ! 275: break; ! 276: ! 277: case WM_COMMAND: ! 278: pdlf = (PDLF) WinQueryWindowULong(hwnd, 0); ! 279: switch (SHORT1FROMMP(mp1)) ! 280: { ! 281: case MBID_OK: ! 282: /* get text from edit box */ ! 283: WinQueryWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 284: CBROOTNAMEMAX, (PSZ)pdlf->szFileName); ! 285: Upper((PSZ)pdlf->szFileName); ! 286: if( DlgSearchSpec( (PSZ)pdlf->szFileName)) ! 287: { ! 288: DlgDirList( hwnd ! 289: , (PSZ)pdlf->szFileName ! 290: , ID_DIRLIST ! 291: , ID_FILELIST ! 292: , ID_PATH ! 293: , pdlf->rgbFlags ); ! 294: lstrcpy( (PSZ)pdlf->szLastWild ! 295: , FileInPath( (PSZ)pdlf->szFileName)); ! 296: lstrcpy( (PSZ)pdlf->szFileName, (PSZ)pdlf->szLastFile); ! 297: WinSetWindowText( WinWindowFromID( hwnd, ID_EDIT) ! 298: , (PSZ)pdlf->szFileName ); ! 299: } ! 300: else if( lstrlen( (PSZ)pdlf->szFileName)) ! 301: DlgSaveAsName( hwnd, pdlf); ! 302: break; ! 303: ! 304: case MBID_CANCEL: ! 305: WinDismissDlg(hwnd, TDF_NOSAVE); ! 306: break; ! 307: ! 308: case MBID_HELP: ! 309: /* Help button pressed */ ! 310: WinMessageBox( HWND_DESKTOP ! 311: , hwnd ! 312: , pdlf->pszInstructions ! 313: , pdlf->pszTitle ! 314: , NULL ! 315: , MB_OK | MB_APPLMODAL ); ! 316: break; ! 317: } ! 318: break; ! 319: ! 320: case WM_CONTROL: ! 321: pdlf = (PDLF) WinQueryWindowULong(hwnd, 0); ! 322: switch (SHORT1FROMMP(mp1)) ! 323: { ! 324: case ID_DIRLIST: ! 325: /* user clicked in directory list box */ ! 326: switch (SHORT2FROMMP(mp1)) ! 327: { ! 328: case LN_SELECT: ! 329: /* single click case */ ! 330: /* get current edit string */ ! 331: WinQueryWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 332: CBROOTNAMEMAX, (PSZ)sz); ! 333: Upper((PSZ)sz); ! 334: ! 335: /* get selected string */ ! 336: if (DlgDirSelect(hwnd, (PSZ)pdlf->szFileName, ID_DIRLIST)) ! 337: { ! 338: /* if edit field contains wild card, then append file ! 339: part to selected directory, otherwise append ! 340: last wildcard search spec */ ! 341: lpchFile = FileInPath((PSZ)sz); ! 342: if( DlgSearchSpec( lpchFile)) ! 343: { ! 344: lstrcat( (PSZ)pdlf->szFileName, lpchFile ); ! 345: lstrcpy( (PSZ)pdlf->szLastWild, lpchFile); ! 346: } ! 347: else ! 348: { ! 349: lstrcat( (PSZ)pdlf->szFileName, (PSZ)pdlf->szLastWild ); ! 350: lstrcpy( (PSZ)pdlf->szLastFile, lpchFile); ! 351: } ! 352: /* set edit box to resulting name */ ! 353: WinSetWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 354: (PSZ)pdlf->szFileName); ! 355: } ! 356: break; ! 357: ! 358: case LN_ENTER: ! 359: /* get text from edit box */ ! 360: WinQueryWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 361: CBROOTNAMEMAX, (PSZ)pdlf->szFileName); ! 362: Upper((PSZ)pdlf->szFileName); ! 363: if( DlgSearchSpec( (PSZ)pdlf->szFileName)) ! 364: { ! 365: DlgDirList( hwnd ! 366: , (PSZ)pdlf->szFileName ! 367: , ID_DIRLIST ! 368: , ID_FILELIST ! 369: , ID_PATH ! 370: , pdlf->rgbFlags ); ! 371: lstrcpy( (PSZ)pdlf->szLastWild ! 372: , FileInPath( (PSZ)pdlf->szFileName)); ! 373: lstrcpy( (PSZ)pdlf->szFileName, (PSZ)pdlf->szLastFile); ! 374: WinSetWindowText( WinWindowFromID( hwnd, ID_EDIT) ! 375: , (PSZ)pdlf->szFileName ); ! 376: } ! 377: break; ! 378: } ! 379: break; ! 380: ! 381: case ID_FILELIST: ! 382: /* user clicked in file list box */ ! 383: switch (SHORT2FROMMP(mp1)) ! 384: { ! 385: case LN_SELECT: ! 386: /* single click case */ ! 387: ! 388: /* get current edit string */ ! 389: /* if it contains a wildcard, save it before obliteration */ ! 390: WinQueryWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 391: CBROOTNAMEMAX, (PSZ)sz); ! 392: Upper((PSZ)sz); ! 393: if( DlgSearchSpec( (PSZ)sz)) ! 394: lstrcpy( (PSZ)pdlf->szLastWild, FileInPath( (PSZ)sz)); ! 395: ! 396: /* get selected file name */ ! 397: DlgDirSelect(hwnd, (PSZ)pdlf->szFileName, ID_FILELIST); ! 398: /* set edit box to resulting name */ ! 399: WinSetWindowText(WinWindowFromID(hwnd, ID_EDIT), ! 400: (PSZ)pdlf->szFileName); ! 401: break; ! 402: ! 403: case LN_ENTER: ! 404: /* double click case, single click already processed */ ! 405: DlgSaveAsName(hwnd, pdlf); ! 406: break; ! 407: } ! 408: break; ! 409: } ! 410: break; ! 411: ! 412: default: ! 413: return (WinDefDlgProc(hwnd, msg, mp1, mp2)); ! 414: } ! 415: ! 416: return (MRFROMLONG(0L)); /* message processed */ ! 417: } ! 418: ! 419: ! 420: ! 421: /******************************************************************************/ ! 422: /* */ ! 423: /* This function attempts to open a file for writing. It queries if over- */ ! 424: /* write is OK if the file already exists. */ ! 425: /* */ ! 426: /******************************************************************************/ ! 427: VOID PASCAL DlgSaveAsName( hwnd, pdlf) ! 428: HWND hwnd; ! 429: PDLF pdlf; ! 430: { ! 431: USHORT usTdf; ! 432: ! 433: /* add extension if there is not one already */ ! 434: AddExt((PSZ)pdlf->szFileName, pdlf->pszExt); ! 435: /* test file name legality */ ! 436: if (!DlgParseFile((PSZ)pdlf->szFileName, ! 437: (PSZ)pdlf->szOpenFile, FALSE, FALSE)) ! 438: { ! 439: /* illegal filename */ ! 440: DlgAlertBox(hwnd, IDS_IFN, pdlf, ! 441: MB_OK | MB_ICONEXCLAMATION); ! 442: return; ! 443: } ! 444: usTdf = TDF_NEWSAVE; ! 445: /* test if file already exists */ ! 446: if (DlgParseFile((PSZ)pdlf->szFileName, ! 447: (PSZ)pdlf->szOpenFile, TRUE, FALSE)) ! 448: { ! 449: /* overwrite? */ ! 450: if (DlgAlertBox(hwnd, IDS_REF, pdlf, ! 451: MB_YESNO | MB_DEFBUTTON2 | MB_ICONQUESTION) ! 452: == MBID_NO) ! 453: return; ! 454: usTdf = TDF_OLDSAVE; ! 455: } ! 456: if (!(pdlf->rgbAction & DLG_NOOPEN) && ! 457: !(OpenFile( (PSZ)pdlf->szFileName ! 458: , pdlf->phFile ! 459: , (PSZ)pdlf->szOpenFile ! 460: , OF_WRITE))) ! 461: { ! 462: DlgAlertBox(hwnd, IDS_EOF, pdlf, ! 463: MB_OK | MB_ICONEXCLAMATION); ! 464: return; ! 465: } ! 466: WinDismissDlg(hwnd, usTdf); ! 467: } ! 468: ! 469: ! 470: ! 471: /****************************************************************************\ ! 472: * This function initializes the SaveAs dialog box. It puts the current ! 473: * directory string in the ID_PATH field and initializes the edit box ! 474: * with the proposed filename. It is the simple relative file name if current ! 475: * dir == pdlf->szOpenFile. Otherwise, it is the fully qualified name. ! 476: \****************************************************************************/ ! 477: ! 478: VOID PASCAL DlgInitSaveAs (hwnd, lpParm) ! 479: HWND hwnd; ! 480: ULONG lpParm; ! 481: { ! 482: PDLF pdlf; ! 483: CHAR sz[MAX_FNAME_LEN]; ! 484: PSZ lpszFile, lpszFN, lpszCD; ! 485: ! 486: /* set pdlf local to window */ ! 487: pdlf = (PDLF) lpParm; ! 488: WinSetWindowULong(hwnd, 0, lpParm); ! 489: ! 490: /* set edit box text size limit */ ! 491: WinSendDlgItemMsg(hwnd, ID_EDIT, EM_SETTEXTLIMIT, (MPARAM)CBROOTNAMEMAX, 0L); ! 492: ! 493: /* set title window */ ! 494: if (pdlf->pszTitle != (PSZ)NULL) ! 495: WinSetWindowText(WinWindowFromID(hwnd, FID_TITLEBAR), pdlf->pszTitle); ! 496: ! 497: /* set szLastWild to search spec */ ! 498: if (pdlf->pszExt != (PSZ)NULL) ! 499: lstrcpy( (PSZ)pdlf->szLastWild, (PSZ)pdlf->pszExt+1 ); ! 500: ! 501: /* get current directory */ ! 502: DosSearchPath(0, (PSZ)szDot, (PSZ)szStarStar, (PSZ)sz, MAX_FNAME_LEN); ! 503: lpszFile = FileInPath((PSZ)sz); ! 504: if (lpszFile > (PSZ)sz + 3) ! 505: lpszFile--; ! 506: *lpszFile = '\0'; ! 507: ! 508: /* compare path part name to previously opened file name and ! 509: make the file name relative if they are the same */ ! 510: lpszFN = (PSZ)pdlf->szOpenFile; ! 511: lpszCD = (PSZ)sz; ! 512: lpszFile = FileInPath((PSZ)pdlf->szOpenFile); ! 513: while (lpszFN < lpszFile && *lpszFN == *lpszCD) ! 514: { ! 515: lpszFN = NextChar(lpszFN); ! 516: lpszCD = NextChar(lpszCD); ! 517: } ! 518: if (*lpszCD) ! 519: lpszFN = (PSZ)pdlf->szOpenFile; ! 520: else if (*lpszFN == '\\') ! 521: lpszFN = NextChar(lpszFN); ! 522: Upper( lpszFN); ! 523: WinSetWindowText(WinWindowFromID(hwnd, ID_EDIT), lpszFN); ! 524: lstrcpy( (PSZ)pdlf->szLastFile, lpszFN); ! 525: ! 526: /* set current path field */ ! 527: WinSetWindowText(WinWindowFromID(hwnd, ID_PATH), ! 528: DlgFitPathToBox(hwnd, ID_PATH, (PSZ)sz)); ! 529: } ! 530: ! 531: ! 532: ! 533: ! 534: /****************************************************************************\ ! 535: * This function returns the filename part of the given path string. ! 536: \****************************************************************************/ ! 537: ! 538: PSZ CALLBACK FileInPath(lpsz) ! 539: PSZ lpsz; ! 540: { ! 541: PSZ lpch; ! 542: ! 543: /* strip path/drive specification from name if there is one */ ! 544: lpch = lpsz + lstrlen(lpsz); ! 545: while (lpch > lpsz) ! 546: { ! 547: lpch = PrevChar(lpsz, lpch); ! 548: if (*lpch == '\\' || *lpch == ':') ! 549: { ! 550: lpch = NextChar(lpch); ! 551: break; ! 552: } ! 553: } ! 554: return(lpch); ! 555: } ! 556: ! 557: ! 558: ! 559: ! 560: /****************************************************************************\ ! 561: * This function adds the extension to a file name if it is missing. ! 562: \****************************************************************************/ ! 563: ! 564: VOID CALLBACK AddExt(lpsz, lpszExt) ! 565: PSZ lpsz; ! 566: PSZ lpszExt; ! 567: { ! 568: PSZ lpch; ! 569: ! 570: lpch = lpsz + lstrlen(lpsz); ! 571: while (*lpch != '.' && *lpch != '\\' && *lpch != ':' && lpch > lpsz) ! 572: lpch = PrevChar(lpsz, lpch); ! 573: ! 574: if (*lpch != '.') ! 575: lstrcat(lpsz, (PSZ)(lpszExt+2)); ! 576: } ! 577: ! 578: ! 579: ! 580: ! 581: /****************************************************************************\ ! 582: * This function adds the "appropriate" extension to a filename, partial ! 583: * filename, search spec or partial search spec. ! 584: \****************************************************************************/ ! 585: ! 586: VOID PASCAL DlgAddSearchExt(pdlf, lpszEdit) ! 587: PDLF pdlf; ! 588: PSZ lpszEdit; ! 589: { ! 590: PSZ lpchLast; ! 591: ! 592: lpchLast = PrevChar(lpszEdit, lpszEdit + lstrlen(lpszEdit)); ! 593: if (*lpchLast == '\\' || *lpchLast == ':') ! 594: lstrcat(lpszEdit, pdlf->pszExt + 1); ! 595: else ! 596: lstrcat(lpszEdit, pdlf->pszExt); ! 597: } ! 598: ! 599: ! 600: ! 601: ! 602: /****************************************************************************\ ! 603: * This function returns TRUE if lpsz contains a wildcard character '*' or '?'; ! 604: \****************************************************************************/ ! 605: ! 606: BOOL PASCAL DlgSearchSpec(lpsz) ! 607: PSZ lpsz; ! 608: { ! 609: for (; *lpsz; lpsz = NextChar(lpsz)) ! 610: if (*lpsz == '*' || *lpsz == '?') ! 611: return TRUE; ! 612: return FALSE; ! 613: } ! 614: ! 615: ! 616: ! 617: ! 618: /****************************************************************************\ ! 619: * This function displays an error or warning msg. ! 620: \****************************************************************************/ ! 621: ! 622: int PASCAL DlgAlertBox(hwnd, ids, pdlf, wStyle) ! 623: HWND hwnd; ! 624: int ids; ! 625: PDLF pdlf; ! 626: USHORT wStyle; ! 627: { ! 628: /* note: 5th param is idHelp */ ! 629: return (AlertBox(hwnd, ids, (PSZ)pdlf->szFileName, pdlf->pszAppName, ! 630: NULL, wStyle | MB_APPLMODAL)); ! 631: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.