home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 May / Pcwk5b98.iso / Borland / Cplus45 / BC45 / DIAGXPRT.PAK / DIAGXPRT.H < prev    next >
C/C++ Source or Header  |  1995-08-29  |  4KB  |  143 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectWindows - (C) Copyright 1991, 1993 by Borland International
  3. //----------------------------------------------------------------------------
  4. #ifndef __DIAGXPRT_H
  5. #define __DIAGXPRT_H
  6.  
  7. #include <owl\owlpch.h>
  8. #include <owl\applicat.h>
  9. #include <owl\decframe.h>
  10. #include <owl\controlb.h>
  11. #include <owl\editfile.h>
  12. #include <owl\buttonga.h>
  13. #include <owl\dialog.h>
  14. #include <owl\tinycapt.h>
  15. #include <owl\menu.h>
  16. #include <owl\statusba.h>
  17.  
  18. #if !defined(BI_PLAT_WIN16)
  19. #error  This sample requires TOOLHELP and must be built for the WIN16 env.
  20. #endif
  21.  
  22. #include <toolhelp.h>
  23. #include <iostream.h>
  24. #include <cstring.h>
  25. #include <stdio.h>
  26.  
  27. #define DIAG_INI  "owl.ini"
  28. #define DIAG_CLS  "owldiag"
  29. #define DIAG_RECT "rect"
  30. #define DIAG_MODE "mode"
  31. #define DIAG_SIZE "size"
  32.  
  33. #define CM_LOGPARAMERROR  WM_USER+1000
  34. #define CM_LOGERROR       CM_LOGPARAMERROR+1
  35. #define CM_OUTSTR         CM_LOGERROR+1
  36. #define CM_DEFAULT        CM_OUTSTR+1
  37.  
  38. class TDispData {
  39.   public:
  40.     char   ModuleName[80];  // Sizes?
  41.     char   ProcName[256];   // Also gets used for OutputDebugString messages
  42.     UINT   ErrorCode;
  43.     DWORD  Data;
  44.     void far* far* Param;
  45. };
  46.  
  47. class TDiagFrame : public TDecoratedFrame, public TTinyCaption {
  48.   public:
  49.     TDiagFrame(const char* t, TWindow* c);
  50.  
  51.   protected:
  52.     LRESULT  EvCommand(UINT id, HWND hWndCtl, UINT notifyCode);
  53.     void     EvSysCommand(UINT cmdType, TPoint& p);
  54.     void     EvSize(UINT type, TSize& size);
  55.     void     SetupWindow();
  56.     void     CleanupWindow();
  57.     void     CmToggleSize();
  58.  
  59.   private:
  60.     TRect    rect;
  61.  
  62.   DECLARE_RESPONSE_TABLE(TDiagFrame);
  63. };
  64.  
  65. class TToolHelp {
  66.   public:
  67.     struct   ERRMAP { UINT err; char* szErr; };
  68.     static   ERRMAP errmap[];
  69.     void     FormatLogParamError(char *p, int size, TDispData *d);
  70.     void     FormatLogError(char *p, int size, TDispData *d);
  71.  
  72.     char*    GetTaskName();
  73.     char*    GetProcName(FARPROC p);
  74.  
  75.   private:
  76.     static   char buffer[1024];
  77.     char     TaskName[10];
  78.     char     ProcName[80];
  79. };
  80.  
  81. class TDiagClient : public TToolHelp, public TEditFile {
  82.   public:
  83.     enum { maxLines = 512 };
  84.   
  85.     enum     Mode { normalMode = 1, ripMode = 2 } mode;
  86.     enum     Size { bigSize = 1, smallSize = 2 } size;
  87.   
  88.     Size     GetSize() {return size;}
  89.     void     SetSize(Size s);
  90.     Mode     GetMode() {return mode;}
  91.     void     SetMode(Mode m) {mode = m;}
  92.     void     SetupWindow();
  93.  
  94.     void     CleanupWindow();
  95.     static   TDiagClient* pThis;
  96.     TFont*   pFont0;
  97.     TFont*   pFont1;
  98.     FARPROC  pThunk;
  99.  
  100.   protected:
  101.     int     nActive;
  102.   
  103.     void    CmFileNewEnable(TCommandEnabler &c){ c.Enable(1); }
  104.     void    CmFileOpenEnable(TCommandEnabler &c){ c.Enable(1); }
  105.     void    CmFileSaveEnable(TCommandEnabler &c) { TEditFile::CmSaveEnable(c); }
  106.     void    CmFileSaveAsEnable(TCommandEnabler &c) { c.Enable(1); }
  107.     void    CmStartStopEnable(TCommandEnabler &c) { c.Enable(1); }
  108.     void    CmSetupEnable(TCommandEnabler &c) { c.Enable(1); }
  109.     void    CmStartEnable(TCommandEnabler &c) { c.Enable(!nActive); }
  110.     void    CmStopEnable(TCommandEnabler &c) { c.Enable(nActive); }
  111.     void    CmFileNew() { TEditFile::CmFileNew(); }
  112.     void    CmFileOpen() { TEditFile::CmFileOpen(); }
  113.     void    CmFileSave() { TEditFile::CmFileSave(); }
  114.     void    CmFileSaveAs() { TEditFile::CmFileSaveAs(); }
  115.     void    CmSetup();
  116.     void    CmStart();
  117.     void    CmStop();
  118.     void    CmMem();
  119.     void    CmHelp();
  120.     LRESULT CmOutStr(WPARAM wParam, LPARAM lParam);
  121.     LRESULT CmLogError(WPARAM wParam, LPARAM lParam);
  122.     LRESULT CmLogParamError(WPARAM wParam, LPARAM lParam);
  123.     LRESULT CmDefault(WPARAM wParam, LPARAM lParam);
  124.     void    LoadMode();
  125.     void    SaveMode();
  126.   
  127.     // Override of TEditFile::CanClear()
  128.     //
  129.     BOOL    CanClear();
  130.  
  131.   DECLARE_RESPONSE_TABLE(TDiagClient);
  132. };
  133.  
  134. class TOwlDiagApp : public TApplication {
  135.   public:
  136.     void  InitMainWindow();
  137.  
  138.   private:
  139.     static int   speedbar[];
  140. };
  141.  
  142. #endif
  143.