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

  1. /*
  2.  *   LoadMenu
  3.  *
  4.  *   This program demonstrates the use of the LoadMenu function.
  5.  *   LoadMenu loads a menu resource into memory. To put the menu resource
  6.  *   in a window, SetMenu must be called after LoadMenu.
  7.  */
  8.  
  9. #include "windows.h"
  10.  
  11. long    FAR PASCAL HelloWndProc (HWND, unsigned, WORD, LONG);
  12.  
  13. /**************************************************************************/
  14.  
  15. int     PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  16. HANDLE     hInstance, hPrevInstance;
  17. LPSTR      lpszCmdLine;
  18. int        cmdShow;
  19.   {
  20.   MSG   msg;
  21.   HWND  hWnd;
  22.   HMENU hMenu;
  23.  
  24.   if (!hPrevInstance)
  25.     {
  26.     WNDCLASS   HelloClass;
  27.  
  28.     HelloClass.hCursor        = LoadCursor (NULL, IDC_ARROW);
  29.     HelloClass.hIcon          = LoadIcon (hInstance, NULL);
  30.     HelloClass.lpszMenuName   = (LPSTR)NULL;
  31.     HelloClass.lpszClassName  = (LPSTR)"Sample Application";
  32.     HelloClass.hbrBackground  = (HBRUSH)GetStockObject (WHITE_BRUSH);
  33.     HelloClass.hInstance      = hInstance;
  34.     HelloClass.style          = CS_HREDRAW | CS_VREDRAW;
  35.     HelloClass.lpfnWndProc    = HelloWndProc;
  36.  
  37.     if (!RegisterClass ( (LPWNDCLASS)&HelloClass))
  38.       return FALSE;
  39.     }
  40.  
  41.   hWnd = CreateWindow ( (LPSTR)"Sample Application",
  42.       (LPSTR)"LoadMenu Application",
  43.       WS_OVERLAPPEDWINDOW,
  44.       CW_USEDEFAULT,
  45.       CW_USEDEFAULT,
  46.       CW_USEDEFAULT,
  47.       CW_USEDEFAULT,
  48.       (HWND)NULL,        /* no parent */
  49.       (HMENU)NULL,       /* use class menu */
  50.       (HANDLE)hInstance, /* handle to window instance */
  51.       (LPSTR)NULL);      /* no params to pass on */
  52.  
  53.   ShowWindow (hWnd, cmdShow);
  54.   UpdateWindow (hWnd);
  55.  
  56.   MessageBox (hWnd, (LPSTR)"call LoadMenu", (LPSTR)"I am about to...", MB_OK);
  57.  
  58.   hMenu = LoadMenu (hInstance, "loadmenu");       /* Load menu into memory */
  59.  
  60.   if (!hMenu)
  61.     MessageBox (hWnd, (LPSTR)"LoadMenu failed", (LPSTR)NULL, MB_OK);
  62.   else
  63.     SetMenu (hWnd, hMenu); /* put the menu in the window */
  64.  
  65.   while (GetMessage ( (LPMSG) & msg, NULL, 0, 0))
  66.     {
  67.     TranslateMessage ( (LPMSG) & msg);
  68.     DispatchMessage ( (LPMSG) & msg);
  69.     }
  70.   return (int)msg.wParam;
  71.   }
  72.  
  73. /**************************************************************************/
  74. long    FAR PASCAL HelloWndProc (hWnd, message, wParam, lParam)
  75. HWND      hWnd;
  76. unsigned  message;
  77. WORD      wParam;
  78. LONG      lParam;
  79.   {
  80.   switch (message)
  81.     {
  82.     case WM_DESTROY:
  83.       PostQuitMessage (0);
  84.       break;
  85.  
  86.     default:
  87.       return DefWindowProc (hWnd, message, wParam, lParam);
  88.       break;
  89.     }
  90.   return (0L);
  91.   }
  92.