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

  1. /*
  2.  * Name               : AddFont.c
  3.  * Function(s) demonstrated in this program :
  4.  *     AddFontResource (), RemoveFontResource (), SendMessage ().
  5.  * Description        : AddFontResource loads an external file of fonts,
  6.  *                      returning a short integer of fonts that have been
  7.  *                      added.  SendMessage sends a WM_FONTCHANGE message
  8.  *                      to notify other windows of the change.
  9.  *                      RemoveFontResource is used to remove the resource
  10.  *                      that was added.  The resource may be added multiple
  11.  *                      times, and deleted once for every time it was added.
  12.  *                      If you attempt to delete it furthermore, an error
  13.  *                      message comes up indicating that the resource is not
  14.  *                      available to delete.
  15.  *
  16.  * NOTE:                Script.fon is required to be in the same directory.
  17.  *
  18.  */
  19.  
  20. #include <windows.h>
  21. #include "addfont.h"
  22.  
  23. long    FAR PASCAL WndProc (HWND, unsigned, WORD, LONG);
  24. int     sprintf (PSTR, PSTR, int);
  25.  
  26. static char    szBuffer[] = "script.fon";
  27. static int    ErrorCheck;
  28. static char    szResName [] = "ResMenu";
  29.  
  30. int     PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, nCmdShow)
  31. HANDLE      hInstance, hPrevInstance;
  32. LPSTR       lpszCmdLine;
  33. int         nCmdShow;
  34.   {
  35.   static char   szAppName [] = "FontResources";
  36.   HWND      hWnd;
  37.   WNDCLASS  wndclass;
  38.   MSG       msg;
  39.  
  40.   if (!hPrevInstance)
  41.     {
  42.     wndclass.style         = CS_HREDRAW | CS_VREDRAW;
  43.     wndclass.lpfnWndProc   = WndProc;
  44.     wndclass.cbClsExtra    = 0;
  45.     wndclass.cbWndExtra    = 0;
  46.     wndclass.hInstance     = hInstance;
  47.     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION);
  48.     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW);
  49.     wndclass.hbrBackground = GetStockObject (WHITE_BRUSH);
  50.     wndclass.lpszMenuName  = NULL;
  51.     wndclass.lpszClassName = szAppName;
  52.  
  53.     if (!RegisterClass (&wndclass))
  54.       return FALSE;
  55.     }
  56.  
  57.   hWnd = CreateWindow (szAppName, "The Joy of FontResources",
  58.                       WS_OVERLAPPEDWINDOW,
  59.                       CW_USEDEFAULT, 0,
  60.                       CW_USEDEFAULT, 0,
  61.                       NULL, NULL, hInstance, NULL);
  62.  
  63.   ShowWindow (hWnd, nCmdShow);
  64.   UpdateWindow (hWnd);
  65.  
  66.   while (GetMessage (&msg, NULL, 0, 0))
  67.     {
  68.     TranslateMessage (&msg);
  69.     DispatchMessage (&msg);
  70.     }
  71.   return (msg.wParam);
  72.   }
  73.  
  74. long    FAR PASCAL WndProc (hWnd, iMessage, wParam, lParam)
  75. HWND     hWnd;
  76. unsigned iMessage;
  77. WORD     wParam;
  78. LONG     lParam;
  79.   {
  80.   static HANDLE hInstance, hResource;
  81.   int    hFile;
  82.   char    szBuf[50];
  83.   short    sRes;
  84.   HMENU hMenu;
  85.   switch (iMessage)
  86.     {
  87.     case WM_CREATE:
  88.       hInstance = GetWindowWord (hWnd, GWW_HINSTANCE);
  89.       hMenu = LoadMenu (hInstance, "ResMenu");
  90.       SetMenu (hWnd, hMenu);
  91.       DrawMenuBar (hWnd);
  92.       break;
  93.  
  94.     case WM_COMMAND:
  95.       switch (wParam)
  96.         {
  97.         case IDM_ADDFONT:
  98.           ErrorCheck = AddFontResource ( (LPSTR)szBuffer);
  99.           SendMessage (-1, WM_FONTCHANGE, 0, 0L);
  100.           ErrorCheck = sprintf (szBuf, "%i", ErrorCheck);
  101.           MessageBox (GetFocus (), szBuf, "Number of added Fonts", MB_OK);
  102.           break;
  103.  
  104.         case IDM_REMOVEFONT:
  105.           sRes = RemoveFontResource ( (LPSTR)szBuffer);
  106.           if (sRes != NULL)
  107.             {
  108.             ErrorCheck = sprintf (szBuf, "%i:  indicating the FontResource was removed", sRes);
  109.             MessageBox (GetFocus (), szBuf, "RemoveFontResource returns", MB_OK);
  110.             }
  111.       else
  112.             MessageBox (GetFocus (), "Problem removing Font!", "Error", MB_OK);
  113.           SendMessage (-1, WM_FONTCHANGE, 0, 0L);
  114.       break;
  115.         }
  116.       break;
  117.  
  118.     case WM_DESTROY:
  119.       PostQuitMessage (0);
  120.       break;
  121.  
  122.     default:
  123.       return DefWindowProc (hWnd, iMessage, wParam, lParam);
  124.     }
  125.   return (0L);
  126.   }
  127.