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

  1. /*
  2.  *
  3.  *  Function (s) demonstrated in this program: FindResource
  4.  *  Compiler version: C 5.1
  5.  *
  6.  *  Description:
  7.  *     This program demonstrates the use of the function FindResource. 
  8.  *     This function determines the location of a resource in the specified
  9.  *     resource file.
  10.  * 
  11.  *  Other references: Clock.c
  12.  *  
  13.  */
  14.  
  15. #include <windows.h>
  16. #include "findres.h"
  17.  
  18. static HANDLE hInst;
  19. static char    szFileName[] = "FindRes";
  20. static char    szFuncName[] = "FindResource";
  21.  
  22. long FAR PASCAL WindowProc (HANDLE, unsigned, WORD, LONG);
  23. BOOL FAR PASCAL FunctionDemonstrated (HWND);
  24.  
  25. /***************************************************************************/
  26.  
  27. int     PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  28. HANDLE hInstance, hPrevInstance;
  29. LPSTR  lpszCmdLine;
  30. int    cmdShow;
  31.   {
  32.   MSG  msg;
  33.  
  34.   WindowInit (hInstance, hPrevInstance, cmdShow);
  35.  
  36.   while (GetMessage ( (LPMSG) & msg, NULL, 0, 0))
  37.     {
  38.     TranslateMessage ( (LPMSG) & msg);
  39.     DispatchMessage ( (LPMSG) & msg);
  40.     }
  41.   exit (msg.wParam);
  42.   }
  43.  
  44. /***************************************************************************/
  45.  
  46. BOOL WindowInit (hInstance, hPrevInstance, cmdShow)
  47. HANDLE hInstance, hPrevInstance;
  48. int    cmdShow;
  49.   {
  50.   HWND  hWnd;
  51.  
  52.   if (!hPrevInstance)
  53.     {
  54.     WNDCLASS rClass;
  55.  
  56.     rClass.style        = CS_HREDRAW | CS_VREDRAW;
  57.     rClass.lpfnWndProc   = WindowProc;
  58.     rClass.cbClsExtra    = 0;
  59.     rClass.cbWndExtra    = 0;
  60.     rClass.hInstance     = hInstance;
  61.     rClass.hCursor          = LoadCursor (NULL, IDC_ARROW);
  62.     rClass.hIcon            = LoadIcon (hInstance, szFileName);
  63.     rClass.hbrBackground = GetStockObject (WHITE_BRUSH);
  64.     rClass.lpszMenuName  = szFileName;
  65.     rClass.lpszClassName = szFileName;
  66.  
  67.     RegisterClass ( (LPWNDCLASS) & rClass);
  68.     }
  69.  
  70.   hInst = hInstance;
  71.  
  72.   hWnd = CreateWindow (szFileName, szFuncName,
  73.                       WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
  74.                       CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance,
  75.                       NULL);
  76.  
  77.   ShowWindow (hWnd, cmdShow);
  78.   UpdateWindow (hWnd);
  79.  
  80.   return TRUE;
  81.   }
  82.  
  83. /***************************************************************************/
  84.  
  85. long    FAR PASCAL WindowProc (hWnd, iMessage, wParam, lParam)
  86. HWND        hWnd;
  87. unsigned    iMessage;
  88. WORD        wParam;
  89. LONG        lParam;
  90.   {
  91.   HMENU  hMenu;
  92.  
  93.   switch (iMessage)
  94.     {
  95.     case WM_CREATE:
  96.       hMenu = CreateMenu ();     /*  Add a menu item */
  97.       ChangeMenu (hMenu, NULL, (LPSTR)"FindResource", 100, MF_APPEND);
  98.       SetMenu (hWnd, hMenu);
  99.       break;
  100.  
  101.     case WM_COMMAND:
  102.       if (wParam == 100)  /*  Our Menu item  */
  103.         FunctionDemonstrated (hWnd);
  104.       else
  105.         return (DefWindowProc (hWnd, iMessage, wParam, lParam));
  106.       break;
  107.  
  108.     case WM_DESTROY:
  109.       PostQuitMessage (0);
  110.       break;
  111.  
  112.     default:
  113.       return (DefWindowProc (hWnd, iMessage, wParam, lParam));
  114.       break;
  115.     }
  116.   return (0L);
  117.   }
  118.  
  119. /***************************************************************************/
  120.  
  121. BOOL FAR PASCAL FunctionDemonstrated (hWnd)
  122. HWND hWnd;
  123.   {
  124.   MessageBox (NULL, "Looking for resource FindRes", szFuncName, MB_OK);
  125.   if (FindResource (hInst, "FindRes", RT_ICON))
  126.     MessageBox (NULL, "Resource found", szFuncName, MB_OK);
  127.   else
  128.     MessageBox (NULL, "Resource not found", szFuncName, MB_OK);
  129.   return (TRUE);
  130.   }
  131.