home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / fonts / getcwidt.c < prev    next >
Text File  |  1988-08-10  |  2KB  |  74 lines

  1. /*
  2.  *
  3.  *  GetCharWidth
  4.  *  
  5.  *  This program demonstrates the use of the function GetCharWidth.
  6.  *  This function retrieves the widths of individual characters in a
  7.  *  consecutive group of characters from the current font.  The funtion
  8.  *  stores the values in the buffer pointed to by the last parameter.
  9.  *
  10.  *  Windows Version 2.0 function demonstration application
  11.  *
  12.  */
  13.  
  14. #include <windows.h>
  15.  
  16. static HANDLE hWnd;
  17.  
  18. int PASCAL WinMain( hInstance, hPrevInstance, lpszCmdLine, cmdShow )
  19. HANDLE hInstance, hPrevInstance;
  20. LPSTR  lpszCmdLine;
  21. int    cmdShow;
  22. {
  23.   HDC hDC;
  24.   PAINTSTRUCT ps;
  25.   BOOL bCharWidth;
  26.   WORD wFirstChar = 97;
  27.   WORD wLastChar = 122;
  28.   char szbuff[80];
  29.   int  lpBuffer[26];
  30.   int  CharWidthSum, CharWidth, Index;
  31.   
  32.   if ( !hPrevInstance )
  33.      {
  34.      WNDCLASS rClass;
  35.  
  36.      rClass.lpszClassName = ( LPSTR ) "getcwidt";
  37.      rClass.hInstance     = hInstance;
  38.      rClass.lpfnWndProc   = DefWindowProc;
  39.      rClass.hCursor       = LoadCursor ( NULL , IDC_ARROW );
  40.      rClass.hIcon         = LoadIcon ( hInstance, IDI_APPLICATION );
  41.      rClass.lpszMenuName  = ( LPSTR ) NULL;
  42.      rClass.hbrBackground = GetStockObject ( WHITE_BRUSH );
  43.      rClass.style         = CS_HREDRAW | CS_VREDRAW;
  44.      rClass.cbClsExtra    = 0;
  45.      rClass.cbWndExtra    = 0;
  46.    
  47.      RegisterClass ( ( LPWNDCLASS ) &rClass );
  48.      }
  49.  
  50.   hWnd = CreateWindow ( ( LPSTR ) "getcwidt", ( LPSTR ) "GetCharWidth",
  51.                       WS_OVERLAPPEDWINDOW,
  52.                       CW_USEDEFAULT, CW_USEDEFAULT,
  53.                       CW_USEDEFAULT, CW_USEDEFAULT,
  54.                       ( HWND ) NULL, ( HMENU ) NULL,
  55.                       ( HANDLE ) hInstance, ( LPSTR ) NULL );
  56.  
  57.   ShowWindow ( hWnd , cmdShow );
  58.   BeginPaint ( hWnd, ( LPPAINTSTRUCT ) &ps );
  59.   hDC = ps.hdc;
  60.  
  61.   MessageBox (NULL, (LPSTR)"Getting charater string width",
  62.      (LPSTR)"GetCharWidth", MB_OK);
  63.  
  64.   bCharWidth = GetCharWidth ( hDC, wFirstChar, wLastChar,(LPINT) lpBuffer );
  65.   for (Index = 0, CharWidthSum = 0; Index < 26; Index++) {
  66.     CharWidthSum += lpBuffer [Index];
  67.   }
  68.   CharWidth = CharWidthSum / 26;
  69.   sprintf (szbuff, "The average character width is %i", CharWidth);
  70.   MessageBox (hWnd, szbuff, "GetCharWidth", MB_OK);
  71.  
  72.   return 0;
  73. }
  74.