Annotation of mstools/samples/sdktools/perfmon/fileopen.c, revision 1.1

1.1     ! root        1: #include "perfmon.h"
        !             2: #include "cderr.h"
        !             3: 
        !             4: #include "alert.h"      // for OpenAlert
        !             5: #include "fileutil.h"   // for FileOpen, FileRead
        !             6: #include "grafdata.h"   // for OpenChart
        !             7: #include "log.h"        // for OpenLog
        !             8: #include "report.h"     // for OpenReport
        !             9: #include "utils.h"      // for strempty
        !            10: #include "perfmops.h"   // for OpenWorkspace
        !            11: #include "pmhelpid.h"   // Help IDs
        !            12: #include <dlgs.h>       // for pshHelp
        !            13: 
        !            14: #define OptionsOFNStyle \
        !            15:    (OFN_HIDEREADONLY | OFN_SHOWHELP | OFN_OVERWRITEPROMPT | OFN_ENABLEHOOK)
        !            16: 
        !            17: #define ExportOptionsOFNStyle                   \
        !            18:    (OFN_ENABLETEMPLATE | OFN_HIDEREADONLY |     \
        !            19:     OFN_SHOWHELP | OFN_ENABLEHOOK | OFN_OVERWRITEPROMPT)
        !            20: 
        !            21: extern BOOL APIENTRY ExportOptionsHookProc (HWND hDlg, UINT iMessage, 
        !            22:                                             WPARAM wParam, LPARAM lParam) ;
        !            23: 
        !            24: BOOL APIENTRY FileOpenHookProc (HWND hDlg, 
        !            25:                                 UINT iMessage, 
        !            26:                                 WPARAM wParam, 
        !            27:                                 LPARAM lParam)
        !            28: {
        !            29:    BOOL     bHandled = FALSE ;
        !            30:    
        !            31:    // only intercept the Help button and bring up our WinHelp data
        !            32:    if (iMessage == WM_COMMAND && wParam == pshHelp)
        !            33:       {
        !            34:       CallWinHelp (dwCurrentDlgID) ;
        !            35:       bHandled = TRUE ;
        !            36:       }
        !            37:    else if (iMessage == WM_INITDIALOG)
        !            38:       {
        !            39:       WindowCenter (hDlg) ;
        !            40:       bHandled = TRUE ;
        !            41:       }
        !            42: 
        !            43:    return (bHandled) ;
        !            44: }
        !            45: 
        !            46: 
        !            47: 
        !            48: BOOL FileOpen (HWND hWndParent, int nStringResourceID, LPTSTR lpInputFileName)
        !            49:    {
        !            50:    OPENFILENAME   ofn ;
        !            51:    TCHAR          szFileSpec [256] ;
        !            52:    TCHAR          szFileTitle [80] ;
        !            53:    TCHAR          szDialogTitle [80] ;
        !            54:    HANDLE         hFile ;
        !            55:    PERFFILEHEADER FileHeader ;
        !            56:    
        !            57:    TCHAR          aszOpenFilter[LongTextLen] ;
        !            58:    int            StringLength ;
        !            59:    BOOL           retCode ;
        !            60:    LPTSTR         pFileName = NULL ;
        !            61: 
        !            62:    if (strempty(lpInputFileName))
        !            63:       {
        !            64: 
        !            65:       dwCurrentDlgID = HC_PM_idDlgFileOpen ;
        !            66: 
        !            67:       // get the file extension strings
        !            68:       LoadString (hInstance, nStringResourceID, aszOpenFilter,
        !            69:          sizeof(aszOpenFilter) / sizeof(TCHAR)) ;
        !            70:       StringLength = lstrlen (aszOpenFilter) + 1 ;
        !            71:       LoadString (hInstance, nStringResourceID+1,
        !            72:          &aszOpenFilter[StringLength],
        !            73:          sizeof(aszOpenFilter) / sizeof(TCHAR) - StringLength) ;
        !            74:       StringLength += lstrlen (&aszOpenFilter[StringLength]) + 1 ;
        !            75: 
        !            76: #ifdef ADVANCED_PERFMON
        !            77:       // get workspace file extension strings
        !            78:       LoadString (hInstance, IDS_WORKSPACEFILE, 
        !            79:          &aszOpenFilter[StringLength],
        !            80:          sizeof(aszOpenFilter) / sizeof(TCHAR) - StringLength) ;
        !            81:       StringLength += lstrlen (&aszOpenFilter[StringLength]) + 1 ;
        !            82:       LoadString (hInstance, IDS_WORKSPACEFILEEXT,
        !            83:          &aszOpenFilter[StringLength],
        !            84:          sizeof(aszOpenFilter) / sizeof(TCHAR) - StringLength) ;
        !            85:       StringLength += lstrlen (&aszOpenFilter[StringLength]) + 1;
        !            86: #endif
        !            87: 
        !            88:       // get all file extension strings
        !            89:       LoadString (hInstance, IDS_ALLFILES, 
        !            90:          &aszOpenFilter[StringLength],
        !            91:          sizeof(aszOpenFilter) / sizeof(TCHAR) - StringLength) ;
        !            92:       StringLength += lstrlen (&aszOpenFilter[StringLength]) + 1 ;
        !            93:       LoadString (hInstance, IDS_ALLFILESEXT,
        !            94:          &aszOpenFilter[StringLength],
        !            95:          sizeof(aszOpenFilter) / sizeof(TCHAR) - StringLength) ;
        !            96:       StringLength += lstrlen (&aszOpenFilter[StringLength]) ;
        !            97: 
        !            98:       // setup the end strings
        !            99:       aszOpenFilter[StringLength+1] = aszOpenFilter[StringLength+2] = TEXT('\0') ;
        !           100: 
        !           101:       strclr (szFileSpec) ;
        !           102:       strclr (szFileTitle) ;
        !           103: 
        !           104:       StringLoad (IDS_FILEOPEN_TITLE, szDialogTitle) ;
        !           105:       memset (&ofn, 0, sizeof(OPENFILENAME)) ;
        !           106:       ofn.lStructSize = sizeof(OPENFILENAME) ;
        !           107:       ofn.hwndOwner = hWndParent ;
        !           108:       ofn.hInstance = hInstance;
        !           109:       ofn.lpstrTitle = szDialogTitle ;
        !           110:       ofn.lpstrFilter = aszOpenFilter ;
        !           111:       ofn.nFilterIndex = 1L ;
        !           112: 
        !           113:       ofn.lpstrFile = szFileSpec;
        !           114:       ofn.nMaxFile = sizeof(szFileSpec);
        !           115:       ofn.lpstrFileTitle = szFileTitle;
        !           116:       ofn.nMaxFileTitle = sizeof(szFileTitle);
        !           117:       ofn.Flags = OFN_HIDEREADONLY | OFN_SHOWHELP | OFN_FILEMUSTEXIST | OFN_ENABLEHOOK ;
        !           118:       ofn.lpfnHook = (LPOFNHOOKPROC) FileOpenHookProc ;
        !           119: 
        !           120:       if (!GetOpenFileName(&ofn))
        !           121:          {
        !           122:          dwCurrentDlgID = 0 ;
        !           123:          return (FALSE) ;
        !           124:          }
        !           125: 
        !           126:       dwCurrentDlgID = 0 ;
        !           127: 
        !           128:       hFile = FileHandleOpen (szFileSpec) ;
        !           129:       pFileName = szFileSpec ;
        !           130: 
        !           131:       }  // NULL lpFileName
        !           132: 
        !           133:    else
        !           134:       {
        !           135:       // open the input file
        !           136:       hFile = FileHandleOpen (lpInputFileName) ;
        !           137:       if (hFile && hFile != INVALID_HANDLE_VALUE &&
        !           138:           SearchPath (NULL, lpInputFileName, NULL,
        !           139:             sizeof(szFileSpec)/sizeof(TCHAR) - 1,
        !           140:             szFileSpec, &pFileName))
        !           141:          {
        !           142:          pFileName = szFileSpec ;
        !           143:          }
        !           144:       else
        !           145:          {
        !           146:          pFileName = NULL ;
        !           147:          }
        !           148:       }
        !           149: 
        !           150:    if (!hFile || hFile == INVALID_HANDLE_VALUE)
        !           151:       {
        !           152:       return (FALSE) ;
        !           153:       }
        !           154: 
        !           155:    if (!FileRead (hFile, &FileHeader, sizeof (FileHeader)))
        !           156:       {
        !           157:       CloseHandle (hFile) ;
        !           158:       if (strempty(lpInputFileName))
        !           159:          {
        !           160:          DlgErrorBox (hWndParent, ERR_BAD_SETTING_FILE, pFileName) ;
        !           161:          }
        !           162:       return (FALSE) ;
        !           163:       }
        !           164: 
        !           165: 
        !           166:    //=============================//
        !           167:    // Chart File?                 //
        !           168:    //=============================//
        !           169: 
        !           170:    if (strsame (FileHeader.szSignature, szPerfChartSignature))
        !           171:       {
        !           172:       retCode = OpenChart (hWndGraph,
        !           173:                            hFile,
        !           174:                            FileHeader.dwMajorVersion,
        !           175:                            FileHeader.dwMinorVersion,
        !           176:                            TRUE) ;
        !           177:       if (retCode)
        !           178:          {
        !           179:          ChangeSaveFileName (pFileName, IDM_VIEWCHART) ;
        !           180:          }
        !           181:       else
        !           182:          {
        !           183:          goto ErrExit ;
        !           184:          }
        !           185:       return (retCode) ;
        !           186:       }
        !           187: 
        !           188: #ifdef ADVANCED_PERFMON
        !           189:    //=============================//
        !           190:    // Alert File?                 //
        !           191:    //=============================//
        !           192: 
        !           193:    if (strsame (FileHeader.szSignature, szPerfAlertSignature))
        !           194:       {
        !           195:       retCode = OpenAlert (hWndAlert,
        !           196:                            hFile,
        !           197:                            FileHeader.dwMajorVersion,
        !           198:                            FileHeader.dwMinorVersion,
        !           199:                            TRUE) ;
        !           200:       if (retCode)
        !           201:          {
        !           202:          ChangeSaveFileName (pFileName, IDM_VIEWALERT) ;
        !           203:          }
        !           204:       else
        !           205:          {
        !           206:          goto ErrExit ;
        !           207:          }
        !           208: 
        !           209:       return (retCode) ;
        !           210:       }
        !           211: 
        !           212: 
        !           213:    //=============================//
        !           214:    // Log File?                   //
        !           215:    //=============================//
        !           216: 
        !           217:    if (strsame (FileHeader.szSignature, szPerfLogSignature))
        !           218:       {
        !           219:       retCode = OpenLog (hWndLog,
        !           220:                          hFile,
        !           221:                          FileHeader.dwMajorVersion,
        !           222:                          FileHeader.dwMinorVersion,
        !           223:                          TRUE) ;
        !           224:       if (retCode)
        !           225:          {
        !           226:          ChangeSaveFileName (pFileName, IDM_VIEWLOG) ;
        !           227:          }
        !           228:       else
        !           229:          {
        !           230:          goto ErrExit ;
        !           231:          }
        !           232: 
        !           233:       return (retCode) ;
        !           234:       }
        !           235: 
        !           236:    //=============================//
        !           237:    // Report File?                //
        !           238:    //=============================//
        !           239: 
        !           240:    if (strsame (FileHeader.szSignature, szPerfReportSignature))
        !           241:       {
        !           242:       retCode = OpenReport (hWndReport,
        !           243:                             hFile,
        !           244:                             FileHeader.dwMajorVersion,
        !           245:                             FileHeader.dwMinorVersion,
        !           246:                             TRUE) ;
        !           247:       if (retCode)
        !           248:          {
        !           249:          ChangeSaveFileName (pFileName, IDM_VIEWREPORT) ;
        !           250:          }
        !           251:       else
        !           252:          {
        !           253:          goto ErrExit ;
        !           254:          }
        !           255: 
        !           256:       return (retCode) ;
        !           257:       }
        !           258: 
        !           259:    //=============================//
        !           260:    // Workspace File?             //
        !           261:    //=============================//
        !           262: 
        !           263:    if (strsame (FileHeader.szSignature, szPerfWorkspaceSignature))
        !           264:       {
        !           265:       retCode = OpenWorkspace (hFile,
        !           266:                                FileHeader.dwMajorVersion,
        !           267:                                FileHeader.dwMinorVersion) ;
        !           268:       if (retCode)
        !           269:          {
        !           270:          return (TRUE) ;
        !           271:          }
        !           272:       else
        !           273:          {
        !           274:          goto ErrExit ;
        !           275:          }
        !           276:       }
        !           277: #endif
        !           278: 
        !           279:    //=============================//
        !           280:    // Unknown file type           //
        !           281:    //=============================//
        !           282:    CloseHandle (hFile) ;
        !           283: 
        !           284: ErrExit:
        !           285: 
        !           286:    DlgErrorBox (hWndParent, ERR_BAD_SETTING_FILE, pFileName) ;
        !           287:    return (FALSE) ;
        !           288:    }  // FileOpen
        !           289: 
        !           290: 
        !           291: BOOL FileGetName (HWND hWndParent, int nStringResourceID, LPTSTR lpFileName)
        !           292:    {
        !           293:    OPENFILENAME   ofn ;
        !           294:    TCHAR          szFileSpec [256] ;
        !           295:    TCHAR          szFileTitle [80] ;
        !           296:    TCHAR          szDialogTitle [80] ;
        !           297:    TCHAR          aszOpenFilter[LongTextLen] ;
        !           298:    int            StringLength ;
        !           299: 
        !           300:    if (lpFileName)
        !           301:       {
        !           302: 
        !           303:       // get the file extension strings
        !           304:       LoadString (hInstance, nStringResourceID,
        !           305:          aszOpenFilter,
        !           306:          sizeof(aszOpenFilter) / sizeof(TCHAR) ) ;
        !           307:       StringLength = lstrlen (aszOpenFilter) + 1 ;
        !           308:       LoadString (hInstance, nStringResourceID+1,
        !           309:          &aszOpenFilter[StringLength],
        !           310:          sizeof(aszOpenFilter) / sizeof(TCHAR) - StringLength) ;
        !           311: 
        !           312:       if (nStringResourceID != IDS_EXPORTFILE)
        !           313:          {
        !           314:          StringLength += lstrlen (&aszOpenFilter[StringLength]) + 1 ;
        !           315:          // get all file extension strings
        !           316:          LoadString (hInstance, IDS_ALLFILES, 
        !           317:             &aszOpenFilter[StringLength],
        !           318:             sizeof(aszOpenFilter) / sizeof(TCHAR) - StringLength) ;
        !           319:          StringLength += lstrlen (&aszOpenFilter[StringLength]) + 1 ;
        !           320:          LoadString (hInstance, IDS_ALLFILESEXT,
        !           321:             &aszOpenFilter[StringLength],
        !           322:             sizeof(aszOpenFilter) / sizeof(TCHAR) - StringLength) ;
        !           323:          }
        !           324: 
        !           325:       // setup the end strings
        !           326:       StringLength += lstrlen (&aszOpenFilter[StringLength]) ;
        !           327:       aszOpenFilter[StringLength+1] = aszOpenFilter[StringLength+2] = TEXT('\0') ;
        !           328: 
        !           329:       strclr (szFileSpec) ;
        !           330:       strclr (szFileTitle) ;
        !           331: 
        !           332:       if (nStringResourceID == IDS_EXPORTFILE)
        !           333:          {
        !           334:          dwCurrentDlgID = HC_PM_idDlgFileExport ;
        !           335:          StringLoad (IDS_EXPORTAS_TITLE, szDialogTitle) ;
        !           336:          }
        !           337:       else if (nStringResourceID == IDS_WORKSPACEFILE)
        !           338:          {
        !           339:          dwCurrentDlgID = HC_PM_idDlgFileSaveWorkSpace ;
        !           340:          StringLoad (IDS_SAVEASW_TITLE, szDialogTitle) ;
        !           341:          }
        !           342:       else
        !           343:          {
        !           344:          dwCurrentDlgID = HC_PM_idDlgFileSaveAs ;
        !           345:          StringLoad (IDS_SAVEAS_TITLE, szDialogTitle) ;
        !           346:          }
        !           347: 
        !           348:       memset (&ofn, 0, sizeof(OPENFILENAME)) ;
        !           349:       ofn.lStructSize = sizeof(OPENFILENAME) ;
        !           350:       ofn.hwndOwner = hWndParent ;
        !           351:       ofn.hInstance = hInstance;
        !           352:       ofn.lpstrTitle = szDialogTitle ;
        !           353:       ofn.lpstrFilter = aszOpenFilter ;
        !           354:       ofn.nFilterIndex = 1L ;
        !           355: 
        !           356:       ofn.lpstrFile = szFileSpec;
        !           357:       ofn.nMaxFile = sizeof(szFileSpec);
        !           358:       ofn.lpstrFileTitle = szFileTitle;
        !           359:       ofn.nMaxFileTitle = sizeof(szFileTitle);
        !           360: 
        !           361:       if (nStringResourceID == IDS_EXPORTFILE)
        !           362:          {
        !           363:          ofn.Flags = ExportOptionsOFNStyle ;
        !           364:          ofn.lpfnHook = (LPOFNHOOKPROC) ExportOptionsHookProc ;
        !           365:          ofn.lpTemplateName = idDlgExportOptions ;
        !           366:          }
        !           367:       else
        !           368:          {
        !           369:          ofn.Flags = OptionsOFNStyle ;
        !           370:          ofn.lpfnHook = (LPOFNHOOKPROC) FileOpenHookProc ;
        !           371:          }
        !           372: 
        !           373:       if (!GetSaveFileName(&ofn))
        !           374:          {
        !           375:          dwCurrentDlgID = 0 ;
        !           376:          return (FALSE) ;
        !           377:          }
        !           378:       dwCurrentDlgID = 0 ;
        !           379:       }
        !           380:    else
        !           381:       {
        !           382:       return (FALSE) ;
        !           383:       }
        !           384: 
        !           385:    lstrcpy (lpFileName, ofn.lpstrFile) ;
        !           386: 
        !           387:    return (TRUE) ;
        !           388:    } // FileGetName
        !           389: 
        !           390: 

unix.superglobalmegacorp.com

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