|
|
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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.