RE: Mouse clicks on bitmaps
- Posted by Brian Broker <bkb at cnw.com> Jun 28, 2004
- 390 views
Does this demo help?
include win32lib.ew without warning constant X = 1, Y = 2, Size = 301, Orig = {75,75} constant Win = create(Window,"test",0,Default,Default,500,500,0), Stat = create(StatusBar,"",Win,0,{.5,-1},0,0,0), Pix = create(Pixmap,"",Win,0,0,Size,Size,0) ------------------------------ function ptInRect( sequence pt, sequence rect ) return pt[X]>=rect[1] and pt[Y]>=rect[2] and pt[X]<rect[3] and pt[Y]<rect[4] end function ------------------------------ procedure redSquare( sequence pos ) pos = floor(pos/10)*10 drawRectangle(Pix,w32True,pos[X]+1,pos[Y]+1,pos[X]+10,pos[Y]+10) copyBlt( Win, Orig[X], Orig[Y], Pix ) end procedure ------------------------------ procedure mouse_handler(integer self, integer event, sequence params)--( int event, int x, int y, int shift )\ sequence pos pos = params[2..3] setText( {Stat,1}, sprintf("Win: %d,%d",pos ) ) if ptInRect( pos, Orig & Orig+Size ) then setText( {Stat,2}, sprintf("Bmp: %d,%d",pos-Orig ) ) if params[1] = LeftUp then redSquare( pos-Orig ) end if else setText( {Stat,2}, "Not in Bitmap" ) end if end procedure setHandler( Win, w32HMouse, routine_id("mouse_handler")) ------------------------------ procedure paint(integer self, integer event, sequence params) copyBlt( Win, Orig[X], Orig[Y], Pix ) end procedure setHandler( Win, w32HPaint, routine_id("paint")) ------------------------------ procedure init(integer self, integer event, sequence params) -- init pixmap setWindowBackColor( Pix, BrightWhite ) clearWindow(Pix) setPenColor( Pix, Black ) for i = 0 to Size by 10 do drawLine( Pix, 0, i, Size, i ) drawLine( Pix, i, 0, i, Size ) end for setPenColor( Pix, BrightRed ) end procedure setHandler( Win, w32HOpen, routine_id("init")) ------------------------------ WinMain( Win, Normal ) ------------------------------