Annotation of mstools/samples/sdktools/perfmon/fileopen.c, revision 1.1.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.