Stretch: Clipped Blting and Stretched Clipped Blting

Click to open or copy the files for the Stretch sample.

Click to open or copy the Misc files (required).

This sample demonstrates clipped blting and stretched clipped blting.  It is a nonexclusive mode application that displays a rotating donut in a window.  Clipped blting can be demonstrated by moving another window partially or completely in front of the stretch window.  The rotating donut does not overwrite the clipping window.

The size of the rotating donut can be changed with menu selections.  Any size other than 1x1 demonstrates stretch blting.  The window can also be resized by grabbing any one of the corners with the mouse.

Another menu command changes the rate of rotation of the donut.

Since this is not an exclusive mode application, it is unable to set the display mode.  Therefore, it must be run on an 8 bit per pixel display.  It will not work correctly with other pixel depths.

Building SDK Samples

This sample uses the following keywords:

adjustwindowrectex; blt; clienttoscreen; createclipper; createsurface; createwindowex; ddloadbitmap; ddloadpalette; ddreloadbitmap; defwindowproc; destroywindow; directdrawcreate; dispatchmessage; doinit; finiobjects; getclientrect; getmenu; getmessage; gettickcount; getwindowlong; initfail; loadcursor; loadicon; makeintresource; messagebox; offsetrect; peekmessage; postmessage; postquitmessage; registerclass; release; restore; restoreall; setclipper; setcooperativelevel; sethwnd; setpalette; setrect; setwindowpos; showwindow; switch; translatemessage; updateframe; updatewindow; windowproc; winmain

The Misc files demonstrate the following keywords:

_lclose; _lopen; _lread; addattachedsurface; addlight; addtoviewport; adjustwindowrectex; afterdevicecreated; appabout; appendmenu; appinit; apppause; attempt; beforedevicedestroyed; beginpaint; blt; bltfast; bpptoddbd; buildscene; calculateframerate; checkmenuitem; cleanupandpostquit; clear; clienttoscreen; clock; comparemodes; copymemory; cos; createclipper; createcompatibledc; created3dapp; created3drm; createdevandview; createdevicefromclipper; createdevicefromd3d; createfont; createframe; createlight; creatematerial; creatematrix; createpalette; createsurface; createviewport; createwindow; createwindowex; crossproduct; d3dappchangedriver; d3dappcheckforlostsurfaces; d3dappcreatefromhwnd; d3dappcreatesurface; d3dappdestroy; d3dappenumeratedddevices; d3dapperrortostring; d3dappfullscreen; d3dappibpptoddbd; d3dappicalldevicecreatecallback; d3dappicalldevicedestroycallback; d3dappicheckforpalettized; d3dappiclearbuffers; d3dappicopyrectlist; d3dappicreatebuffers; d3dappicreatedd; d3dappicreatedevice; d3dappicreatesurface; d3dappicreatezbuffer; d3dappiddenumcallback; d3dappienumdddevices; d3dappienumdisplaymodes; d3dappifilterdisplaymodes; d3dappigetclientwin; d3dappigetsurfdesc; d3dappigettexturehandle; d3dappihandlewm_size; d3dappimergerectlists; d3dappipickdisplaymode; d3dappipickdriver; d3dappirememberwindowsmode; d3dappirestoredispmode; d3dappisetclientsize; d3dappisetcooplevel; d3dappisetdefaults; d3dappisetdisplaymode; d3dappiseterrorstring; d3dappisetrenderstate; d3dappivalidatedirtyrects; d3dappiverifydriverandmode; d3dapplasterrorstring; d3dapppause; d3dappshowbackbuffer; d3dapptotalvideomemory; d3dappwindow; d3dappwindowproc; d3drmerrortostring; d3dval; ddcolormatch; ddcolormatch2; ddcopybitmap; ddcopybitmap2; ddloadbitmap; ddloadbitmap2; ddloadpalette; ddloadpalette2; ddreloadbitmap; ddreloadbitmap2; ddsetcolorkey; ddsetcolorkey2; declare_handle; declare_handle32; defined; defwindowproc; deletedc; deletelight; deletemenu; deleteobject; destroyd3dapp; destroywindow; dialogbox; direct3drmcreate; directdrawcreate; directdrawcreateclipper; directdrawcreatefromdevice; directdrawcreatefromwindow; directdrawdevicefromwindow; directdrawenumerate; directionallight; dispatchmessage; displayframerate; dpf; dsfillsoundbuffer; dsgetwaveresource; dsloadsoundbuffer; dsparsewaveresource; dsreloadsoundbuffer; enablemenuitem; enddialog; endpaint; enumdevicefunc; enumdevices; enumdisplaymodes; enumdisplaymodescallback; enumdisplaymonitors; exttextout; fabs; failed; finddevicecallback; findresource; float; forceupdate; free; freelibrary; getalpha; getambient; getattachedsurface; getattenuation; getcaps; getclientrect; getclipbox; getcolor; getdc; getdevicecaps; getdiffuse; getdirection; getdisplaymode; getdither; getdxversion; getemissive; geterrorstring; getfalloff; getflags; gethandle; getheight; getmenu; getmodulehandle; getmonitorinfo; getobject; getpenumbra; getpixel; getposition; getpower; getprocaddress; getquality; getrampsize; getrange; getspecular; getstockobject; getsubmenu; getsurfacedesc; getsystemmetrics; getsystempaletteentries; gettextextentpoint; gettextextentpoint32; gettexturehandle; gettexturequality; gettrianglesdrawn; getumbra; getupdaterect; getversionex; getwidth; getwindowinstance; getwindowlong; getwindowrect; handleactivate; handlepaint; identitymatrix; idirectsound_createsoundbuffer; idirectsound_duplicatesoundbuffer; idirectsoundbuffer_getstatus; idirectsoundbuffer_lock; idirectsoundbuffer_play; idirectsoundbuffer_release; idirectsoundbuffer_restore; idirectsoundbuffer_setcurrentposition; idirectsoundbuffer_stop; idirectsoundbuffer_unlock; initapp; initfontandtextbuffers; initglobals; initmultiplemonitorstubs; insertmenu; intersectrect; islost; lbclear; lbcreate; lbprintf; lbprintfddrc; lbsize; light; line_list_data; loadaccelerators; loadcursor; loadicon; loadimage; loadlibrary; loadresource; localalloc; localfree; lock; lockresource; lpfnenumproc; lstrcat; lstrcmp; lstrcmpi; lstrcpy; lstrlen; lubksb; ludcmp; make_matrix; malloc; mapwindowpoints; material; matrix_multiply_data; matrixinverse; matrixmult; matrixtranspose; memcpy; memset; merge; messagebox; mmiofourcc; move; movewindow; msg; normalize; onemonitorcallback; onemonitorfromwindow; op_branch_forward; op_exit; op_line_list; op_matrix_multiply; op_nop; op_point_list; op_process_vertices; op_set_status; op_span_list; op_state_light; op_state_render; op_state_transform; op_triangle_list; op_triangleex_list; outputdebugstring; overridedefaults; parallelpointlight; peekmessage; pointlight; postquitmessage; processvertices_data; projectionmatrix; putd3dinstruction; qsort; queryinterface; qword_aligned; rand; readmouse; registerclass; release; releasedc; releasefontandtextbuffers; removefromviewport; render; renderloop; reportd3dapperror; resetframerate; restore; restoredisplaymode; restoresurfaces; ret; rgb; rgb_make; rnd; rotatexmatrix; rotateymatrix; rotatezmatrix; scalematrix; selectobject; sendmessage; set; setalpha; setambient; setasbackground; setascurrent; setattenuation; setback; setbackground; setbkcolor; setbkmode; setbuffercount; setclipper; setcolor; setcolorkey; setcooperativelevel; setdefaulttexturecolors; setdefaulttextureshades; setdiffuse; setdirection; setdisplaymode; setdither; setemissive; setfalloff; setflags; sethwnd; setlight; setlightstate; setmaterial; setmatrix; setpalette; setpenumbra; setpixel; setposition; setpower; setquality; setrampsize; setrange; setrect; setrectempty; setrenderstate; setshades; setspecular; settextcolor; settexturehandle; settexturequality; setumbra; setwindowpos; showwindow; sin; sndobjcreate; sndobjdestroy; sndobjgetfreebuffer; sndobjplay; sndobjstop; spotlight; state_data; stretchblt; strtok; succeeded; switch; systemparametersinfo; text; transformnormal; transformvector; translateaccelerator; translatematrix; translatemessage; triangle_list_data; triangleex_list_data; unlock; update; updatewindow; va_end; va_start; vertex_data; view; viewmatrix; waitmessage; windowfromdc; windowproc; winmain; writeframeratebuffer; writeinfobuffer; wsprintf; wvsprintf; xenumdisplaymonitors; xgetmonitorinfo; xgetsystemmetrics; xmonitorfrompoint; xmonitorfromrect; xmonitorfromwindow; zeromatrix; zeromem; zeromemory