Programming for Palm OS/C/Off-screen windows

From Wikibooks, open books for an open world
Jump to navigation Jump to search

Be sure to focus on your offscreen window after all the events have been delivered for the start-up of your application.


to create an offscreen window[edit | edit source]

(and to remember the original window that your application started with)

 WinHandle  offWin;
 WinHandle  sysWin;
 Coord             width  = 160;
 Coord             height = 160;
 WindowFormatType  format = screenFormat;
 UInt16            error;
 offWin = WinCreateOffscreenWindow( width, height, format, &error);
 sysWin = WinGetDrawWindow();


to release an offscreen window[edit | edit source]

 Boolean  eraseIt = false;
 if ( offWin != NULL)
 {
   WinDeleteWindow( offWin, eraseIt);
 }


to focus on an offscreen window[edit | edit source]

 WinSetDrawWindow( offWin);

After this invocation, functions such as WinEraseRectangle, WinDrawLine and so on will draw to the offscreen window.


to blit your offscreen drawing to the original window[edit | edit source]

 WinHandle         srcWin;
 WinHandle         destWin;
 RectangleType     r;
 Coord             destX;
 Coord             destY;
 WinDrawOperation  mode;
 
 srcWin = offWin;
 destWin = sysWin;
 r.topLeft.x = 0;
 r.topLeft.y = 0;
 r.extent.x = 160;
 r.extent.y = 160;
 destX = 0;
 destY = 0;
 mode = winPaint;
 WinCopyRectangle( srcWin, destWin, &r, destX, destY, mode);