GreRestoreScreenBits

From EDM2
Jump to: navigation, search

GreRestoreScreenBits restores a rectangle of bits to a screen rectangle and can also free the handle of the saved bits.

Simulation support
This function is mandatory for display drivers. For other drivers, it is simulated by a handling routine in the graphics engine.

Syntax

GreRestoreScreenBits(hdc, hsbBits, prclRect, flOptions, pInstance, lFunction)

Parameters

hdc (HDC) - input
The device context handle.
hsbBits (ULONG) - input
The handle to screen bits to be restored.
prclRect (PRECTL) - input
A pointer to a screen rectangle defined in screen coordinates.
flOptions (ULONG) - input
Option flags, valid values are:
  • RSB_FREE 1 (free the save bits handle)
  • RSB_RESTORE 2 (restore the bits to the screen)
pInstance (PVOID) - input
A pointer to instance data.
lFunction (ULONG) - input
High-order WORD=flags; low-order WORD=NGreRestoreScreenBits.

Return Code

fSuccess (BOOL) - returns
Return codes.
On completion, the handling routine must return BOOLEAN (fSuccess).
  • TRUE Successful
  • FALSE Error
Possible Errors Detected: When an error is detected, the handling routine must call WinSetErrorInfo to post the condition. Error codes for conditions that the handling routine is expected to check include:
  • PMERR_BASE_ERROR
  • PMERR_BITMAP_IS_SELECTED
  • PMERR_BITMAP_NOT_SELECTED
  • PMERR_COORDINATE_OVERFLOW
  • PMERR_DEV_FUNC_NOT_INSTALLED
  • PMERR_EXCEEDS_MAX_SEG_LENGTH
  • PMERR_HBITMAP_BUSY
  • PMERR_HDC_BUSY
  • PMERR_HUGE_FONTS_NOT_SUPPORTED
  • PMERR_INCOMPATIBLE_BITMAP
  • PMERR_INCORRECT_DC_TYPE
  • PMERR_INSUFFICIENT_MEMORY
  • PMERR_INV_BACKGROUND_COL_ATTR
  • PMERR_INV_BACKGROUND_MIX_ATTR
  • PMERR_INV_BITBLT_MIX
  • PMERR_INV_BITBLT_STYLE
  • PMERR_INV_BITMAP_DIMENSION
  • PMERR_INV_CHAR_DIRECTION_ATTR
  • PMERR_INV_CHAR_MODE_ATTR
  • PMERR_INV_CHAR_SET_ATTR
  • PMERR_INV_CHAR_SHEAR_ATTR
  • PMERR_INV_CODEPAGE
  • PMERR_INV_COLOR_ATTR
  • PMERR_INV_COLOR_DATA
  • PMERR_INV_COLOR_FORMAT
  • PMERR_INV_COLOR_INDEX
  • PMERR_INV_COLOR_OPTIONS
  • PMERR_INV_COLOR_START_INDEX
  • PMERR_INV_COORD_SPACE
  • PMERR_INV_COORDINATE
  • PMERR_INV_DC_DATA
  • PMERR_INV_DC_TYPE
  • PMERR_INV_DRIVER_NAME
  • PMERR_INV_GEOM_LINE_WIDTH_ATTR
  • PMERR_INV_HBITMAP
  • PMERR_INV_HDC
  • PMERR_INV_HRGN
  • PMERR_INV_ID
  • PMERR_INV_IN_AREA
  • PMERR_INV_IN_PATH
  • PMERR_INV_INFO_TABLE
  • PMERR_INV_LENGTH_OR_COUNT
  • PMERR_INV_LINE_END_ATTR
  • PMERR_INV_LINE_JOIN_ATTR
  • PMERR_INV_LINE_TYPE_ATTR
  • PMERR_INV_LINE_WIDTH_ATTR
  • PMERR_INV_MARKER_SET_ATTR
  • PMERR_INV_MARKER_SYMBOL_ATTR
  • PMERR_INV_MIX_ATTR
  • PMERR_INV_PATTERN_REF_PT_ATTR
  • PMERR_INV_PATTERN_SET_ATTR
  • PMERR_INV_PATTERN_SET_FONT
  • PMERR_INV_PICK_APERTURE_POSN
  • PMERR_INV_PRIMITIVE_TYPE
  • PMERR_INV_RECT
  • PMERR_INV_REGION_CONTROL
  • PMERR_INV_SCAN_START
  • PMERR_INV_SETID
  • PMERR_INV_USAGE_PARM
  • PMERR_REALIZE_NOT_SUPPORTED
  • PMERR_UNSUPPORTED_ATTR
  • PMERR_UNSUPPORTED_ATTR_VALUE

Remarks

Clipping is done on the restored bits, as necessary.

Sample Code

#define INCL_GRE_BITMAPS
#include <os2.h>

HDC       hdc;        /*  The device context handle. */
ULONG     hsbBits;    /*  The handle to screen bits to be restored. */
PRECTL    prclRect;
ULONG     flOptions;
PVOID     pInstance;  /*  A pointer to instance data. */
ULONG     lFunction;
BOOL      fSuccess;   /*  Return codes. */

fSuccess = GreRestoreScreenBits(hdc, hsbBits,
             prclRect, flOptions, pInstance, lFunction);