Jump to content

WinGetClipPS: Difference between revisions

From EDM2
Ak120 (talk | contribs)
Created page with "This method obtains a clipped cache presentation space. ==Syntax== WinGetClipPS(hwnd, hwndClipWindow, ulClipflags) ==Parameter== ;hwnd (HWND):Handle of window for which the..."
 
No edit summary
 
Line 20: Line 20:
==Returns==
==Returns==
;hps (HPS):Presentation-space handle that can be used for drawing.
;hps (HPS):Presentation-space handle that can be used for drawing.
==Errors==
Possible returns from WinGetLastError
;PMERR_INVALID_HWND (0x1001)
:An invalid window handle was specified.
==Remarks==
The presentation space obtained by this method is a cache "micro-presentation space" present in the system. This can be used for simple drawing operations that do not depend on long-term data being stored in the presentation space.
When the application finishes using the clipped cache presentation space, it should destroyed it using the [[WinReleasePS]] function.
==Example Code==
Declaration:
<pre>
#define INCL_WINWINDOWMGR /* Or use INCL_WIN, INCL_PM, Also in COMMON section */
#include <os2.h>
HWND    hwnd;            /*  Handle of window for which the presentation space is required. */
HWND    hwndClipWindow;  /*  Handle of window for clipping. */
ULONG    ulClipflags;    /*  Clipping control flags. */
HPS      hps;            /*  Presentation-space handle that can be used for drawing. */
hps = WinGetClipPS(hwnd, hwndClipWindow, ulClipflags);
</pre>
This example responds to an application defined message (IDM_FILL) and uses WinGetClipPS to obtain and associate a cached presentation space with a window, where the PS is clipped to the children of the window.
<pre>
#define INCL_WINWINDOWMGR      /* Window Manager Functions    */
#include <os2.h>
HWND    hwnd;          /* PS window                            */
HWND    hwndClip;      /* clipping window                      */
RECTL  rcl;            /* update region                        */
HPS    hps;            /* presentation-space handle            */
case IDM_FILL:
    hps = WinGetClipPS(hwnd,  /* handle of the PS window */
        hwndClip,              /* handle of clipping window */
        PSF_CLIPCHILDREN);      /* clipping flags */
    WinFillRect(hps, &rcl, CLR_WHITE);
    WinReleasePS(hps);
</pre>
== Related Functions==
* [[WinBeginPaint]]
* [[WinEnableWindowUpdate]]
* [[WinEndPaint]]
* [[WinExcludeUpdateRegion]]
* [[WinGetPS]]
* [[WinGetScreenPS]]
* [[WinInvalidateRect]]
* [[WinInvalidateRegion]]
* [[WinIsWindowShowing]]
* [[WinIsWindowVisible]]
* [[WinLockVisRegions]]
* [[WinOpenWindowDC]]
* [[WinQueryUpdateRect]]
* [[WinQueryUpdateRegion]]
* [[WinRealizePalette]]
* [[WinReleasePS]]
* [[WinShowWindow]]
* [[WinUpdateWindow]]
* [[WinValidateRect]]
* [[WinValidateRegion]]


[[Category:Win]]
[[Category:Win]]

Latest revision as of 18:35, 14 May 2025

This method obtains a clipped cache presentation space.

Syntax

WinGetClipPS(hwnd, hwndClipWindow, ulClipflags)

Parameter

hwnd (HWND)
Handle of window for which the presentation space is required.
hwndClipWindow (HWND)
Handle of window for clipping.
HWND_BOTTOM - Clip the last window in the sibling chain and continue clipping until the next window is hwnd or NULLHANDLE.
HWND_TOP - Clip the first window in the sibling chain and continue clipping until the next window is hwnd or NULLHANDLE.
NULLHANDLE - Clip all siblings to the window hwnd.
ulClipflags (ULONG)
Clipping control flags.
PSF_CLIPSIBLINGS - Clip out all siblings of hwnd.
PSF_CLIPCHILDREN - Clip out all children of hwnd.
PSF_CLIPUPWARDS - Taking hwndClipWindow as a reference window, clip out all sibling windows before hwndClipWindow. This value may not be used with PSF_CLIPDOWNWARDS.
PSF_CLIPDOWNWARDS - Taking hwndClipWindow as a reference window, clip out all sibling windows after hwndClipWindow. This value may not be used with PSF_CLIPUPWARDS.
PSF_LOCKWINDOWUPDATE - Calculate a presentation space that keeps a visible region even though output may be locked by the WinLockWindowUpdate function.
PSF_PARENTCLIP - Calculate a presentation space that uses the visible region of the parent of hwnd but with an origin calculated for hwnd.

Returns

hps (HPS)
Presentation-space handle that can be used for drawing.

Errors

Possible returns from WinGetLastError

PMERR_INVALID_HWND (0x1001)
An invalid window handle was specified.

Remarks

The presentation space obtained by this method is a cache "micro-presentation space" present in the system. This can be used for simple drawing operations that do not depend on long-term data being stored in the presentation space.

When the application finishes using the clipped cache presentation space, it should destroyed it using the WinReleasePS function.

Example Code

Declaration:

#define INCL_WINWINDOWMGR /* Or use INCL_WIN, INCL_PM, Also in COMMON section */
#include <os2.h>

HWND     hwnd;            /*  Handle of window for which the presentation space is required. */
HWND     hwndClipWindow;  /*  Handle of window for clipping. */
ULONG    ulClipflags;     /*  Clipping control flags. */
HPS      hps;             /*  Presentation-space handle that can be used for drawing. */

hps = WinGetClipPS(hwnd, hwndClipWindow, ulClipflags);


This example responds to an application defined message (IDM_FILL) and uses WinGetClipPS to obtain and associate a cached presentation space with a window, where the PS is clipped to the children of the window.

#define INCL_WINWINDOWMGR       /* Window Manager Functions     */
#include <os2.h>

HWND    hwnd;           /* PS window                            */
HWND    hwndClip;       /* clipping window                      */
RECTL  rcl;             /* update region                        */
HPS    hps;             /* presentation-space handle            */

case IDM_FILL:
     hps = WinGetClipPS(hwnd,   /* handle of the PS window */
         hwndClip,               /* handle of clipping window */
         PSF_CLIPCHILDREN);      /* clipping flags */
     WinFillRect(hps, &rcl, CLR_WHITE);
     WinReleasePS(hps);

Related Functions