home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / graphics / gdi / printer / enumprt.h < prev    next >
C/C++ Source or Header  |  1997-10-05  |  13KB  |  292 lines

  1.  
  2. /******************************************************************************\
  3. *       This is a part of the Microsoft Source Code Samples. 
  4. *       Copyright (C) 1993-1997 Microsoft Corporation.
  5. *       All rights reserved. 
  6. *       This source code is only intended as a supplement to 
  7. *       Microsoft Development Tools and/or WinHelp documentation.
  8. *       See these sources for detailed information regarding the 
  9. *       Microsoft samples programs.
  10. \******************************************************************************/
  11.  
  12. /******************************************************************************\
  13. *
  14. *                                  ENUMPRT.H
  15. *
  16. \******************************************************************************/
  17. #include "strings.h"
  18.  
  19.  
  20. /******************************************************************************\
  21. *                             SYMBOLIC CONSTANTS
  22. \******************************************************************************/
  23.  
  24. #define MAX_ATTRIBUTES     4   // # of elements in gaAttributes
  25. #define MAX_PRIORITIES     4   // # of elements in gaPriorities
  26. #define MAX_STATUS         3   // # of elements in gaStatus
  27. #define MAX_FIELDS         15  // # of elements in gaFields
  28. #define MAX_ORIENTATION    2   // # of elements in gaOrientation
  29. #define MAX_PAPERSIZE      41  // # of elements in gaPaperSize
  30. #define MAX_DEFAULTSOURCE  16  // # of elements in gaDefaultSource
  31. #define MAX_PRINTQUALITY   4   // # of elements in gaPrintQuality
  32. #define MAX_COLOR          2   // # of elements in gaColor
  33. #define MAX_DUPLEX         3   // # of elements in gaDuplex
  34.  
  35. #define ERR_MOD_NAME       IDS_ERR_ENUMPRT
  36.  
  37. #define BLANKS             "                     \t\t"
  38.  
  39. /******************************************************************************\
  40. *                                  TYPEDEFS
  41. \******************************************************************************/
  42.  
  43. typedef struct tagENUMPRTLOOKUP
  44. {
  45.   DWORD   dwValue;
  46.   LPCSTR  szValue;
  47.  
  48. } ENUMPRTLOOKUP;
  49.  
  50.  
  51.  
  52. /******************************************************************************\
  53. *                              GLOBAL VARIABLES
  54. \******************************************************************************/
  55.  
  56. HWND  ghwndEnumPrt;
  57. DWORD gdwEnumFlags;
  58. char  gszEnumName[BUFSIZE];
  59.  
  60. LPSTR gaEnumPrt[] =
  61.  
  62.       { "PRINTER_INFO_1"              ,
  63.         "  pDescription:      \t\t%s" ,
  64.         "  pName:             \t\t%s" ,
  65.         "  pComment:          \t%s"   ,
  66.         "PRINTER_INFO_2"              ,
  67.         "  pServerName:       \t%s"   ,  // 5
  68.         "  pPrinterName:      \t%s"   ,
  69.         "  pShareName:        \t%s"   ,
  70.         "  pPortName:         \t%s"   ,
  71.         "  pDriverName:       \t%s"   ,
  72.         "  pComment:          \t%s"   ,  // 10
  73.         "  pLocation:         \t%s"   ,
  74.         "  pDevMode           \t"     ,
  75.         "    dmDeviceName:    \t%s"   ,
  76.         "    dmSpecVersion:   \t%d"   ,
  77.         "    dmDriverVersion: \t%d"   ,  // 15
  78.         "    dmSize:          \t%d"   ,
  79.         "    dmDriverExtra:   \t%d"   ,
  80.         "    dmFields:        \t%s"   ,
  81.         "    dmOrientation:   \t%s"   ,
  82.         "    dmPaperSize:     \t%s"   ,  // 20
  83.         "    dmPaperLength:   \t%d"   ,
  84.         "    dmPaperWidth:    \t%d"   ,
  85.         "    dmScale:         \t%d"   ,
  86.         "    dmCopies:        \t%d"   ,
  87.         "    dmDefaultSource: \t%s"   ,  // 25
  88.         "    dmPrintQuality:  \t%s"   ,
  89.         "    dmColor:         \t%s"   ,
  90.         "    dmDuplex:        \t%s"   ,
  91.         "    dmYResolution:   \t"     ,
  92.         "    dmTTOption:      \t"     ,  // 30
  93.         "    dmCollate:       \t"     ,
  94.         "    dmFormName:      \t"     ,
  95.         "  pSepFile:          \t\t%s" ,
  96.         "  pPrintProcessor:   \t%s"   ,
  97.         "  pDatatype:         \t\t%s" ,  // 35
  98.         "  pParameters:       \t%s"   ,
  99.         "  Attributes:        \t\t"   ,
  100.         "  Priority:          \t\t%s" ,
  101.         "  Priority:          \t\t%ld",
  102.         "  DefaultPriority:   \t\t%ld",  // 40
  103.         "  StartTime:         \t\t%ld",
  104.         "  UntilTime:         \t\t%ld",
  105.         "  Status:            \t"     ,
  106.         "  cJobs:             \t\t%ld",
  107.         "  AveragePPM:        \t%ld"    };
  108.  
  109. ENUMPRTLOOKUP gaAttributes[] =
  110.  
  111.     { { PRINTER_ATTRIBUTE_QUEUED       , "PRINTER_ATTRIBUTE_QUEUED  " },
  112.       { PRINTER_ATTRIBUTE_DIRECT       , "PRINTER_ATTRIBUTE_DIRECT  " },
  113.       { PRINTER_ATTRIBUTE_DEFAULT      , "PRINTER_ATTRIBUTE_DEFAULT " },
  114.       { PRINTER_ATTRIBUTE_SHARED       , "PRINTER_ATTRIBUTE_SHARED  " } };
  115.  
  116. ENUMPRTLOOKUP gaPriorities[] =
  117.  
  118.     { { NO_PRIORITY                    , "NO_PRIORITY  " },
  119.       { MAX_PRIORITY                   , "MAX_PRIORITY " },
  120.       { MIN_PRIORITY                   , "MIN_PRIORITY " },
  121.       { DEF_PRIORITY                   , "DEF_PRIORITY " } };
  122.  
  123. ENUMPRTLOOKUP gaStatus[] =
  124.  
  125.     { { PRINTER_STATUS_PAUSED          , "PRINTER_STATUS_PAUSED "          },
  126.       { PRINTER_STATUS_ERROR           , "PRINTER_STATUS_ERROR  "          },
  127.       { PRINTER_STATUS_PENDING_DELETION, "PRINTER_STATUS_PENDING_DELETION "},
  128.       { 0                              , ""                                }};
  129.  
  130. ENUMPRTLOOKUP gaFields[] =
  131.  
  132.     { { DM_ORIENTATION  , "DM_ORIENTATION  " },
  133.       { DM_PAPERSIZE    , "DM_PAPERSIZE    " },
  134.       { DM_PAPERLENGTH  , "DM_PAPERLENGTH  " },
  135.       { DM_PAPERWIDTH   , "DM_PAPERWIDTH   " },
  136.       { DM_SCALE        , "DM_SCALE        " },
  137.       { DM_COPIES       , "DM_COPIES       " },
  138.       { DM_DEFAULTSOURCE, "DM_DEFAULTSOURCE" },
  139.       { DM_PRINTQUALITY , "DM_PRINTQUALITY " },
  140.       { DM_COLOR        , "DM_COLOR        " },
  141.       { DM_DUPLEX       , "DM_DUPLEX       " },
  142.       { DM_YRESOLUTION  , "DM_YRESOLUTION  " },
  143.       { DM_TTOPTION     , "DM_TTOPTION     " },
  144.       { DM_COLLATE      , "DM_COLLATE      " },
  145.       { DM_FORMNAME     , "DM_FORMNAME     " },
  146.       { 0               , "0               " } };
  147.  
  148. ENUMPRTLOOKUP gaOrientation[] =
  149.  
  150.     { { DMORIENT_PORTRAIT , "DMORIENT_PORTRAIT " },
  151.       { DMORIENT_LANDSCAPE, "DMORIENT_LANDSCAPE" } };
  152.  
  153. ENUMPRTLOOKUP gaPaperSize[] =
  154.  
  155.     { { DMPAPER_FIRST             , "DMPAPER_FIRST             " },
  156.       { DMPAPER_LETTER            , "DMPAPER_LETTER            " },
  157.       { DMPAPER_LETTERSMALL       , "DMPAPER_LETTERSMALL       " },
  158.       { DMPAPER_TABLOID           , "DMPAPER_TABLOID           " },
  159.       { DMPAPER_LEDGER            , "DMPAPER_LEDGER            " },
  160.       { DMPAPER_LEGAL             , "DMPAPER_LEGAL             " },
  161.       { DMPAPER_STATEMENT         , "DMPAPER_STATEMENT         " },
  162.       { DMPAPER_EXECUTIVE         , "DMPAPER_EXECUTIVE         " },
  163.       { DMPAPER_A3                , "DMPAPER_A3                " },
  164.       { DMPAPER_A4                , "DMPAPER_A4                " },
  165.       { DMPAPER_A4SMALL           , "DMPAPER_A4SMALL           " },
  166.       { DMPAPER_A5                , "DMPAPER_A5                " },
  167.       { DMPAPER_B4                , "DMPAPER_B4                " },
  168.       { DMPAPER_B5                , "DMPAPER_B5                " },
  169.       { DMPAPER_FOLIO             , "DMPAPER_FOLIO             " },
  170.       { DMPAPER_QUARTO            , "DMPAPER_QUARTO            " },
  171.       { DMPAPER_10X14             , "DMPAPER_10X14             " },
  172.       { DMPAPER_11X17             , "DMPAPER_11X17             " },
  173.       { DMPAPER_NOTE              , "DMPAPER_NOTE              " },
  174.       { DMPAPER_ENV_9             , "DMPAPER_ENV_9             " },
  175.       { DMPAPER_ENV_10            , "DMPAPER_ENV_10            " },
  176.       { DMPAPER_ENV_11            , "DMPAPER_ENV_11            " },
  177.       { DMPAPER_ENV_12            , "DMPAPER_ENV_12            " },
  178.       { DMPAPER_ENV_14            , "DMPAPER_ENV_14            " },
  179.       { DMPAPER_CSHEET            , "DMPAPER_CSHEET            " },
  180.       { DMPAPER_DSHEET            , "DMPAPER_DSHEET            " },
  181.       { DMPAPER_ESHEET            , "DMPAPER_ESHEET            " },
  182.       { DMPAPER_ENV_DL            , "DMPAPER_ENV_DL            " },
  183.       { DMPAPER_ENV_C5            , "DMPAPER_ENV_C5            " },
  184.       { DMPAPER_ENV_C3            , "DMPAPER_ENV_C3            " },
  185.       { DMPAPER_ENV_C4            , "DMPAPER_ENV_C4            " },
  186.       { DMPAPER_ENV_C6            , "DMPAPER_ENV_C6            " },
  187.       { DMPAPER_ENV_C65           , "DMPAPER_ENV_C65           " },
  188.       { DMPAPER_ENV_B4            , "DMPAPER_ENV_B4            " },
  189.       { DMPAPER_ENV_B5            , "DMPAPER_ENV_B5            " },
  190.       { DMPAPER_ENV_B6            , "DMPAPER_ENV_B6            " },
  191.       { DMPAPER_ENV_ITALY         , "DMPAPER_ENV_ITALY         " },
  192.       { DMPAPER_ENV_MONARCH       , "DMPAPER_ENV_MONARCH       " },
  193.       { DMPAPER_ENV_PERSONAL      , "DMPAPER_ENV_PERSONAL      " },
  194.       { DMPAPER_FANFOLD_STD_GERMAN, "DMPAPER_FANFOLD_STD_GERMAN" },
  195.       { DMPAPER_FANFOLD_LGL_GERMAN, "DMPAPER_FANFOLD_LGL_GERMAN" } };
  196.  
  197. ENUMPRTLOOKUP gaDefaultSource[] =
  198.  
  199.     { { DMBIN_FIRST        , "DMBIN_FIRST        " },
  200.       { DMBIN_UPPER        , "DMBIN_UPPER        " },
  201.       { DMBIN_ONLYONE      , "DMBIN_ONLYONE      " },
  202.       { DMBIN_LOWER        , "DMBIN_LOWER        " },
  203.       { DMBIN_MIDDLE       , "DMBIN_MIDDLE       " },
  204.       { DMBIN_MANUAL       , "DMBIN_MANUAL       " },
  205.       { DMBIN_ENVELOPE     , "DMBIN_ENVELOPE     " },
  206.       { DMBIN_ENVMANUAL    , "DMBIN_ENVMANUAL    " },
  207.       { DMBIN_AUTO         , "DMBIN_AUTO         " },
  208.       { DMBIN_TRACTOR      , "DMBIN_TRACTOR      " },
  209.       { DMBIN_SMALLFMT     , "DMBIN_SMALLFMT     " },
  210.       { DMBIN_LARGEFMT     , "DMBIN_LARGEFMT     " },
  211.       { DMBIN_LARGECAPACITY, "DMBIN_LARGECAPACITY" },
  212.       { DMBIN_CASSETTE     , "DMBIN_CASSETTE     " },
  213.       { DMBIN_LAST         , "DMBIN_LAST         " },
  214.       { DMBIN_USER         , "DMBIN_USER         " } };
  215.  
  216. ENUMPRTLOOKUP gaPrintQuality[] =
  217.  
  218.     { { (DWORD)DMRES_DRAFT , "DMRES_DRAFT " },
  219.       { (DWORD)DMRES_LOW   , "DMRES_LOW   " },
  220.       { (DWORD)DMRES_MEDIUM, "DMRES_MEDIUM" },
  221.       { (DWORD)DMRES_HIGH  , "DMRES_HIGH  " } };
  222.  
  223. ENUMPRTLOOKUP gaColor[] =
  224.  
  225.     { { DMCOLOR_MONOCHROME, "DMCOLOR_MONOCHROME" },
  226.       { DMCOLOR_COLOR     , "DMCOLOR_COLOR     " } };
  227.  
  228. ENUMPRTLOOKUP gaDuplex[] =
  229.  
  230.     { { DMDUP_SIMPLEX   , "DMDUP_SIMPLEX   " },
  231.       { DMDUP_VERTICAL  , "DMDUP_VERTICAL  " },
  232.       { DMDUP_HORIZONTAL, "DMDUP_HORIZONTAL" } };
  233.  
  234. char *gaDriverInfo[] =
  235.  
  236.     {   "DRIVER_INFO_1",
  237.         "  pName\t\t%s",
  238.  
  239.         "DRIVER_INFO_2",
  240.         "  cVersion\t%ld",
  241.         "  pName\t\t%s",
  242.         "  pEnvironment\t%s",
  243.         "  pDriverPath\t%s",
  244.         "  pDataFile\t%s",
  245.         "  pConfigFile\t%s" };
  246.  
  247.  
  248.  
  249. /******************************************************************************\
  250. *                              EXTERNAL VARIABLES
  251. \******************************************************************************/
  252.  
  253. extern HWND ghwndMain;
  254.  
  255.  
  256.  
  257. /******************************************************************************\
  258. *                                  MACROS
  259. \******************************************************************************/
  260.  
  261. #define outstr(fmt,arg)  wsprintf (buf,fmt,arg?arg:"(null)");           \
  262.                          SendDlgItemMessage (hwnd, DID_LISTBOX,         \
  263.                                              LB_INSERTSTRING, (UINT)-1, \
  264.                                              (LONG) buf);
  265.  
  266. #define outstr2(buf)     SendDlgItemMessage (hwnd, DID_LISTBOX,         \
  267.                                              LB_INSERTSTRING, (UINT)-1, \
  268.                                              (LONG) buf);
  269.  
  270. #define outstr3()        SendDlgItemMessage (hwnd, DID_LISTBOX,         \
  271.                                              LB_INSERTSTRING,           \
  272.                                              (UINT)-1, (LONG) buf);
  273.  
  274. #define outnum(fmt,arg)  wsprintf(buf,fmt,arg);                         \
  275.                          SendDlgItemMessage (hwnd, DID_LISTBOX,         \
  276.                                              LB_INSERTSTRING, (UINT)-1, \
  277.                                              (LONG) buf);
  278.  
  279.  
  280.  
  281. /******************************************************************************\
  282. *                            FUNCTION PROTOTYPES
  283. \******************************************************************************/
  284.  
  285. LRESULT CALLBACK EnumPrintersOptionsDlgProc (HWND, UINT, WPARAM, LPARAM);
  286.  
  287. BOOL DisplayEnumPrintersInfo   (HWND);
  288. void SetEnumPrintersDlgFields  (HWND, DWORD, LPPRINTER_INFO_1,
  289.                                 LPPRINTER_INFO_2);
  290. void ComplexEnumPrintersLine   (HWND, char *, ENUMPRTLOOKUP *, int, DWORD);
  291. BOOL DisplayPrinterDriversInfo (HWND);
  292.