home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / trace2.zip / TRACE2.H < prev    next >
C/C++ Source or Header  |  1994-04-16  |  5KB  |  165 lines

  1. /************************************************************************
  2.  
  3.   TRACER.H
  4.  
  5.  
  6.     To use TRACER, follow these 5 steps.
  7.  
  8.  
  9.     1. Include this header in your program.
  10.        Includes necessary macros. 
  11.  
  12.     2. Add macro TRACERVARIABLES above main().
  13.        Defines necessary variables / defines.-
  14.  
  15.     3. Add macro TRACERHELLO in your WM_CREATE
  16.        Put between WM_CREATE and break;
  17.        Initiates handshaking with debugger.
  18.  
  19.     4. Add macro TRACERATTACH in your WndProc.
  20.        Put as a seperate case in your WndProc.
  21.        Completes handshaking with debugger.
  22.  
  23.     !!! When placing the TRACERATTACH in your
  24.         window procedure, don't forget the
  25.         break; statement after it. !!!
  26.  
  27.     5. Use macro TRACER("string") freely.
  28.        This is the debug statement.
  29.  
  30.  
  31.  
  32.     Note:
  33.     Tracer macros are included in your program
  34.     only if the constant TDEBUG is defined prior
  35.     to the inclusion of tracer.h.  If TDEBUG is
  36.     not defined, the Tracer macros translate into
  37.     nothing.
  38.  
  39.  
  40.     Note:
  41.     You may need to include EXTERNTRACERVARS
  42.     in secondary modules if you want to call
  43.     TRACER from those modules.
  44.  
  45.  
  46.     Note:
  47.  
  48.     In the TRACERHELLO macro, there is a param
  49.     called hWnd.  You need to pass your window
  50.     handle to me so that I can send mine back
  51.     to you.  You may need to change "hWnd" to
  52.     whatever your wndproc parameter name is
  53.     for window handle ( e.g. MyhWnd ).
  54.  
  55. ************************************************************************/
  56.  
  57.  
  58.  
  59. #define TRACER_MEM     "\\SHAREMEM\\TRACER.DAT"
  60. #define TRACER_SEMAPHORE   "\\SEM32\\TRACER.SEM"
  61.  
  62.  
  63. // Step 1 - INCLUDE THIS FILE IN YOUR APP CODE AS FOLLOWS
  64.  
  65. //#include <tracer.h>
  66.  
  67.  
  68. #define TRACER_REQUEST_HANDLE   WM_USER + 501
  69. #define TRACER_RECEIVE_HANDLE   WM_USER + 502
  70. #define TRACER_REQUEST_ACTION   WM_USER + 503
  71. #define TRACER_GOODBYE          WM_USER + 504
  72. #define TRACER_MYCLOSE          WM_USER + 505
  73.  
  74.  
  75. // Step 2 - INCLUDE THE TRACERVARIABLES STATEMENT IN YOUR
  76. //                       DECLARATION SECTION
  77.  
  78. #ifdef TDEBUG
  79. #define TRACERVARIABLES                    \
  80.          PVOID      pTracerBaseAddr;       \
  81.          HMTX       hTracerSysSem;         \
  82.          BOOL       bTracerConnected;      \
  83.          HWND       hTracerWnd;            \
  84.          PSZ        pTracerString;
  85. #else
  86. #define TRACERVARIABLES
  87. #endif
  88.  
  89.  
  90.  
  91.  
  92. // Step 3 - INCLUDE THE TRACERHELLO STATEMENT IN YOUR
  93. //                      WM_CREATE MESSAGE
  94.  
  95.  
  96. #ifdef TDEBUG
  97.  
  98. #define TRACERHELLO                                        \
  99. WinBroadcastMsg( hWnd, TRACER_REQUEST_HANDLE,              \
  100.                     MPFROMHWND( hWnd ), 0L,                \
  101.                         BMSG_FRAMEONLY | BMSG_POSTQUEUE );
  102. #else
  103. #define TRACERHELLO
  104.  
  105. #endif
  106.  
  107.  
  108. // Step 4 - INCLUDE THE TRACERATTACH STATEMENT IN YOUR
  109. //                        MESSAGE WNDPROC
  110.  
  111.  
  112. #ifdef TDEBUG
  113.  
  114. #define TRACERATTACH                                                    \
  115. case TRACER_RECEIVE_HANDLE:                                             \
  116. if ( bTracerConnected )                                                 \
  117.     break;                                                              \
  118. hTracerWnd = HWNDFROMMP( mp1 );                                         \
  119. bTracerConnected = 1;                                                   \
  120. if ( DosGetNamedSharedMem( &pTracerBaseAddr,TRACER_MEM,fPERM ) )        \
  121.     bTracerConnected = 0;                                               \
  122. if ( DosOpenMutexSem(TRACER_SEMAPHORE, &hTracerSysSem ) )               \
  123.     bTracerConnected = 0;                                               \
  124.  
  125. #else
  126. #define TRACERATTACH
  127. #endif
  128.  
  129.  
  130.  
  131. // Step 5 - THEN USE THE TRACER("HELLO, WORLD") MACRO FREELY
  132.  
  133. #ifdef TDEBUG
  134.  
  135. #define TRACER(s)                                                  \
  136.  if ( bTracerConnected )                                           \
  137.  {                                                                 \
  138.  pTracerString = (PSZ) pTracerBaseAddr;                           \
  139.  DosRequestMutexSem( hTracerSysSem, -1L );                         \
  140.  strncpy( pTracerString, s, 80 );                                  \
  141.  pTracerString[80] = '\0';                                         \
  142.  WinSendMsg( hTracerWnd, TRACER_REQUEST_ACTION, 0L, 0L );          \
  143.  DosReleaseMutexSem( hTracerSysSem );                              \
  144.  }
  145. #else
  146.  
  147. #define TRACER(s) {}
  148.  
  149. #endif
  150.  
  151.  
  152. #define EXTERNTRACERVARS                                           \
  153. extern unsigned short      sTracerSelector;                        \
  154. extern          HSYSSEM    hTracerSysSem;                          \
  155. extern          BOOL       bTracerConnected;                       \
  156. extern          char far * szSelector_string;                      \
  157. extern          HWND       hTracerWnd;
  158.  
  159. extern   PVOID      pTracerBaseAddr;                               \
  160. extern   HMTX       hTracerSysSem;                                 \
  161. extern   BOOL       bTracerConnected;                              \
  162. extern   HWND       hTracerWnd;
  163. extern   PSZ        pTracerString;
  164.  
  165.