PRINTER.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:9k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /******************************************************************************
  2. *       This is a part of the Microsoft Source Code Samples. 
  3. *       Copyright (C) 1993-1997 Microsoft Corporation.
  4. *       All rights reserved. 
  5. *       This source code is only intended as a supplement to 
  6. *       Microsoft Development Tools and/or WinHelp documentation.
  7. *       See these sources for detailed information regarding the 
  8. *       Microsoft samples programs.
  9. ******************************************************************************/
  10. /******************************************************************************
  11. *
  12. *                                PRINTER.H
  13. *
  14. ******************************************************************************/
  15. #include "strings.h"
  16. /******************************************************************************
  17. *                             SYMBOLIC CONSTANTS
  18. ******************************************************************************/
  19. #define IDM_PRINT                 101  // menu id's
  20. #define IDM_PRINTDLG              102
  21. #define IDM_GETDEVICECAPS         103
  22. #define IDM_ENUMPRINTERS          104
  23. #define IDM_GETPRINTERDRIVER      105
  24. #define IDM_ENUMPRINTERDRIVERS    106
  25. #define IDM_REFRESH               107
  26. #define IDM_ABOUT                 108
  27. #define IDM_HIENGLISH             201
  28. #define IDM_HIMETRIC              202
  29. #define IDM_LOENGLISH             203
  30. #define IDM_LOMETRIC              204
  31. #define IDM_TWIPS                 205
  32. #define IDM_ISOTROPIC             206
  33. #define IDM_ANISOTROPIC           207
  34. #define IDM_TEXT                  208
  35. #define IDM_ARC                   301
  36. #define IDM_ELLIPSE               302
  37. #define IDM_LINETO                303
  38. #define IDM_PIE                   304
  39. #define IDM_PLGBLT                305
  40. #define IDM_POLYBEZIER            306
  41. #define IDM_POLYGON               307
  42. #define IDM_POLYLINE              308
  43. #define IDM_POLYPOLYGON           309
  44. #define IDM_RECTANGLE             310
  45. #define IDM_ROUNDRECT             311
  46. #define IDM_STRETCHBLT            312
  47. #define IDM_ALLGRAPHICS           313
  48. #define IDM_NOGRAPHICS            314
  49. #define IDM_ENUMFONTS             315
  50. #define IDM_DRAWAXIS              316
  51. #define IDM_SETPENCOLOR           401
  52. #define IDM_PENWIDTH_1            402
  53. #define IDM_PENWIDTH_2            403
  54. #define IDM_PENWIDTH_3            404
  55. #define IDM_PENWIDTH_4            405
  56. #define IDM_PENWIDTH_5            406
  57. #define IDM_PENWIDTH_6            407
  58. #define IDM_PENWIDTH_7            408
  59. #define IDM_PENWIDTH_8            409
  60. #define IDM_PENCOLOR_SOLID        410
  61. #define IDM_PENCOLOR_DASH         411
  62. #define IDM_PENCOLOR_DOT          412
  63. #define IDM_PENCOLOR_DASHDOT      413
  64. #define IDM_PENCOLOR_DASHDOTDOT   414
  65. #define IDM_PENCOLOR_NULL         415
  66. #define IDM_PENCOLOR_INSIDEFRAME  416
  67. #define IDM_SETBRUSHCOLOR               501
  68. #define IDM_BRUSHSTYLE_HORIZONTAL       502
  69. #define IDM_BRUSHSTYLE_VERTICAL         503
  70. #define IDM_BRUSHSTYLE_FDIAGONAL        504
  71. #define IDM_BRUSHSTYLE_BDIAGONAL        505
  72. #define IDM_BRUSHSTYLE_CROSS            506
  73. #define IDM_BRUSHSTYLE_DIAGCROSS        507
  74. #define IDM_BRUSHSTYLE_SOLIDCLR         508
  75. #define IDM_BRUSHSTYLE_DITHEREDCLR      509
  76. #define IDM_BRUSHSTYLE_SOLIDTEXTCLR     510
  77. #define IDM_BRUSHSTYLE_DITHEREDTEXTCLR  511
  78. #define IDM_BRUSHSTYLE_SOLIDBKCLR       512
  79. #define IDM_BRUSHSTYLE_DITHEREDBKCLR    513
  80. #define IDM_TEXTCOLOR             601
  81. #define ID_COMBOBOX               701  // toolbar combobox id
  82. #define MAIN_ICON                 1
  83. #define MAIN_MENU_NAME            "MENU"
  84. #define MAIN_CLASS_NAME           "PRINTER"
  85. #define MAIN_WND_TITLE           IDS_MAINWNDTITLE
  86. #define MAIN_CLASS_STYLE          CS_HREDRAW | CS_VREDRAW
  87. #define MAIN_WND_STYLE            WS_OVERLAPPEDWINDOW
  88. #define MAX_MAP_MODES             8    // # items in gaMMLookup
  89. #define MAX_PENWIDTHS             8    // # items in gaPenWidths
  90. #define MAX_PENSTYLES             7    // # items in gaPenStyles
  91. #define MAX_BRUSHSTYLES           5    // # items in gaBrushStyles
  92. #define ERR_MOD_NAME             IDS_ERR_PRINTER
  93. /******************************************************************************
  94. *                                 TYPEDEFS
  95. ******************************************************************************/
  96. typedef struct tagMAPMODELOOKUP
  97. {
  98.   WORD   wMenuItem;
  99.   int    iMapMode;
  100. } MAPMODELOOKUP;
  101. typedef struct tagGRAPHICLOOKUP
  102. {
  103.   WORD   wMenuItem;
  104.   DWORD  dwGraphic;
  105. } GRAPHICLOOKUP;
  106. typedef struct tagPENWIDTHLOOKUP
  107. {
  108.   WORD   wMenuItem;
  109.   int    iPenWidth;
  110. } PENWIDTHLOOKUP;
  111. typedef struct tagPENSTYLELOOKUP
  112. {
  113.   WORD   wMenuItem;
  114.   int    iPenStyle;
  115. } PENSTYLELOOKUP;
  116. typedef struct tagBRUSHSTYLELOOKUP
  117. {
  118.   WORD   wMenuItem;
  119.   int    iBrushStyle;
  120. } BRUSHSTYLELOOKUP;
  121. typedef struct tagSTATUSBARLOOKUP
  122. {
  123.   WORD   wMenuItem;
  124.   LPCSTR szText;
  125. } STATUSBARLOOKUP;
  126. /******************************************************************************
  127. *                                GLOBAL VARS
  128. ******************************************************************************/
  129. HANDLE  ghInst;                        // app instance handle
  130. HWND    ghwndMain;                     // main app window handle
  131. HWND    ghwndAbort;                    // Abort dialog handle
  132. LONG    glcyMenu;                      // menu height
  133. DWORD   gdwGraphicsOptions = DRAWAXIS; // current graphic options (to display)
  134. int     giMapMode = MM_TEXT;           // current map mode
  135. HDC     ghdc;                          // device context to print on
  136. BOOL    gbAbort;                       // AbortProc return code
  137. char    gszDeviceName[BUFSIZE];        // current device name
  138. char    gszPort      [BUFSIZE];        // current port
  139. char    gszDriverName[BUFSIZE];        // current driver name
  140. DWORD   gdwPenColor   = 0x00ff00;      // current pen color
  141. DWORD   gdwBrushColor = 0x0000ff;      // current brush color
  142. DWORD   gdwTextColor =  0xff0000;      // current text color
  143. int     giPenStyle   = PS_SOLID;       // current pen style
  144. int     giPenWidth   = 1;              // current pen width
  145. int     giBrushStyle = HS_HORIZONTAL;    // current brush style
  146. MAPMODELOOKUP gaMMLookup[] =
  147.     { { IDM_HIENGLISH  , MM_HIENGLISH   },
  148.       { IDM_HIMETRIC   , MM_HIMETRIC    },
  149.       { IDM_LOENGLISH  , MM_LOENGLISH   },
  150.       { IDM_LOMETRIC   , MM_LOMETRIC    },
  151.       { IDM_TWIPS      , MM_TWIPS       },
  152.       { IDM_ISOTROPIC  , MM_ISOTROPIC   },
  153.       { IDM_ANISOTROPIC, MM_ANISOTROPIC },
  154.       { IDM_TEXT       , MM_TEXT        } };
  155. GRAPHICLOOKUP gaGraphicLookup[] =
  156.     { { IDM_ARC        , ARC         },
  157.       { IDM_ELLIPSE    , ELLIPSE     },
  158.       { IDM_LINETO     , LINETO      },
  159.       { IDM_PIE        , PIE         },
  160.       { IDM_PLGBLT     , PLG_BLT     },
  161.       { IDM_POLYBEZIER , POLYBEZIER  },
  162.       { IDM_POLYGON    , POLYGON     },
  163.       { IDM_POLYLINE   , POLYLINE    },
  164.       { IDM_POLYPOLYGON, POLYPOLYGON },
  165.       { IDM_RECTANGLE  , RECTANGLE   },
  166.       { IDM_ROUNDRECT  , ROUNDRECT   },
  167.       { IDM_STRETCHBLT , STRETCH_BLT } };
  168. PENWIDTHLOOKUP gaPenWidths[] =
  169.     { { IDM_PENWIDTH_1, 1 },
  170.       { IDM_PENWIDTH_2, 2 },
  171.       { IDM_PENWIDTH_3, 3 },
  172.       { IDM_PENWIDTH_4, 4 },
  173.       { IDM_PENWIDTH_5, 5 },
  174.       { IDM_PENWIDTH_6, 6 },
  175.       { IDM_PENWIDTH_7, 7 },
  176.       { IDM_PENWIDTH_8, 8 } };
  177. PENSTYLELOOKUP gaPenStyles[] =
  178.     { { IDM_PENCOLOR_SOLID      , PS_SOLID      },
  179.       { IDM_PENCOLOR_DASH       , PS_DASH       },
  180.       { IDM_PENCOLOR_DOT        , PS_DOT        },
  181.       { IDM_PENCOLOR_DASHDOT    , PS_DASHDOT    },
  182.       { IDM_PENCOLOR_DASHDOTDOT , PS_DASHDOTDOT },
  183.       { IDM_PENCOLOR_NULL       , PS_NULL       },
  184.       { IDM_PENCOLOR_INSIDEFRAME, PS_INSIDEFRAME} };
  185. BRUSHSTYLELOOKUP gaBrushStyles[] =
  186.     { { IDM_BRUSHSTYLE_HORIZONTAL     , HS_HORIZONTAL     },
  187.       { IDM_BRUSHSTYLE_VERTICAL       , HS_VERTICAL       },
  188.       { IDM_BRUSHSTYLE_FDIAGONAL      , HS_FDIAGONAL      },
  189.       { IDM_BRUSHSTYLE_BDIAGONAL      , HS_BDIAGONAL      },
  190.       { IDM_BRUSHSTYLE_CROSS          , HS_CROSS          },
  191.       { IDM_BRUSHSTYLE_DIAGCROSS      , HS_DIAGCROSS      } };
  192. /******************************************************************************
  193. *                            FUNCTION PROTOTYPES
  194. ******************************************************************************/
  195. LRESULT CALLBACK MainWndProc   (HWND, UINT, WPARAM, LPARAM);
  196. LRESULT CALLBACK AboutDlgProc  (HWND, UINT, WPARAM, LPARAM);
  197. LRESULT CALLBACK AbortDlgProc  (HWND, UINT, WPARAM, LPARAM);
  198. BOOL    CALLBACK AbortProc     (HDC, int);
  199. void    InvalidateClient       (void);
  200. void    RefreshPrinterCombobox (HWND);
  201. void    PrintThread            (LPVOID);