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