home *** CD-ROM | disk | FTP | other *** search
/ Programming Windows (5th Edition) / Programming Windows, 5th ed. - Companion CD (097-0002183)(1999).iso / Chap13 / Print1 / GetPrnDC.c next >
Encoding:
C/C++ Source or Header  |  1998-10-09  |  1.2 KB  |  44 lines

  1. /*-------------------------------------
  2.    GETPRNDC.C -- GetPrinterDC function
  3.   -------------------------------------*/
  4.  
  5. #include <windows.h>
  6.  
  7. HDC GetPrinterDC (void)
  8. {
  9.      DWORD            dwNeeded, dwReturned ;
  10.      HDC              hdc ;
  11.      PRINTER_INFO_4 * pinfo4 ;
  12.      PRINTER_INFO_5 * pinfo5 ; 
  13.  
  14.      if (GetVersion () & 0x80000000)         // Windows 98
  15.      {
  16.           EnumPrinters (PRINTER_ENUM_DEFAULT, NULL, 5, NULL,
  17.                         0, &dwNeeded, &dwReturned) ;
  18.  
  19.           pinfo5 = malloc (dwNeeded) ;
  20.  
  21.           EnumPrinters (PRINTER_ENUM_DEFAULT, NULL, 5, (PBYTE) pinfo5,
  22.                         dwNeeded, &dwNeeded, &dwReturned) ;
  23.  
  24.           hdc = CreateDC (NULL, pinfo5->pPrinterName, NULL, NULL) ;
  25.  
  26.           free (pinfo5) ;
  27.      }
  28.      else                                    // Windows NT
  29.      {
  30.           EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 4, NULL,
  31.                         0, &dwNeeded, &dwReturned) ;
  32.  
  33.           pinfo4 = malloc (dwNeeded) ;
  34.  
  35.           EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 4, (PBYTE) pinfo4,
  36.                         dwNeeded, &dwNeeded, &dwReturned) ;
  37.  
  38.           hdc = CreateDC (NULL, pinfo4->pPrinterName, NULL, NULL) ;
  39.  
  40.           free (pinfo4) ;
  41.      }
  42.      return hdc ;   
  43. }
  44.