home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / os2sdk / os2sdk11 / petzold / chap05 / imagecat.c < prev    next >
Encoding:
Text File  |  1989-02-20  |  3.5 KB  |  90 lines

  1. /*----------------------------------------
  2.    IMAGECAT.C -- Cat drawn using GpiImage
  3.   ----------------------------------------*/
  4.  
  5. #define INCL_WIN
  6. #define INCL_GPI
  7. #include <os2.h>
  8. #include <stdlib.h>
  9.  
  10. MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ;
  11.  
  12. int main (void)
  13.      {
  14.      static CHAR  szClientClass [] = "ImageCat" ;
  15.      static ULONG flFrameFlags = FCF_TITLEBAR      | FCF_SYSMENU |
  16.                                  FCF_SIZEBORDER    | FCF_MINMAX  |
  17.                                  FCF_SHELLPOSITION | FCF_TASKLIST ;
  18.      HAB          hab ;
  19.      HMQ          hmq ;
  20.      HWND         hwndFrame, hwndClient ;
  21.      QMSG         qmsg ;
  22.  
  23.      hab = WinInitialize (0) ;
  24.      hmq = WinCreateMsgQueue (hab, 0) ;
  25.  
  26.      WinRegisterClass (hab, szClientClass, ClientWndProc, CS_SIZEREDRAW, 0) ;
  27.  
  28.      hwndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE,
  29.                                      &flFrameFlags, szClientClass, NULL,
  30.                                      0L, NULL, 0, &hwndClient) ;
  31.  
  32.      while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
  33.           WinDispatchMsg (hab, &qmsg) ;
  34.  
  35.      WinDestroyWindow (hwndFrame) ;
  36.      WinDestroyMsgQueue (hmq) ;
  37.      WinTerminate (hab) ;
  38.      return 0 ;
  39.      }
  40.  
  41. MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
  42.      {
  43.      static BYTE  abCat [] = { 
  44.                              0x01, 0xF8, 0x1F, 0x80, 0x01, 0x04, 0x20, 0x80, 
  45.                              0x00, 0x8F, 0xF1, 0x00, 0x00, 0x48, 0x12, 0x00, 
  46.                              0x00, 0x28, 0x14, 0x00, 0x00, 0x1A, 0x58, 0x00, 
  47.                              0x00, 0x08, 0x10, 0x00, 0x00, 0xFC, 0x3F, 0x00, 
  48.                              0x00, 0x09, 0x90, 0x00, 0x00, 0xFC, 0x3F, 0x00, 
  49.                              0x00, 0x08, 0x10, 0x00, 0x00, 0x07, 0xE0, 0x00, 
  50.                              0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x10, 0xC0, 
  51.                              0x00, 0x08, 0x10, 0x20, 0x00, 0x10, 0x08, 0x10,
  52.                              0x00, 0x10, 0x08, 0x08, 0x00, 0x10, 0x08, 0x04,
  53.                              0x00, 0x20, 0x04, 0x04, 0x00, 0x20, 0x04, 0x04, 
  54.                              0x00, 0x20, 0x04, 0x04, 0x00, 0x40, 0x02, 0x04, 
  55.                              0x00, 0x40, 0x02, 0x04, 0x00, 0x40, 0x02, 0x04, 
  56.                              0x00, 0xC0, 0x03, 0x04, 0x00, 0x9C, 0x39, 0x08, 
  57.                              0x00, 0xA2, 0x45, 0x08, 0x00, 0xA2, 0x45, 0x10, 
  58.                              0x00, 0xA2, 0x45, 0xE0, 0x00, 0xA2, 0x45, 0x00, 
  59.                              0x00, 0xA2, 0x45, 0x00, 0x00, 0xFF, 0xFF, 0x00 } ;
  60.      static SHORT cxClient, cyClient ;
  61.      HPS          hps ;
  62.      POINTL       ptl ;
  63.      SIZEL        sizl ;
  64.  
  65.      switch (msg)
  66.           {
  67.           case WM_SIZE:
  68.                cxClient = SHORT1FROMMP (mp2) ;
  69.                cyClient = SHORT2FROMMP (mp2) ;
  70.                return 0 ;
  71.  
  72.           case WM_PAINT:
  73.                hps = WinBeginPaint (hwnd, NULL, NULL) ;
  74.                GpiErase (hps) ;
  75.  
  76.                ptl.x = cxClient / 2 - 16 ;
  77.                ptl.y = cyClient / 2 + 16 ;
  78.                GpiMove (hps, &ptl) ;
  79.  
  80.                sizl.cx = 32 ;
  81.                sizl.cy = 32 ;
  82.                GpiImage (hps, 0L, &sizl, (LONG) sizeof abCat, abCat) ;
  83.  
  84.                WinEndPaint (hps) ;
  85.                return 0 ;
  86.           }
  87.      return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
  88.      }
  89. 
  90.