home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / graphics / crdisbit.c < prev    next >
C/C++ Source or Header  |  1988-08-10  |  3KB  |  110 lines

  1. /*
  2.  *  CreateDiscardableBitmap
  3.  */
  4.  
  5. #include "windows.h"
  6.  
  7. static HWND    hWnd;
  8. static RECT    rect;
  9.  
  10. void    ExecuteTest ();
  11.  
  12. int    PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  13. HANDLE        hInstance;
  14. HANDLE        hPrevInstance;
  15. LPSTR        lpszCmdLine;
  16. int    cmdShow;
  17. {
  18.   MSG    msg;
  19.  
  20.   if (!hPrevInstance)
  21.   {
  22. /* ensure that windows know where to find parts of this
  23.          * task on disk by Registering a window class.  Registering
  24.                  * a class binds an executable name to an internal name,
  25.          * known to Windows. */
  26.     WNDCLASS    rClass;
  27.  
  28.     rClass.lpszClassName         = (LPSTR)"CreateDiscardableBitmap";
  29.     rClass.hInstance     = hInstance;
  30.     rClass.lpfnWndProc     = DefWindowProc;
  31.     rClass.hCursor               = LoadCursor (NULL, IDC_ARROW);
  32.     rClass.hIcon                 = LoadIcon (hInstance, (LPSTR)"CreateDiscardableBitmap");
  33.     rClass.lpszMenuName  = (LPSTR) NULL;
  34.     rClass.hbrBackground         = GetStockObject (WHITE_BRUSH);
  35.     rClass.style         = CS_HREDRAW | CS_VREDRAW;
  36.     rClass.cbClsExtra     = 0;
  37.     rClass.cbWndExtra     = 0;
  38.  
  39.     RegisterClass ( (LPWNDCLASS) & rClass);
  40.   } /* end if this is the 1st task/instance of this program */
  41.  
  42.   hWnd = CreateWindow ( (LPSTR) "CreateDiscardableBitmap", /* Window class name */
  43.   (LPSTR) "CreateDiscardableBitmap", /* Window title */
  44.   WS_OVERLAPPEDWINDOW,
  45.     /* stlye -- WIN 2.x or later */
  46. CW_USEDEFAULT,  /* x -  WIN 2.x or later */
  47. CW_USEDEFAULT,  /* y -  WIN 2.x or later */
  48. CW_USEDEFAULT,  /* cx - WIN 2.x or later */
  49. CW_USEDEFAULT,  /* cy - WIN 2.x or later */
  50.   (HWND)NULL,   /* No parent */
  51.   (HMENU)NULL,  /* Use the class menu */
  52.   (HANDLE)hInstance, /* .EXE file for Class */
  53.   (LPSTR)NULL   /* No Params */
  54.   );
  55.   ShowWindow (hWnd, cmdShow);     /* Allocate room for window     */
  56.   UpdateWindow (hWnd);            /* Paint the client area        */
  57.  
  58.   MessageBox (hWnd, (LPSTR) "Beginning Test", (LPSTR) " ", MB_OK);
  59.  
  60. /* The actual test of the CreateDiscardableBitmap function    */
  61.   ExecuteTest (hWnd);
  62.  
  63.   MessageBox (hWnd, (LPSTR) "Demonstration Finished", (LPSTR) " ", MB_OK);
  64.   return 0L;
  65. } /* WINMAIN */
  66.  
  67.  
  68. /****************************************************************************/
  69. /* This is the function to test CreateDiscardableBitmap Function.                 */
  70.  
  71. void ExecuteTest (hWnd)
  72. HWND hWnd;
  73. {
  74.   HDC        hDC;
  75.   HDC        hMemoryDC;                /* handle to In-memory display Context */
  76.   HBITMAP     hBitmap;                    /* handle to Bitmap    */
  77.   HBITMAP     hOldBitmap;
  78.   BITMAP    bm;                        /* copy of bitmap        */
  79.   short    xStart;
  80.   short    yStart;
  81.   POINT        pt;                        /* structure of x-y coordinates */
  82.  
  83. /* prepare and create bitmap    */
  84.   hDC = GetDC (hWnd);
  85.   hMemoryDC = CreateCompatibleDC (hDC);
  86.   hBitmap = CreateDiscardableBitmap (hDC, 64, 32);
  87.   hOldBitmap = SelectObject (hMemoryDC, hBitmap);
  88.  
  89. /* Color with Black    */
  90.   PatBlt (hMemoryDC, 0, 0, 64, 32, BLACKNESS);
  91.  
  92.   GetObject (hBitmap, sizeof (BITMAP), (LPSTR) & bm);
  93.   pt.x = bm.bmWidth;
  94.   pt.y = bm.bmHeight;
  95.   DPtoLP (hDC, &pt, 1);          /* convert to logical units for GDI */
  96.  
  97.   xStart = yStart = 0;
  98.  
  99. /* Copy to the Display Context    */
  100.   BitBlt (hDC, xStart, yStart, pt.x, pt.y, hMemoryDC, 0, 0, SRCCOPY);
  101.  
  102. /* Discard objects and free up memory */
  103.   DeleteDC (hMemoryDC);
  104.   ReleaseDC (hWnd, hDC);
  105.   return;
  106. } /* END EXECUTETEST */
  107.  
  108.  
  109. /* END DISCARD.C */
  110.