home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / message / postquit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-08-11  |  2.3 KB  |  99 lines

  1. /* PostQuitMessage
  2.  *
  3.  *  When Execute is selected, a PostQuitMessage is generated and
  4.  *  closes down this application.
  5.  *
  6.  */
  7.  
  8. #include <windows.h>
  9. #include "postquit.h"
  10.  
  11. long    FAR PASCAL WndProc (HWND, unsigned, WORD, LONG) ;
  12.  
  13. static char    szResName [] = "ResMenu";
  14.  
  15. int    PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, nCmdShow)
  16. HANDLE      hInstance, hPrevInstance ;
  17. LPSTR       lpszCmdLine ;
  18. int    nCmdShow ;
  19. {
  20.   static char    szAppName [] = "PostQuitMessage";
  21.   HWND        hWnd ;
  22.   MSG msg;
  23.   WNDCLASS  wcPostQuitMessageClass;
  24.  
  25.   wcPostQuitMessageClass.lpszClassName = szAppName;
  26.   wcPostQuitMessageClass.hInstance     = hInstance;
  27.   wcPostQuitMessageClass.lpfnWndProc   = WndProc;
  28.   wcPostQuitMessageClass.hCursor       = LoadCursor (NULL, IDC_ARROW);
  29.   wcPostQuitMessageClass.hIcon         = NULL;
  30.   wcPostQuitMessageClass.lpszMenuName  = (LPSTR) NULL;
  31.   wcPostQuitMessageClass.hbrBackground = GetStockObject (WHITE_BRUSH);
  32.   wcPostQuitMessageClass.style         = CS_HREDRAW | CS_VREDRAW;
  33.   wcPostQuitMessageClass.cbClsExtra    = 0;
  34.   wcPostQuitMessageClass.cbWndExtra    = 0;
  35.  
  36.   RegisterClass ((LPWNDCLASS) & wcPostQuitMessageClass);
  37.  
  38.   hWnd = CreateWindow(szAppName, (LPSTR) "PostQuitMessage",
  39.       WS_OVERLAPPEDWINDOW,  
  40.       CW_USEDEFAULT,  0,    
  41.       CW_USEDEFAULT,  0,    
  42.       NULL, NULL,  hInstance, NULL);
  43.  
  44.   ShowWindow (hWnd, nCmdShow);
  45.   UpdateWindow (hWnd);
  46.  
  47.   while (GetMessage(&msg, NULL, 0, 0))
  48.   {
  49.     TranslateMessage(&msg);
  50.     DispatchMessage(&msg);
  51.   }
  52.   return (msg.wParam) ;
  53. }
  54.  
  55.  
  56. long    FAR PASCAL WndProc (hWnd, iMessage, wParam, lParam)
  57. HWND     hWnd ;
  58. unsigned    iMessage ;
  59. WORD     wParam ;
  60. LONG     lParam ;
  61. {
  62.   static HANDLE hInstance;
  63.   HMENU hMenu;
  64.   switch (iMessage)
  65.   {
  66.   case WM_CREATE:
  67.     {
  68.       hInstance = GetWindowWord(hWnd, GWW_HINSTANCE);
  69.       hMenu = LoadMenu(hInstance, "ResMenu");
  70.       SetMenu(hWnd, hMenu);
  71.       DrawMenuBar(hWnd);
  72.       break;
  73.     }
  74.   case WM_COMMAND:
  75.     {
  76.       switch (wParam)
  77.       {
  78.       case IDM_EXECUTE:
  79.     {
  80.       PostQuitMessage(0);
  81.     }
  82.       }
  83.       break;
  84.     }
  85.   case WM_DESTROY:
  86.     {
  87.       PostQuitMessage(0);
  88.       break;
  89.     }
  90.   default:
  91.     {
  92.       return DefWindowProc (hWnd, iMessage, wParam, lParam) ;
  93.     }
  94.   }
  95.   return (0L);
  96. }
  97.  
  98.  
  99.