Diff for /np2/win9xc/trace.cpp between versions 1.1.1.1 and 1.15

version 1.1.1.1, 2003/10/16 17:59:19 version 1.15, 2005/02/07 14:46:15
Line 2 Line 2
 #include        <stdarg.h>  #include        <stdarg.h>
 #include        "strres.h"  #include        "strres.h"
 #include        "dosio.h"  #include        "dosio.h"
   
   
 // #define      WRITE_INI  
 #if defined(WRITE_INI)  
 #include        "ini.h"  #include        "ini.h"
 #endif  
   
 #ifdef TRACE  #ifdef TRACE
   
   // #define FILEBUFSIZE                  (1 << 20)
   // #define FILELASTBUFONLY
   
 #ifdef STRICT  #ifdef STRICT
 #define SUBCLASSPROC    WNDPROC  #define SUBCLASSPROC    WNDPROC
 #else  #else
Line 25 Line 24
 #define VIEW_SIZE               12  #define VIEW_SIZE               12
   
 typedef struct {  typedef struct {
           UINT8   en;
           FILEH   fh;
           HWND    hwnd;
   } TRACEWIN;
   
   typedef struct {
         int             posx;          int             posx;
         int             posy;          int             posy;
         int             width;          int             width;
Line 34  typedef struct { Line 39  typedef struct {
 extern  HINSTANCE       hInst;  extern  HINSTANCE       hInst;
 extern  HINSTANCE       hPrev;  extern  HINSTANCE       hPrev;
   
   enum {
           IDM_TRACE1              = 3300,
           IDM_TRACE2,
           IDM_TRACEEN,
           IDM_TRACEFH,
           IDM_TRACECL
   };
   
 static const char       ProgTitle[] = "console";  static const char       ProgTitle[] = "console";
 static const char       ClassName[] = "TRACE-console";  static const char       ClassName[] = "TRACE-console";
 static const char       ClassEdit[] = "EDIT";  static const char       ClassEdit[] = "EDIT";
   static const char       trace1[] = "TRACE";
   static const char       trace2[] = "VERBOSE";
   static const char       traceen[] = "Enable";
   static const char       tracefh[] = "File out";
   static const char       tracecl[] = "Clear";
 static const char       crlf[] = "\r\n";  static const char       crlf[] = "\r\n";
   
 static  HWND            hWndConsole = NULL;  static  TRACEWIN        tracewin;
 static  HWND            hView = NULL;  static  HWND            hView = NULL;
 static  HFONT           hfView = NULL;  static  HFONT           hfView = NULL;
 static  HBRUSH          hBrush = NULL;  static  HBRUSH          hBrush = NULL;
 static  char            szView[VIEW_BUFFERSIZE];  static  char            szView[VIEW_BUFFERSIZE];
 static  TRACECFG        tracecfg;  static  TRACECFG        tracecfg;
   
 #if defined(WRITE_INI)  static const char       np2trace[] = "np2trace.ini";
 static const char       inititle[] = "TRACE";  static const char       inititle[] = "TRACE";
 static const INITBL     initbl[4] = {  static const INITBL     initbl[4] = {
                                         {str_posx,              INITYPE_SINT32, &tracecfg.posx,         0},                          {"posx",        INITYPE_SINT32, &tracecfg.posx,         0},
                                         {str_posy,              INITYPE_SINT32, &tracecfg.posy,         0},                          {"posy",        INITYPE_SINT32, &tracecfg.posy,         0},
                                         {str_width,             INITYPE_SINT32, &tracecfg.width,        0},                          {"width",       INITYPE_SINT32, &tracecfg.width,        0},
                                         {str_height,    INITYPE_SINT32, &tracecfg.height,       0}};                          {"height",      INITYPE_SINT32, &tracecfg.height,       0}};
 #endif  
   
   
 static void View_ScrollToBottom(HWND hWnd) {  static void View_ScrollToBottom(HWND hWnd) {
   
Line 65  static void View_ScrollToBottom(HWND hWn Line 81  static void View_ScrollToBottom(HWND hWn
         PostMessage(hWnd, EM_LINESCROLL, 0, MaxPos);          PostMessage(hWnd, EM_LINESCROLL, 0, MaxPos);
 }  }
   
 static void View_AddString(char *lpszString) {  static void View_ClrString(void) {
   
           szView[0] = '\0';
           SetWindowText(hView, szView);
   }
   
   static void View_AddString(const char *lpszString) {
   
         int             len, vlen;          int             len, vlen;
         char    *p;          char    *p;
Line 91  static void View_AddString(char *lpszStr Line 113  static void View_AddString(char *lpszStr
         View_ScrollToBottom(hView);          View_ScrollToBottom(hView);
 }  }
   
   
   // ----
   
   #if defined(FILEBUFSIZE)
   static  char    filebuf[FILEBUFSIZE];
   static  UINT32  filebufpos;
   #endif
   
   static void trfh_close(void) {
   
           FILEH   fh;
   
           fh = tracewin.fh;
           tracewin.fh = FILEH_INVALID;
           if (fh != FILEH_INVALID) {
   #if defined(FILEBUFSIZE)
                   UINT size = filebufpos & (FILEBUFSIZE - 1);
   #if defined(FILELASTBUFONLY)
                   if (filebufpos >= FILEBUFSIZE) {
                           file_write(fh, filebuf + size, FILEBUFSIZE - size);
                   }
   #endif
                   if (size) {
                           file_write(fh, filebuf, size);
                   }
   #endif
                   file_close(fh);
           }
   }
   
   static void trfh_open(const char *fname) {
   
           trfh_close();
           tracewin.fh = file_create(fname);
   #if defined(FILEBUFSIZE)
           filebufpos = 0;
   #endif
   }
   
   static void trfh_add(const char *buf) {
   
           UINT    size;
   
           size = strlen(buf);
   #if defined(FILEBUFSIZE)
           while(size) {
                   UINT pos = filebufpos & (FILEBUFSIZE - 1);
                   UINT rem = FILEBUFSIZE - pos;
                   if (size >= rem) {
                           CopyMemory(filebuf + pos, buf, rem);
                           filebufpos += rem;
                           buf += rem;
                           size -= rem;
   #if !defined(FILELASTBUFONLY)
                           file_write(tracewin.fh, filebuf, FILEBUFSIZE);
   #endif
                   }
                   else {
                           CopyMemory(filebuf + pos, buf, size);
                           filebufpos += size;
                           break;
                   }
           }
   #else
           file_write(tracewin.fh, buf, size);
   #endif
   }
   
   
   // ----
   
 static LRESULT CALLBACK traceproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {  static LRESULT CALLBACK traceproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
   
         RECT    rc;          RECT    rc;
           HMENU   hmenu;
   
         switch (msg) {          switch (msg) {
                 case WM_CREATE:                  case WM_CREATE:
                           hmenu = GetSystemMenu(hWnd, FALSE);
                           InsertMenu(hmenu, 0, MF_BYPOSITION | MF_STRING,
                                                                                                                   IDM_TRACE1, trace1);
                           InsertMenu(hmenu, 1, MF_BYPOSITION | MF_STRING,
                                                                                                                   IDM_TRACE2, trace2);
                           InsertMenu(hmenu, 2, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
                           InsertMenu(hmenu, 3, MF_BYPOSITION | MF_STRING,
                                                                                                                   IDM_TRACEEN, traceen);
                           InsertMenu(hmenu, 4, MF_BYPOSITION | MF_STRING,
                                                                                                                   IDM_TRACEFH, tracefh);
                           InsertMenu(hmenu, 5, MF_BYPOSITION | MF_STRING,
                                                                                                                   IDM_TRACECL, tracecl);
                           InsertMenu(hmenu, 6, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
   
                           CheckMenuItem(hmenu, IDM_TRACE1,
                                                                   (tracewin.en & 1)?MF_CHECKED:MF_UNCHECKED);
                           CheckMenuItem(hmenu, IDM_TRACE2,
                                                                   (tracewin.en & 2)?MF_CHECKED:MF_UNCHECKED);
                           CheckMenuItem(hmenu, IDM_TRACEEN,
                                                                   (tracewin.en & 4)?MF_CHECKED:MF_UNCHECKED);
   
                         GetClientRect(hWnd, &rc);                          GetClientRect(hWnd, &rc);
                         hView = CreateWindowEx(WS_EX_CLIENTEDGE,                          hView = CreateWindowEx(WS_EX_CLIENTEDGE,
                                                         ClassEdit, NULL,                                                          ClassEdit, NULL,
Line 121  static LRESULT CALLBACK traceproc(HWND h Line 236  static LRESULT CALLBACK traceproc(HWND h
                         SetFocus(hView);                          SetFocus(hView);
                         return(TRUE);                          return(TRUE);
   
                   case WM_SYSCOMMAND:
                           switch(wp) {
                                   case IDM_TRACE1:
                                           tracewin.en ^= 1;
                                           hmenu = GetSystemMenu(hWnd, FALSE);
                                           CheckMenuItem(hmenu, IDM_TRACE1,
                                                                   (tracewin.en & 1)?MF_CHECKED:MF_UNCHECKED);
                                           break;
   
                                   case IDM_TRACE2:
                                           tracewin.en ^= 2;
                                           hmenu = GetSystemMenu(hWnd, FALSE);
                                           CheckMenuItem(hmenu, IDM_TRACE2,
                                                                   (tracewin.en & 2)?MF_CHECKED:MF_UNCHECKED);
                                           break;
   
                                   case IDM_TRACEEN:
                                           tracewin.en ^= 4;
                                           hmenu = GetSystemMenu(hWnd, FALSE);
                                           CheckMenuItem(hmenu, IDM_TRACEEN,
                                                                   (tracewin.en & 4)?MF_CHECKED:MF_UNCHECKED);
                                           break;
   
                                   case IDM_TRACEFH:
                                           if (tracewin.fh != FILEH_INVALID) {
                                                   trfh_close();
                                           }
                                           else {
                                                   trfh_open("traceout.txt");
                                           }
                                           hmenu = GetSystemMenu(hWnd, FALSE);
                                           CheckMenuItem(hmenu, IDM_TRACEFH,
                                                                           (tracewin.fh != FILEH_INVALID)?
                                                                                                           MF_CHECKED:MF_UNCHECKED);
                                           break;
   
                                   case IDM_TRACECL:
                                           View_ClrString();
                                           break;
   
                                   default:
                                           return(DefWindowProc(hWnd, msg, wp, lp));
                           }
                           break;
   
                 case WM_MOVE:                  case WM_MOVE:
                         if (!(GetWindowLong(hWnd, GWL_STYLE) &                          if (!(GetWindowLong(hWnd, GWL_STYLE) &
                                                                                         (WS_MAXIMIZE | WS_MINIMIZE))) {                                                                                          (WS_MAXIMIZE | WS_MINIMIZE))) {
Line 185  static LRESULT CALLBACK traceproc(HWND h Line 345  static LRESULT CALLBACK traceproc(HWND h
   
 void trace_init(void) {  void trace_init(void) {
   
           HWND    hwnd;
   
         if (!hPrev) {          if (!hPrev) {
                 WNDCLASS wc;                  WNDCLASS wc;
                 wc.style = CS_HREDRAW | CS_VREDRAW;                  wc.style = CS_HREDRAW | CS_VREDRAW;
Line 202  void trace_init(void) { Line 364  void trace_init(void) {
                 }                  }
         }          }
   
   #if 1
           tracewin.en = 0;
           tracewin.fh = FILEH_INVALID;
   #else
           tracewin.en = 0;
           tracewin.fh = FILEH_INVALID;
           trfh_open("traces.txt");
   #endif
   
         tracecfg.posx = CW_USEDEFAULT;          tracecfg.posx = CW_USEDEFAULT;
         tracecfg.posy = CW_USEDEFAULT;          tracecfg.posy = CW_USEDEFAULT;
         tracecfg.width = CW_USEDEFAULT;          tracecfg.width = CW_USEDEFAULT;
         tracecfg.height = CW_USEDEFAULT;          tracecfg.height = CW_USEDEFAULT;
 #if defined(WRITE_INI)          ini_read(file_getcd(np2trace), inititle, initbl, 4);
         ini_read(NULL, inititle, initbl, 4);  
 #endif  
   
         hWndConsole = CreateWindowEx(WS_EX_CONTROLPARENT,          hwnd = CreateWindowEx(WS_EX_CONTROLPARENT,
                                                         ClassName, ProgTitle,                                                          ClassName, ProgTitle,
                                                         WS_OVERLAPPEDWINDOW,                                                          WS_OVERLAPPEDWINDOW,
                                                         tracecfg.posx, tracecfg.posy,                                                          tracecfg.posx, tracecfg.posy,
                                                         tracecfg.width, tracecfg.height,                                                          tracecfg.width, tracecfg.height,
                                                         NULL, NULL, hInst, NULL);                                                          NULL, NULL, hInst, NULL);
         if (!hWndConsole) {          tracewin.hwnd = hwnd;
           if (hwnd == NULL) {
                 return;                  return;
         }          }
         ShowWindow(hWndConsole, SW_SHOW);          ShowWindow(hwnd, SW_SHOW);
         UpdateWindow(hWndConsole);          UpdateWindow(hwnd);
 }  }
   
 void trace_term(void) {  void trace_term(void) {
   
         if (hWndConsole) {          if (tracewin.fh != FILEH_INVALID) {
                 DestroyWindow(hWndConsole);                  trfh_close();
                 hWndConsole = NULL;          }
 #if defined(WRITE_INI)          if (tracewin.hwnd) {
                 ini_write(NULL, inititle, initbl, 4);                  DestroyWindow(tracewin.hwnd);
 #endif                  tracewin.hwnd = NULL;
                   ini_write(file_getcd(np2trace), inititle, initbl, 4);
         }          }
 }  }
   
 void trace_fmt(const char *fmt, ...) {  void trace_fmt(const char *fmt, ...) {
   
           BOOL    en;
           va_list ap;
         char    buf[0x1000];          char    buf[0x1000];
   
           en = (tracewin.en & 1) &&
                   ((tracewin.en & 4) || (tracewin.fh != FILEH_INVALID));
           if (en) {
                   va_start(ap, fmt);
                   vsprintf(buf, fmt, ap);
                   va_end(ap);
                   if ((tracewin.en & 4) && (hView)) {
                           View_AddString(buf);
                   }
                   if (tracewin.fh != FILEH_INVALID) {
                           trfh_add(buf);
                           trfh_add(crlf);
                   }
           }
   }
   
   void trace_fmt2(const char *fmt, ...) {
   
           BOOL    en;
         va_list ap;          va_list ap;
           char    buf[0x1000];
   
         if (hView) {          en = (tracewin.en & 2) &&
                   ((tracewin.en & 4) || (tracewin.fh != FILEH_INVALID));
           if (en) {
                 va_start(ap, fmt);                  va_start(ap, fmt);
                 vsprintf(buf, fmt, ap);                  vsprintf(buf, fmt, ap);
                 va_end(ap);                  va_end(ap);
                 View_AddString(buf);                  if ((tracewin.en & 4) && (hView)) {
                           View_AddString(buf);
                   }
                   if (tracewin.fh != FILEH_INVALID) {
                           trfh_add(buf);
                           trfh_add(crlf);
                   }
         }          }
 }  }
   

Removed from v.1.1.1.1  
changed lines
  Added in v.1.15


RetroPC.NET-CVS <cvs@retropc.net>