home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / WINTUT1.ZIP / Tut1 / demo.cpp next >
C/C++ Source or Header  |  1997-03-19  |  3KB  |  122 lines

  1. #include "stdafx.h"    // Okay, so it doesn't include MFC stuff... sue me. It has all the common
  2.                     //    .h files I use.
  3. #include "demo.h"
  4.  
  5. BOOL    g_bUserTimer = FALSE;
  6.             // Set to use either WM_TIMER or PeekMessage method of animation
  7.             
  8. long FAR PASCAL WndProc (HWND hWnd, WORD iMessage, WORD wParam, LONG lParam);
  9.             // Forward declaration
  10.  
  11.  
  12. int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
  13. {
  14.     MSG Message;
  15.     WNDCLASS WndClass;
  16.  
  17.     if (!hPrevInstance)
  18.     {
  19.         WndClass.cbClsExtra = 0;
  20.         WndClass.cbWndExtra = 0;
  21.         WndClass.hbrBackground = GetStockObject (BLACK_BRUSH);
  22.         WndClass.hCursor = LoadCursor (NULL, IDC_ARROW);
  23.         WndClass.hIcon = LoadIcon (NULL, IDI_APPLICATION);
  24.         WndClass.hInstance = hInstance;
  25.         WndClass.lpfnWndProc = (WNDPROC) WndProc;
  26.         WndClass.lpszClassName = "STAR_WINDOW";
  27.         WndClass.lpszMenuName = NULL;
  28.         WndClass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
  29.  
  30.         RegisterClass (&WndClass);
  31.     }
  32.     HWND hWnd = CreateWindow ("STAR_WINDOW", "Asphyxia Stars", WS_OVERLAPPEDWINDOW|WS_MAXIMIZE,
  33.                     50, 100, 320, 200, NULL, NULL, hInstance, NULL);
  34.     
  35.  
  36.     if (!g_csStars.SetUpStars(500))
  37.         return 0;
  38.         
  39.     ShowWindow (hWnd, SW_SHOWMAXIMIZED);
  40.     UpdateWindow (hWnd);
  41.     
  42.  
  43.     if (g_bUserTimer)
  44.     {
  45.         while (GetMessage (&Message, 0, 0, 0))
  46.         {
  47.             TranslateMessage (&Message);
  48.             DispatchMessage (&Message);
  49.         }
  50.     }
  51.     else
  52.     {
  53.         while (TRUE)
  54.         {
  55.             g_csStars.MoveStarField (0, 0, -3);
  56.             HDC pDC = GetDC(hWnd);
  57.             g_csStars.DrawStarField (pDC);
  58.             ReleaseDC(hWnd, pDC);
  59.             
  60.             if (PeekMessage (&Message, NULL, 0, 0, PM_REMOVE))
  61.             {
  62.                 if (Message.message == WM_QUIT)
  63.                     return Message.wParam;
  64.                 
  65.                 TranslateMessage (&Message);
  66.                 DispatchMessage (&Message);
  67.             }
  68.         }
  69.     }
  70.     
  71.     return Message.wParam;
  72. }
  73.  
  74. long FAR PASCAL WndProc (HWND hWnd, WORD iMessage, WORD wParam, LONG lParam)
  75. {
  76.     switch (iMessage)
  77.     {
  78.         case WM_CREATE :
  79.         {
  80.             if (g_bUserTimer)
  81.                 SetTimer (hWnd, 1, 10, NULL);
  82.         }
  83.         break;
  84.         case WM_PAINT :
  85.         {
  86.             PAINTSTRUCT    PtStr;
  87.             HDC pDC = BeginPaint (hWnd, &PtStr);
  88.             g_csStars.DrawStarField (pDC);
  89.             EndPaint (hWnd, &PtStr);
  90.             return (0);
  91.         }
  92.         break;
  93.         case WM_TIMER :
  94.         {
  95.             if ((wParam == 1) && g_bUserTimer)
  96.             {
  97.                 g_csStars.MoveStarField (0, 0, -3);
  98.                 HDC pDC = GetDC(hWnd);
  99.                 g_csStars.DrawStarField (pDC);
  100.                 ReleaseDC(hWnd, pDC);
  101.             }
  102.         }
  103.         break;
  104.         case WM_SIZE :
  105.         {
  106.             g_csStars.SetDimensions (LOWORD(lParam), HIWORD(lParam));
  107.                 //    Change the center point of the starfield
  108.         }
  109.         break;
  110.         case WM_DESTROY :
  111.         {
  112.             if (g_bUserTimer)
  113.                 KillTimer (hWnd, 1);
  114.             PostQuitMessage (0);
  115.             return 0;
  116.         }
  117.         break;
  118.     }
  119.     return (DefWindowProc (hWnd, iMessage, wParam, lParam) );
  120. }
  121.  
  122.