home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / prog_pm / chap02 / welcome1.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-01-09  |  3.1 KB  |  90 lines

  1. /*----------------------------------------------------------
  2.    WELCOME1.C -- A Program that Writes to its Client Window
  3.   ----------------------------------------------------------*/
  4.  
  5. #define INCL_WIN
  6. #include <os2.h>
  7.  
  8. MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ;
  9.  
  10. int main (void)
  11.      {
  12.      static CHAR  szClientClass [] = "Welcome1" ;
  13.      static ULONG flFrameFlags = FCF_TITLEBAR      | FCF_SYSMENU |
  14.                                  FCF_SIZEBORDER    | FCF_MINMAX  |
  15.                                  FCF_SHELLPOSITION | FCF_TASKLIST ;
  16.      HAB          hab ;
  17.      HMQ          hmq ;
  18.      HWND         hwndFrame, hwndClient ;
  19.      QMSG         qmsg ;
  20.  
  21.      hab = WinInitialize (0) ;
  22.      hmq = WinCreateMsgQueue (hab, 0) ;
  23.  
  24.      WinRegisterClass (
  25.                     hab,                // Anchor block handle
  26.                     szClientClass,      // Name of class being registered
  27.                     ClientWndProc,      // Window procedure for class
  28.                     CS_SIZEREDRAW,      // Class style
  29.                     0) ;                // Extra bytes to reserve
  30.  
  31.      hwndFrame = WinCreateStdWindow (
  32.                     HWND_DESKTOP,       // Parent window handle
  33.                     WS_VISIBLE,         // Style of frame window
  34.                     &flFrameFlags,      // Pointer to control data
  35.                     szClientClass,      // Client window class name
  36.                     NULL,               // Title bar text
  37.                     0L,                 // Style of client window
  38.                     NULL,               // Module handle for resources
  39.                     0,                  // ID of resources
  40.                     &hwndClient) ;      // Pointer to client window handle
  41.  
  42.      WinSendMsg (hwndFrame, WM_SETICON,
  43.                  WinQuerySysPointer (HWND_DESKTOP, SPTR_APPICON, FALSE),
  44.                  NULL) ;
  45.  
  46.      while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
  47.           WinDispatchMsg (hab, &qmsg) ;
  48.  
  49.      WinDestroyWindow (hwndFrame) ;
  50.      WinDestroyMsgQueue (hmq) ;
  51.      WinTerminate (hab) ;
  52.      return 0 ;
  53.      }
  54.  
  55. MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
  56.      {
  57.      static CHAR szText [] = "Welcome to the OS/2 Presentation Manager" ;
  58.      HPS         hps;
  59.      RECTL       rcl ;
  60.  
  61.      switch (msg)
  62.       {
  63.           case WM_CREATE:
  64.                DosBeep (261, 100) ;
  65.                DosBeep (330, 100) ;
  66.                DosBeep (392, 100) ;
  67.                DosBeep (523, 500) ;
  68.                return 0 ;
  69.  
  70.           case WM_PAINT:
  71.                hps = WinBeginPaint (hwnd, NULL, NULL) ;
  72.  
  73.                WinQueryWindowRect (hwnd, &rcl) ;
  74.  
  75.                WinDrawText (hps, -1, szText, &rcl, CLR_NEUTRAL, CLR_BACKGROUND,
  76.                             DT_CENTER | DT_VCENTER | DT_ERASERECT) ;
  77.  
  78.                WinEndPaint (hps) ;
  79.                return 0 ;
  80.  
  81.           case WM_DESTROY:
  82.                DosBeep (523, 100) ;
  83.                DosBeep (392, 100) ;
  84.                DosBeep (330, 100) ;
  85.                DosBeep (261, 500) ;
  86.                return 0 ;
  87.           }
  88.      return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
  89.      }
  90.