forward
global type nvo_transparent from nonvisualobject
end type
type str_transobject from structure within nvo_transparent
end type
end forward
type str_transobject from structure
dragobject source
graphicobject dest
boolean get
long dc
long handle
long oldhandle
long transparentcolor
integer width
integer height
integer x
integer y
end type
global type nvo_transparent from nonvisualobject
event ue_paint ()
end type
global nvo_transparent nvo_transparent
type prototypes
public function long bitblt (long hdcdest,long xdest,long ydest,long nwidth,long nheight,long hdcsrc,long xsrc,long ysrc,long dwrop) library "gdi32" alias for "BitBlt"
public function long createbitmap (long nwidth,long nheight,long nplanes,long nbitcount,long lpbits) library "gdi32" alias for "CreateBitmap"
public function long setbkcolor (long hdc,long crcolor) library "gdi32" alias for "SetBkColor"
public function long selectobject (long hdc,long hobject) library "gdi32" alias for "SelectObject"
public function long createcompatiblebitmap (long hdc,long nwidth,long nheight) library "gdi32" alias for "CreateCompatibleBitmap"
public function long createcompatibledc (long hdc) library "gdi32" alias for "CreateCompatibleDC"
public function long deletedc (long hdc) library "gdi32" alias for "DeleteDC"
public function long deleteobject (long hobject) library "gdi32" alias for "DeleteObject"
public function long getdc (long hwnd) library "user32" alias for "GetDC"
public function integer releasedc (long hwnd,long hdc) library "user32" alias for "ReleaseDC"
end prototypes
type variables
private long srccopy = 13369376
private long notsrccopy = 3342344
private long srcand = 8913094
private long srcinvert = 6684742
private str_transobject istr_objects[]
end variables
forward prototypes
public function integer of_createtransparent (dragobject source,long transparentcolor)
public function integer of_draw (integer index)
public function integer of_release (integer index)
end prototypes
event ue_paint;integer li_i
for li_i = 1 to upperbound(istr_objects)
of_draw(li_i)
next
end event
public function integer of_createtransparent (dragobject source,long transparentcolor);integer li_i
graphicobject lgo_parent
integer li_srcwidth
integer li_srcheight
integer li_srcx
integer li_srcy
long ll_srcdc
long ll_dstdc
integer drawx
integer drawy
long ll_maskdc
long ll_invertdc
long ll_maskhandle
long ll_inverthandle
long ll_oldmaskhandle
long ll_oldinverthandle
long ll_oldbackground
long ll_mapdstdc
long ll_mapsrcdc
long ll_mapdsthandle
long ll_mapsrchandle
long ll_oldmapdsthandle
long ll_oldmapsrchandle
for li_i = 1 to upperbound(istr_objects)
if handle(istr_objects[li_i].source) = handle(source) then
return 0
end if
public function integer of_draw (integer index);long ll_dc
ll_dc = getdc(handle(istr_objects[index].dest))
bitblt(ll_dc,istr_objects[index].x,istr_objects[index].y,istr_objects[index].width,istr_objects[index].height,istr_objects[index].dc,0,0,13369376)
deletedc(ll_dc)
return 1
end function
public function integer of_release (integer index);long ll_handle
ll_handle = selectobject(istr_objects[index].dc,istr_objects[index].oldhandle)
deleteobject(ll_handle)
deletedc(istr_objects[index].dc)
return 1
end function
on nvo_transparent.create
call super::create;
triggerevent("constructor")
end on
on nvo_transparent.destroy
triggerevent("destructor")
call super::destroy
end on
event destructor;integer li_i
for li_i = 1 to upperbound(istr_objects)
of_release(li_i)
next