home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / trace2.zip / CLIENT.C next >
C/C++ Source or Header  |  1994-04-16  |  4KB  |  179 lines

  1. //-------------------------
  2. //-CLIENT.C----------------
  3. //-------------------------
  4.  
  5. #define INCL_PM
  6. #define INCL_WIN
  7. #define INCL_DOS
  8.  
  9. #define TDEBUG    // for tracer
  10.  
  11. #include <os2.h>
  12. #include <stdio.h>
  13. #include <string.h>
  14.  
  15. #include "client.h"
  16.  
  17. // TRACER step 1 - include tracer.h
  18. #include "trace2.h"
  19.  
  20. // TRACER step 2 - declare TRACER VARIABLES
  21. TRACERVARIABLES
  22.  
  23. //----------------------------------------------
  24. //-main()---------------------------------------
  25. //----------------------------------------------
  26.  
  27. int main( )
  28. {
  29.     QMSG      qmsg;
  30.     ULONG     ctldata;
  31.  
  32.     hAB = WinInitialize( 0 );
  33.  
  34.     hmqClient = WinCreateMsgQueue( hAB, 0 );
  35.  
  36.     if ( !WinRegisterClass( hAB,
  37.                            (PCH)szPClass,
  38.                            (PFNWP)ClientWndProc,
  39.                            CS_SIZEREDRAW,
  40.                            0) )
  41.         return( 0 );
  42.  
  43.     ctldata = FCF_TITLEBAR      | FCF_SYSMENU       |
  44.               FCF_SIZEBORDER    | FCF_MINMAX        |
  45.               FCF_ICON          | FCF_SHELLPOSITION |
  46.               FCF_TASKLIST ;
  47.  
  48.     hPanelFrm = WinCreateStdWindow( HWND_DESKTOP,
  49.                                      WS_DISABLED,
  50.                                      &ctldata,
  51.                                      (PCH)szPClass,
  52.                                      NULL,
  53.                                      0L,
  54.                                      (HMODULE)NULL,
  55.                                      CLIENTICON,
  56.                                      (HWND *)&hPanelWnd );
  57.  
  58.     WinEnableWindow( hPanelFrm, TRUE );
  59.     WinShowWindow( hPanelFrm, TRUE );
  60.  
  61.     while( WinGetMsg( hAB, (PQMSG)&qmsg, (HWND)NULL, 0, 0 ) )
  62.         WinDispatchMsg( hAB, (PQMSG)&qmsg );
  63.  
  64.     WinDestroyWindow( hPanelFrm );
  65.     WinDestroyMsgQueue( hmqClient );
  66.     WinTerminate( hAB );
  67. }
  68.  
  69. //----------------------------------------------
  70. //-ClientWndProc()------------------------------
  71. //----------------------------------------------
  72.  
  73. MRESULT EXPENTRY ClientWndProc( HWND hWnd, USHORT msg,
  74.                                 MPARAM mp1, MPARAM mp2 )
  75.  
  76. {
  77.     switch (msg)
  78.     {
  79.     case WM_CREATE:
  80.  
  81.          // TRACER step 3 - attach to TRACER
  82.          TRACERHELLO
  83.  
  84.          return( WinDefWindowProc( hWnd, msg, mp1, mp2 ) );
  85.          break;
  86.  
  87.     // TRACER step 4 - obtain system resources - Don't forget break;
  88.     TRACERATTACH
  89.  
  90.     break;
  91.  
  92.     case WM_CLOSE:
  93.  
  94.          // TRACER step 5
  95.          TRACER("Posting QUIT");
  96.          WinPostMsg( hWnd, WM_QUIT, 0L, 0L );
  97.  
  98.          break;
  99.  
  100.     case WM_SETFOCUS:
  101.  
  102.          // TRACER step 5
  103.          TRACER("Setting Focus");
  104.          return( WinDefWindowProc( hWnd, msg, mp1, mp2 ) );
  105.  
  106.          break;
  107.  
  108.     case WM_ENABLE:
  109.  
  110.          return( WinDefWindowProc( hWnd, msg, mp1, mp2 ) );
  111.  
  112.          break;
  113.  
  114.     case WM_BUTTON1DOWN:
  115.  
  116.          sprintf( szTraceBuf, "WM_BUTTON1DOWN hit at %ld",
  117.                         WinGetCurrentTime( hAB ) );
  118.  
  119.          TRACER( szTraceBuf );
  120.  
  121.          break;
  122.  
  123.     case WM_PAINT:
  124.  
  125.          ClientPaint( hWnd, msg, mp1, mp2 );
  126.  
  127.          break;
  128.  
  129.     case WM_ERASEBACKGROUND:
  130.  
  131.          return( (MRESULT)TRUE );
  132.  
  133.          break;
  134.  
  135.     default:
  136.          return( WinDefWindowProc( hWnd, msg, mp1, mp2 ) );
  137.          break;
  138.  
  139.     }
  140.     return(0L);
  141. }
  142.  
  143. //----------------------------------------------
  144. //-ClientPaint()--------------------------------
  145. //----------------------------------------------
  146.  
  147. void ClientPaint( HWND hWnd, USHORT msg,
  148.                              MPARAM mp1, MPARAM mp2 )
  149. {
  150.  
  151. int         aiCharWidth;
  152. HPS         hPS;
  153. FONTMETRICS fm;
  154. RECTL       rRect;
  155. CHARBUNDLE  cb;
  156. POINTL      pt;
  157.  
  158.     hPS = WinBeginPaint( hWnd, (HPS)NULL, (PWRECT)NULL );
  159.  
  160.     // TRACER step 5
  161.     TRACER("ClientPaint()");
  162.  
  163.     GpiErase( hPS );
  164.  
  165.     GpiQueryFontMetrics( hPS, (LONG)sizeof fm , &fm);
  166.     aiCharWidth = (SHORT)fm.lAveCharWidth;
  167.  
  168.     WinQueryWindowRect( hWnd, &rRect );
  169.     pt.x = (rRect.xRight / 2) -
  170.             ((strlen(szMessage) / 2) * aiCharWidth);
  171.     pt.y = (rRect.yTop / 2);
  172.  
  173.     cb.lColor = CLR_BLACK;
  174.     GpiSetAttrs( hPS, PRIM_CHAR, CBB_COLOR, 0L, (PBUNDLE)&cb );
  175.  
  176.     GpiCharStringAt( hPS, &pt, (LONG)strlen( szMessage ), szMessage );
  177.     WinEndPaint( hPS );
  178. }
  179.