home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / drdobbs / 1991 / 06 / dflat3 / log.c < prev    next >
Text File  |  1991-05-19  |  2KB  |  78 lines

  1. /* ------------ log .c ------------ */
  2.  
  3. #include <stdio.h>
  4. #include "dflat.h"
  5.  
  6. #ifdef INCLUDE_LOGGING
  7.  
  8. #undef TE
  9. #define TE(m) #m
  10.  
  11. static char *class[] = {
  12. #include "classes.h"
  13.     ,NULL
  14. };
  15.  
  16. #undef TE
  17. #define TE(m) " " #m
  18.  
  19. static char *message[] = {
  20. #include "dflatmsg.h"
  21.     ,NULL
  22. };
  23.  
  24. static FILE *log = NULL;
  25. extern DBOX Log;
  26.  
  27.  
  28. void LogMessages (WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
  29. {
  30.     if (log != NULL && message[msg][0] != ' ')
  31.         fprintf(log, "%-20.20s %-12.12s %-20.20s, %5.5ld, %5.5ld\n",
  32.             wnd ? (GetTitle(wnd) ? GetTitle(wnd) : "") : "",
  33.             wnd ? class[GetClass(wnd)] : "",
  34.             message[msg]+1, p1, p2);
  35. }
  36.  
  37. static int LogProc(WINDOW wnd, MESSAGE msg, PARAM p1, PARAM p2)
  38. {
  39.     WINDOW cwnd = ControlWindow(&Log, ID_LOGLIST);
  40.     char **mn = message;
  41.     switch (msg)    {
  42.         case INITIATE_DIALOG:
  43.             AddAttribute(cwnd, MULTILINE | VSCROLLBAR);
  44.             while (*mn)    {
  45.                 SendMessage(cwnd, ADDTEXT, (PARAM) (*mn), 0);
  46.                 mn++;
  47.             }
  48.             SendMessage(cwnd, SHOW_WINDOW, 0, 0);
  49.             break;
  50.         case COMMAND:
  51.             if ((int) p1 == ID_OK)    {
  52.                 int i;
  53.                 for (i = 0; mn[i] != NULL; i++)    {
  54.                     char *cp = TextLine(cwnd, i);
  55.                     mn[i][0] = *cp;
  56.                 }
  57.             }
  58.             break;
  59.         default:
  60.             break;
  61.     }
  62.     return DefaultWndProc(wnd, msg, p1, p2);
  63. }
  64.  
  65. void MessageLog(WINDOW wnd)
  66. {
  67.     if (DialogBox(wnd, &Log, LogProc))    {
  68.         if (CheckBoxSetting(&Log, ID_LOGGING))
  69.             log = fopen("DFLAT.LOG", "wt");
  70.         else if (log != NULL)    {
  71.             fclose(log);
  72.             log = NULL;
  73.         }
  74.     }
  75. }
  76.  
  77. #endif
  78.