|
|
1.1 ! root 1: /* ! 2: TOOL1.C -- More commonly used library routines ! 3: Created by Microsoft Corporation, 1989 ! 4: */ ! 5: ! 6: #include "tool.h" ! 7: ! 8: /***************************************************************************\ ! 9: * Merges sz[idMes1] and szText1 and displays a message box using ! 10: * the wStyle. Use caption title provided by szText2. ! 11: * Returns the answer from the message box (MBID_OK, MBID_CANCEL). ! 12: \***************************************************************************/ ! 13: ! 14: int CALLBACK AlertBox (hwnd, idMes, lpszText1, lpszText2, idHelp, wStyle) ! 15: HWND hwnd; ! 16: int idMes; ! 17: PSZ lpszText1; ! 18: PSZ lpszText2; ! 19: USHORT idHelp; ! 20: USHORT wStyle; ! 21: { ! 22: char szMessage [MAXMESSAGELENGTH]; ! 23: ! 24: MergeStrings((PSZ)vrgsz[idMes], lpszText1, (PSZ)szMessage); ! 25: if (idHelp != NULL) ! 26: wStyle |= MB_HELP; ! 27: return (WinMessageBox (HWND_DESKTOP, hwnd, (PSZ)szMessage, lpszText2, ! 28: idHelp, wStyle)); ! 29: } ! 30: ! 31: ! 32: /***************************************************************************\ ! 33: * Scan szSrc for merge spec. If found, insert string szMerge at that point. ! 34: * Then append rest of szSrc NOTE! Merge spec guaranteed to be two chars. ! 35: * returns TRUE if it does a merge, false otherwise. ! 36: \***************************************************************************/ ! 37: ! 38: BOOL CALLBACK MergeStrings(lpszSrc, lpszMerge, lpszDst) ! 39: PSZ lpszSrc; ! 40: PSZ lpszMerge; ! 41: PSZ lpszDst; ! 42: { ! 43: /* Find merge spec if there is one. */ ! 44: while (*(unsigned far *)lpszSrc != *(unsigned *)vrgsz[IDS_MERGE1]) ! 45: { ! 46: *lpszDst++ = *lpszSrc; ! 47: /* If we reach end of string before merge spec, just return. */ ! 48: if (!*lpszSrc++) ! 49: return FALSE; ! 50: } ! 51: ! 52: /* If merge spec found, insert sz2 there. (check for null merge string */ ! 53: if (lpszMerge) ! 54: { ! 55: while (*lpszMerge) ! 56: *lpszDst++ = *lpszMerge++; ! 57: } ! 58: ! 59: /* Jump over merge spec */ ! 60: lpszSrc++,lpszSrc++; ! 61: ! 62: /* Now append rest of Src String */ ! 63: while (*lpszDst++ = *lpszSrc++); ! 64: return TRUE; ! 65: } ! 66: ! 67: ! 68: ! 69: /****************************************************************************\ ! 70: * This function invokes either an Open or Save dialog box. ! 71: * (lpdlf->rgbAction == DLG_OPENDLG) --> invoke Open dlgBox ! 72: * (lpdlf->rgbAction == DLG_SAVEDLG) --> invoke Save dlbBox ! 73: * ! 74: * Unless DLG_NOSAVE is specified, the file is opened and left open. ! 75: * ! 76: * Return values are: ! 77: * TDF_INVALID - Library error (internal error), ! 78: * TDF_ERRMEM - Out of memory error ! 79: * TDF_NOOPEN - User hits cancel ! 80: * specific to DLG_OPEN: ! 81: * TDF_NEWOPEN - Created new file ! 82: * TDF_OLDOPEN - Opened existing file ! 83: * specific to DLG_SAVE: ! 84: * TDF_NEWSAVE - user wants to save to a new file ! 85: * TDF_OLDSAVE - user wants to save over existing file ! 86: * specific to DLG_NOSAVE: ! 87: * TDF_NEWSAVE - user wants to save to a new file ! 88: * TDF_OLDSAVE - user wants to save over existing file ! 89: \****************************************************************************/ ! 90: ! 91: int CALLBACK DlgFile(hwnd, pdlf) ! 92: HWND hwnd; ! 93: PDLF pdlf; ! 94: { ! 95: /* create dialog box */ ! 96: if (pdlf->rgbAction & DLG_SAVEDLG) ! 97: return WinDlgBox(HWND_DESKTOP, hwnd, DlgSaveAsWndProc, vhModule, ! 98: IDD_SAVEAS, (PSZ)pdlf); ! 99: else ! 100: return WinDlgBox(HWND_DESKTOP, hwnd, DlgOpenWndProc, vhModule, ! 101: IDD_OPEN, (PSZ)pdlf); ! 102: } ! 103: ! 104: /**************************************************************************\ ! 105: * This function initializes the DLF structure ! 106: \**************************************************************************/ ! 107: void CALLBACK SetupDLF(PDLF pdlf, int iAction, PHFILE phFile, ! 108: PSZ Extension, PSZ AppName, PSZ pszInTitle, ! 109: PSZ pszInInstructions ) { ! 110: pdlf->pszExt = Extension; ! 111: pdlf->rgbFlags = ATTRDIRLIST; ! 112: pdlf->phFile = phFile; ! 113: pdlf->pszAppName = AppName; ! 114: pdlf->rgbAction = iAction; ! 115: pdlf->pszTitle = pszInTitle; ! 116: pdlf->pszInstructions = pszInInstructions; ! 117: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.