home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / icon / dricon.c next >
Encoding:
C/C++ Source or Header  |  1988-08-11  |  2.2 KB  |  92 lines

  1. /*
  2.  *  Function Name:   DrawIcon
  3.  *
  4.  *  Description:
  5.  *   The program below will display a stock icon.
  6.  */
  7.  
  8. #include "windows.h"
  9.  
  10. long    FAR PASCAL WndProc (HWND, unsigned, WORD, LONG);
  11.  
  12. int     PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  13. HANDLE  hInstance, hPrevInstance;
  14. LPSTR    lpszCmdLine;
  15. int    cmdShow;
  16.   {
  17.   MSG         msg;
  18.   HWND         hWnd;
  19.   WNDCLASS   wcClass;
  20.  
  21.   if (!hPrevInstance)
  22.     {
  23.     wcClass.style       = CS_HREDRAW | CS_VREDRAW;
  24.     wcClass.lpfnWndProc    = WndProc;
  25.     wcClass.cbClsExtra       = 0;
  26.     wcClass.cbWndExtra       = 0;
  27.     wcClass.hInstance       = hInstance;
  28.     wcClass.hIcon          = LoadIcon (hInstance, NULL);
  29.     wcClass.hCursor        = LoadCursor (NULL, IDC_ARROW);
  30.     wcClass.hbrBackground  = (HBRUSH)GetStockObject (WHITE_BRUSH);
  31.     wcClass.lpszMenuName   = NULL;
  32.     wcClass.lpszClassName  = "DrawIcon";
  33.  
  34.     if (!RegisterClass (&wcClass))
  35.       return FALSE;
  36.     }
  37.  
  38.   hWnd = CreateWindow ("DrawIcon",
  39.                       "DrawIcon ()",
  40.                       WS_OVERLAPPEDWINDOW,
  41.                       CW_USEDEFAULT,
  42.                       CW_USEDEFAULT,
  43.                       CW_USEDEFAULT,
  44.                       CW_USEDEFAULT,
  45.                       NULL,
  46.                       NULL,
  47.                       hInstance,
  48.                       NULL);
  49.   ShowWindow (hWnd, cmdShow);
  50.   UpdateWindow (hWnd);
  51.   while (GetMessage (&msg, NULL, 0, 0))
  52.     {
  53.     TranslateMessage (&msg);
  54.     DispatchMessage (&msg);
  55.     }
  56.   return msg.wParam;
  57.   }
  58.  
  59. long    FAR PASCAL WndProc (hWnd, message, wParam, lParam)
  60. HWND      hWnd;
  61. unsigned  message;
  62. WORD      wParam;
  63. LONG      lParam;
  64.   {
  65.   PAINTSTRUCT ps;
  66.   HANDLE      hIcon;
  67.   BOOL          bDrawn;
  68.  
  69.   switch (message)
  70.     {
  71.     case WM_PAINT:
  72.       BeginPaint (hWnd, (LPPAINTSTRUCT) & ps);
  73.       hIcon = LoadIcon ( (HANDLE) NULL, IDI_EXCLAMATION);
  74.       if (!DrawIcon (ps.hdc, 50, 50, hIcon))
  75.         {
  76.         MessageBeep (0);
  77.     return FALSE;
  78.         }
  79.       ValidateRect (hWnd, (LPRECT) NULL);
  80.       EndPaint (hWnd, (LPPAINTSTRUCT) & ps);
  81.       break;
  82.  
  83.     case WM_DESTROY:
  84.       PostQuitMessage (0);
  85.       break;
  86.  
  87.     default:
  88.       return DefWindowProc (hWnd, message, wParam, lParam);
  89.     }
  90.   return (0L);
  91.   }
  92.