Annotation of mstools/samples/sdktools/fontedit/fontdlg.c, revision 1.1

1.1     ! root        1: /*++
        !             2: 
        !             3: Copyright (c) 1993 Microsoft Corporation
        !             4: 
        !             5: Module Name:
        !             6: 
        !             7:     fontdlg.c
        !             8: 
        !             9: Abstract:
        !            10: 
        !            11:     Font Editor interface to the common dialog Open File and Save File
        !            12:        functions.  Also, this routine displays and controls the font format
        !            13:        save dialog.
        !            14: 
        !            15: 
        !            16: --*/
        !            17: 
        !            18: 
        !            19: #include "windows.h"
        !            20: #include <windowsx.h>
        !            21: #include "fontedit.h"
        !            22: #include "commdlg.h"
        !            23: 
        !            24: 
        !            25: /* message box strings loaded in sample.c from the stringtable */
        !            26: extern CHAR szIFN[], szFNF[], szREF[], szSCC[], szEOF[], szECF[];
        !            27: 
        !            28: extern CHAR    szAppName [];
        !            29: extern CHAR    szExt [];
        !            30: extern CHAR    szExtDesc [];
        !            31: 
        !            32: extern CHAR    szNEWFONT [];
        !            33: extern CHAR    szFRO [];
        !            34: 
        !            35: extern INT iFontFormat;             /* Set to the id of current font format */
        !            36: extern BOOL fReadOnly;
        !            37: 
        !            38: CHAR szDlgMsg [MAX_STR_LEN+MAX_FNAME_LEN];
        !            39: 
        !            40: extern CHAR szFilter[];
        !            41: 
        !            42: //
        !            43: // Local Function Prototypes.
        !            44: //
        !            45: 
        !            46: BOOL
        !            47: DlgCheckFormat (
        !            48:        HANDLE hInstance,       // app module instance handle
        !            49:        HWND   hWndParent       // window handle of parent window
        !            50:        );
        !            51: 
        !            52: BOOL APIENTRY
        !            53: DlgFnCheckFormat (
        !            54:        HWND   hDlg,
        !            55:        WORD   message,
        !            56:        WPARAM wParam,
        !            57:        LPARAM lParam
        !            58:        );
        !            59: 
        !            60: //
        !            61: // Functions.
        !            62: //
        !            63: 
        !            64: BOOL
        !            65: CommDlgOpen (
        !            66:        HWND   hWndParent,      /* window handle of parent window */
        !            67:        OFSTRUCT *pofsReOpenInfo,/* ptr to current file OFSTRUCT (->cBytes=0 if no
        !            68:                                                         * cur. file)*/
        !            69:        CHAR  *pszNewNameIn,    /* ptr to array which will get new file's name
        !            70:                                                         * (no path) */
        !            71:        CHAR  *pszExtIn,        /* ptr to current default extension */
        !            72:        CHAR  *pszFileNameOnly,    /* ptr to application name */
        !            73:        BOOL   fOpenType
        !            74:        )
        !            75: {
        !            76:        OPENFILENAME    ofTempOF;
        !            77:        HFILE                   hFile;
        !            78: 
        !            79:        ofTempOF.lStructSize =          sizeof(OPENFILENAME);
        !            80:        ofTempOF.hwndOwner =            hWndParent;
        !            81:        ofTempOF.lpstrFilter =          szFilter;
        !            82:        ofTempOF.lpstrCustomFilter =    (LPSTR)NULL;
        !            83:        ofTempOF.nMaxCustFilter =       0L;
        !            84:        ofTempOF.nFilterIndex =         0L;
        !            85:        ofTempOF.lpstrFile =            pszNewNameIn;
        !            86:        ofTempOF.nMaxFile =             MAX_FNAME_LEN;
        !            87:        ofTempOF.lpstrFileTitle =       pszFileNameOnly;
        !            88:        ofTempOF.nMaxFileTitle =        MAX_FNAME_LEN;
        !            89:        ofTempOF.lpstrInitialDir =      (LPSTR)NULL;
        !            90:        ofTempOF.lpstrTitle =           (LPSTR)NULL;
        !            91:        ofTempOF.Flags =                OFN_SHOWHELP;
        !            92:        ofTempOF.nFileOffset =          0;
        !            93:        ofTempOF.nFileExtension =       0;
        !            94:        ofTempOF.lpstrDefExt =          pszExtIn;
        !            95: 
        !            96:        if (fOpenType == FONT_NEW)
        !            97:        {
        !            98:                if (MessageBox (hWndParent, (LPSTR)szNEWFONT, (LPSTR)szAppName,
        !            99:                                MB_OKCANCEL | MB_ICONEXCLAMATION | MB_APPLMODAL) == IDCANCEL)
        !           100:                {
        !           101:                        return (FALSE);
        !           102:                }
        !           103:        }
        !           104: 
        !           105:        if (GetOpenFileName (&ofTempOF) == FALSE)
        !           106:        {
        !           107:                return (FALSE);
        !           108:        }
        !           109: 
        !           110:        CharUpper (pszNewNameIn);
        !           111: 
        !           112:        fReadOnly = FALSE;
        !           113: 
        !           114:        hFile = (HFILE)OpenFile (pszNewNameIn, pofsReOpenInfo, OF_READWRITE);
        !           115: 
        !           116:        if (hFile == (HFILE) -1) {
        !           117: 
        !           118:                hFile = (HFILE)OpenFile (pszNewNameIn, pofsReOpenInfo, OF_READ);
        !           119: 
        !           120:                if (hFile == (HFILE) -1) {
        !           121: 
        !           122:                        DlgMergeStrings (szFNF, pszNewNameIn, szDlgMsg);
        !           123: 
        !           124:                        MessageBox (hWndParent, szDlgMsg, szAppName,
        !           125:                                        MB_OK | MB_ICONASTERISK | MB_APPLMODAL);
        !           126: 
        !           127:                        return (FALSE);
        !           128: 
        !           129:                } else if (fOpenType != FONT_NEW) {
        !           130:                        
        !           131:                        BOOL    fResult;
        !           132: 
        !           133:                        DlgMergeStrings (szFRO, pszNewNameIn, szDlgMsg);
        !           134: 
        !           135:                        /* File Is Read Only */
        !           136:                        fResult = MessageBox (hWndParent, szDlgMsg, szAppName,
        !           137:                                        MB_OKCANCEL | MB_ICONEXCLAMATION | MB_APPLMODAL);
        !           138: 
        !           139:                        /* Give them the chance to cancel right now. */
        !           140:                        if (fResult == IDCANCEL) {
        !           141: 
        !           142:                                _lclose((HFILE)hFile);
        !           143:                                return (FALSE);
        !           144:                        }
        !           145: 
        !           146:                        fReadOnly = TRUE;
        !           147:                }
        !           148:        }
        !           149: 
        !           150:        _lclose((HFILE)hFile);
        !           151: 
        !           152:        return (TRUE);
        !           153: }
        !           154: 
        !           155: BOOL
        !           156: CommDlgSaveAs(
        !           157:        HANDLE hInstance,
        !           158:        HWND   hWndParent,      /* window handle of parent window */
        !           159:        OFSTRUCT *pofsReOpenInfo,/* ptr to current file OFSTRUCT (->cBytes=0 if no
        !           160:                                                         * cur. file)*/
        !           161:        CHAR  *pszNewNameIn,    /* ptr to array which will get new file's name
        !           162:                                                         * (no path) */
        !           163:        CHAR  *pszExtIn,        /* ptr to current default extension */
        !           164:        CHAR  *pszFileNameOnly  /* ptr to file name */
        !           165:        )
        !           166: {
        !           167:        OPENFILENAME    ofTempOF;
        !           168:        HFILE                   hFile;
        !           169: 
        !           170:        ofTempOF.lStructSize =          sizeof(OPENFILENAME);
        !           171:        ofTempOF.hwndOwner =            hWndParent;
        !           172:        ofTempOF.lpstrFilter =          szFilter;
        !           173:        ofTempOF.lpstrCustomFilter =    (LPSTR)NULL;
        !           174:        ofTempOF.nMaxCustFilter =       0L;
        !           175:        ofTempOF.nFilterIndex =         0L;
        !           176:        ofTempOF.lpstrFile =            pszNewNameIn;
        !           177:        ofTempOF.nMaxFile =             MAX_FNAME_LEN;
        !           178:        ofTempOF.lpstrFileTitle =       pszFileNameOnly;
        !           179:        ofTempOF.nMaxFileTitle =        MAX_FNAME_LEN;
        !           180:        ofTempOF.lpstrInitialDir =      (LPSTR)NULL;
        !           181:        ofTempOF.lpstrTitle =           (LPSTR)NULL;
        !           182:        ofTempOF.Flags =                OFN_SHOWHELP;
        !           183:        ofTempOF.nFileOffset =          0;
        !           184:        ofTempOF.nFileExtension =       0;
        !           185:        ofTempOF.lpstrDefExt =          pszExtIn;
        !           186: 
        !           187:        if (DlgCheckFormat (hInstance, hWndParent) == FALSE)
        !           188:        {
        !           189:                return (FALSE);
        !           190:        }
        !           191: 
        !           192:        if (GetSaveFileName (&ofTempOF) == FALSE)
        !           193:        {
        !           194:                return (FALSE);
        !           195:        }
        !           196: 
        !           197:        CharUpper (pszNewNameIn);
        !           198: 
        !           199:        hFile = (HFILE)OpenFile (pszNewNameIn, pofsReOpenInfo, OF_EXIST);
        !           200: 
        !           201:        if (hFile >= (HFILE) 0) /* already exists */
        !           202:        {
        !           203:                _lclose((HFILE)hFile);
        !           204: 
        !           205:                DlgMergeStrings (szREF, pszNewNameIn, szDlgMsg);
        !           206: 
        !           207:                if (MessageBox (hWndParent, (LPSTR)szDlgMsg, (LPSTR)pszNewNameIn,
        !           208:                                MB_YESNO | MB_DEFBUTTON2 | MB_ICONQUESTION | MB_APPLMODAL)
        !           209:                                == IDNO)
        !           210:                {
        !           211:                        return (FALSE);
        !           212:                }
        !           213: 
        !           214:                hFile = (HFILE)OpenFile (pszNewNameIn, pofsReOpenInfo, OF_WRITE);
        !           215: 
        !           216:                if (hFile == (HFILE) -1)
        !           217:                {
        !           218:                        DlgMergeStrings(szEOF, pszNewNameIn, szDlgMsg);
        !           219: 
        !           220:                        MessageBox(hWndParent, (LPSTR)szDlgMsg, (LPSTR)pszNewNameIn,
        !           221:                                        MB_OK | MB_ICONEXCLAMATION | MB_APPLMODAL);
        !           222: 
        !           223:                        return (FALSE);
        !           224:                }
        !           225: 
        !           226:                _lclose((HFILE)hFile);
        !           227: 
        !           228:                return (TRUE);
        !           229:        }
        !           230: 
        !           231:        hFile = (HFILE)OpenFile (pszNewNameIn, pofsReOpenInfo, OF_CREATE);
        !           232: 
        !           233:        if (hFile == (HFILE) -1)
        !           234:        {
        !           235:                DlgMergeStrings(szECF, pszNewNameIn, szDlgMsg);
        !           236: 
        !           237:                MessageBox(hWndParent, (LPSTR)szDlgMsg, (LPSTR)pszNewNameIn,
        !           238:                                MB_OK | MB_ICONEXCLAMATION | MB_APPLMODAL);
        !           239: 
        !           240:                return (FALSE);
        !           241:        }
        !           242: 
        !           243:        _lclose((HFILE)hFile);
        !           244: 
        !           245:     return (TRUE);
        !           246: 
        !           247: } /* end dlgsaveas */
        !           248: 
        !           249: 
        !           250: /*=============================================================================
        !           251:  DLGMERGESTRINGS scans string1 for merge spec (%%). If found, insert string2 at
        !           252:  that point, and then append remainder of string1.  Result in string3.
        !           253: ==============================================================================*/
        !           254: BOOL
        !           255: DlgMergeStrings(
        !           256:        CHAR   *szSrc,
        !           257:        CHAR   *szMerge,
        !           258:        CHAR   *szDst
        !           259:        )
        !           260: {
        !           261:     CHAR *pchSrc;
        !           262:     CHAR *pchDst;
        !           263: 
        !           264:     pchSrc = szSrc;
        !           265:     pchDst = szDst;
        !           266: 
        !           267:     /* Find merge spec if there is one. */
        !           268:     while (!((*pchSrc == '%') && (*(pchSrc+1) == '%')))  {
        !           269:         *pchDst++ = *pchSrc;
        !           270: 
        !           271:         /* If we reach end of string before merge spec, just return. */
        !           272:         if (!*pchSrc++)
        !           273:             return FALSE;
        !           274: 
        !           275:     }
        !           276:     /* If merge spec found, insert sz2 there. (check for null merge string */
        !           277:     if (szMerge) {
        !           278:         while (*szMerge)
        !           279:             *pchDst++ = *szMerge++;
        !           280: 
        !           281:     }
        !           282: 
        !           283:     /* Jump over merge spec */
        !           284:     pchSrc++; pchSrc++;
        !           285: 
        !           286: 
        !           287:     /* Now append rest of Src String */
        !           288:     while (*pchDst++ = *pchSrc++);
        !           289:     return TRUE;
        !           290: 
        !           291: } /* end dlgmergestrings */
        !           292: 
        !           293: 
        !           294: BOOL
        !           295: DlgCheckFormat (
        !           296:        HANDLE hInstance,       // app module instance handle
        !           297:        HWND   hWndParent       // window handle of parent window
        !           298:        )
        !           299: {
        !           300:     //FARPROC  lpProc;
        !           301:     BOOL     fResult;
        !           302: 
        !           303:     fResult = DialogBox (hInstance, (LPSTR)MAKEINTRESOURCE (IDD_FORMAT),
        !           304:                        //hWndParent, (WNDPROC)(lpProc = DlgFnCheckFormat));
        !           305:                        hWndParent, (WNDPROC)DlgFnCheckFormat);
        !           306: 
        !           307:     //FreeProcInstance(lpProc);
        !           308: 
        !           309:        return (fResult);
        !           310: 
        !           311: } /* end dlgcheckformat */
        !           312: 
        !           313: 
        !           314: BOOL APIENTRY
        !           315: DlgFnCheckFormat (
        !           316:        HWND   hDlg,
        !           317:        WORD   message,
        !           318:        WPARAM wParam,
        !           319:        LPARAM lParam
        !           320:        )
        !           321: {
        !           322: 
        !           323:        switch (message)
        !           324:        {
        !           325: 
        !           326:                case WM_INITDIALOG:
        !           327:                        CheckRadioButton (hDlg, ID_FORMAT2, ID_FORMAT3, iFontFormat);
        !           328:                        break;
        !           329: 
        !           330:                case WM_COMMAND:
        !           331: 
        !           332:                        switch (LOWORD(wParam))
        !           333:                        {
        !           334:                                case IDOK:
        !           335: 
        !           336:                                        EndDialog (hDlg, TRUE);
        !           337:                                        break;
        !           338: 
        !           339:                                case IDCANCEL:
        !           340:                                        EndDialog (hDlg, FALSE);
        !           341:                                        break;
        !           342: 
        !           343:                                case ID_FORMAT2:
        !           344:                                case ID_FORMAT3:
        !           345:                                        CheckRadioButton(hDlg, ID_FORMAT2,ID_FORMAT3,
        !           346:                                                        iFontFormat = LOWORD(wParam));
        !           347:                                        break;
        !           348: 
        !           349:                                default:
        !           350: 
        !           351:                                        return FALSE;
        !           352: 
        !           353:                        } /* end switch wparam */
        !           354:                        break;
        !           355: 
        !           356:                default:
        !           357: 
        !           358:                        return FALSE;
        !           359: 
        !           360:        } /* end switch message */
        !           361: 
        !           362:        return TRUE;
        !           363: 
        !           364: } /* end dlgsaveasdlg */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.