Microsoft KB Archive/75912

{|
 * width="100%"|

INFO: GetDeviceCaps(hDC, RASTERCAPS) Description

 * }

Q75912

-

The information in this article applies to:


 * Microsoft Windows Software Development Kit (SDK) 3.1
 * Microsoft Win32 Application Programming Interface (API)
 * Microsoft Windows NT Server versions 3.5, 3.51
 * Microsoft Windows NT Workstation versions 3.5, 3.51
 * Microsoft Windows 95

-

SUMMARY
GetDeviceCaps(hDC, RASTERCAPS) returns the raster capabilities bit field in the GDIINFO structure, which indicates the raster capabilities of the device. The RASTERCAPS index of the GetDeviceCaps function is documented in the &quot;Microsoft Windows Software Development Kit Reference Volume 1&quot; on page 4-168. The flags available include: RC_BANDING, RC_BITBLT, RC_BITMAP64, RC_DI_BITMAP, RC_DIBTODEV, RC_GDI20_OUTPUT, RC_PALETTE, RC_SCALING, RC_STRETCHBLT, and RC_STRETCHDIB. The GDIINFO structure itself is documented in the &quot;Microsoft Windows Device Development Kit Device Driver Adaptation Guide.&quot;

An application should use GetDeviceCaps to query the printer driver for device capabilities. For example, before printing a bitmap larger than 64K, the application should query the driver using GetDeviceCaps with the index RASTERCAPS and the flag RC_BITMAP64. If the application fails to test for the capability and prints a bitmap larger than 64K, unexpected printer output may occur if the driver does not support bitmaps larger than 64K.

In particular, if the driver does not support a capability, GDI will attempt to simulate it using a more fundamental capability of the driver. However, the resulting GDI simulation is usually slower, is of lower quality, or differs in some way from a device driver implementation of the capability.

                                          Differences in                     GDI Call to Invoke   Functionality Resulting

Field  Capability      Capability or      from Supporting or not Name   or Function        Function        Supporting Capability --|-|| 0   | BitBlt      |                    | ? --|-|| 1   | Requires    |                    | ? | banding    |                    | --|-|| 2   | Requires    |                    | ? | scaling    |                    | --|-|| 3   | Supports    |                    | ? | >64K bitmaps|                   | --|-|| 4   | Supports    | ExtTextOut         | GDI will call StrBlt once | ExtTextOut, |                   | for each character to      | FastBorder, |                    | simulate the ExtTextOut | GetCharWidth|                   | function's ability to      |             |                    | position proportionally- |            |                    | spaced characters. This can |            |                    | be very slow. GDI simulates |            |                    | bold text by overstriking |            |                    | one or more times. This |            |                    | fails on laser printers. |            |                    | Laser printer drivers that |            |                    | support ExtTextOut offset |            |                    | the text before overstriking. |            |                    |      |             | FastBorder         | |            |                    |      |             | GetCharWidth       | Returns 0 if driver does |            |                    | not support GetCharWidth; |            |                    | otherwise, it calls |            |                    | ExtTextOut or StrBlt |            |                    | with count = -1 to obtain |            |                    | the width of each |            |                    | individual character. --|-|| 5   | Has state   |                    | | block      |                    | --|-|| 6   | Saves       |                    | | bitmaps in |                    | | shadow     |                    | | memory     |                    | --|-|| 7   | RC_DI_BITMAP| Supports Get and   | If GDI is called upon to      |             | Set DIBs and RLEs  | copy a RLE bitmap that |            |                    | contains a transparent |            |                    | window (region not defined      |             |                    | by the bitmap), the window |            |                    | will be filled by the |            |                    | current background color. |            |                    |      |             |                    | The destination for any GDI |            |                    | DIB operation is a      |             |                    | monochrome bitmap. |            |                    |      |             |                    | Unidrv offers a variety of      |             |                    | halftone dithering |            |                    | techniques to simulate a      |             |                    | range of intensities on      |             |                    | black and white and color |            |                    | printers. GDI does not. |            |                    | Unidrv offers intensity |            |                    | adjustment to darken and |            |                    | lighten halftone output. |            |                    | Unidrv does not support RLE |            |                    | DIBs at present. --|-|| 8   | RC_PALETTE  | Performs color     | |            | palette management | --|-|| 9   | RC_DIBTODEV | Supports           | See comments above for |            | SetDIBitsToDevice  | RC_DI_BITMAP --|-|| 10  | RC_BIGFONTS | Supports Windows   | This flag specifies the |            | 3.0 FONTINFO       | format of the FONTINFO |            | structure format   | structure passed between |            |                    | GDI's SelectObject call |            |                    | and the driver's      |             |                    | RealizeFont function. If     |             |                    | a bit is set, the Windows |            |                    | 3.0 format is used. |            |                    | Otherwise, the Windows 2.0 |            |                    | font file format is used. --|-|| 11  |RC_STRETCHBLT| Supports StretchBlt| --|-|| 12  | RC_FLOODFILL| Supports flood fill| --|-|| 13  |RC_STRETCHDIB| Supports           | See comments above for |            | StretchDIBits      | RC_DI_BITMAP. Additionally, |            |                    | Unidrv has these limits on      |             |                    | the degree of stretching |            |                    | and shrinking supported: |            |                    |      |             |                    | The X and Y axes may be      |             |                    | scaled independently. |            |                    |      |             |                    | The maximum scale-up factor |            |                    | is 256. |            |                    |      |             |                    | The maximum product of the |            |                    | X and Y scale-down factors |            |                    | is 256. |            |                    |      |             |                    | Therefore, if both axes are |            |                    | scaled down equally, the |            |                    | maximum scale-down factor |            |                    | for each axis is 16. --|-|| Additional query words: 3.10 3.50 4.00 win16sdk

Keywords : kbOSWinNT310 kbOSWinNT350 kbOSWin95 kbSDKWin16

Issue type : kbinfo

Technology : kbWinNTsearch kbWinNTWsearch kbWinNT351xsearch kbWinNT350xsearch kbWinNTW350 kbWinNTW350xsearch kbWinNTW351xsearch kbWinNTW351 kbWinNTSsearch kbWinNTS351 kbWinNTS350 kbWinNTS351xsearch kbWinNTS350xsearch kbAudDeveloper kbWin3xSearch kbWin95search kbSDKSearch kbZNotKeyword3 kbWin32sSearch kbWin32API kbWinSDKSearch kbWinSDK310