Virtual Window code

new topic     » topic index » view thread      » older message » newer message

--Alt-Boundary-24756.22969406
Content-description: Mail message body

Ok, I have about given up on the graphics codeing design built-into
Win32lib so I have another Question.

Why do my scrollbars automatically stop, Im sure its not that Im over the 65k
limit...

Here's updated code that actually (sorta) works...

-- Author: Euman 2003

without warning

include Win32Lib.ew

constant
xPatBlt = registerw32Function(gdi32, "PatBlt", {C_POINTER, C_INT, C_INT, C_INT, 
C_INT, C_LONG}, C_LONG),
PATCOPY =  #F00021

object junk

constant
MainWin = createEx( Window, "Virtual Window Demo", NULL, 25, 25, 640, 480, 0, 
0),
hWnd = getHandle( MainWin )

sequence InitExtent

atom hdc, memdc, hbit, hbrush, ps
   hdc = 0
   memdc = 0

integer vxScreen, vyScreen, x1, y1, x2, y2

   vxScreen = 1280
   vyScreen = 960
   x1 = 0
   y1 = 0
   x2 = 640
   y2 = 480
   
-- onOpen_MainWin
procedure onCreate_MainWin( integer self, integer event, sequence parms )
  
  hdc = w32Func( xGetDC, {hWnd} )
  memdc = w32Func( xCreateCompatibleDC, {hdc} )
  hbit = w32Func( xCreateCompatibleBitmap, { hdc, vxScreen, vyScreen } )
  junk = w32Func( xSelectObject, {memdc, hbit} ) 
  hbrush = w32Func( xGetStockObject, {WHITE_BRUSH}) 
  junk = w32Func( xSelectObject, {memdc, hbrush} ) 
        
if not w32Func( xPatBlt, {memdc, 0, 0, vxScreen, vyScreen, PATCOPY}) then end
  if

  setScrollRange ( {MainWin, SB_HORZ}, 1, vxScreen )
  setScrollRange ( {MainWin, SB_VERT}, 1, vyScreen )

  setPenColor( MainWin, Green )
  junk = w32Func(xRectangle, {memdc, 10, 10, 600, 415})
  junk = w32Func( xReleaseDC, {hWnd, hdc} )
  junk = w32Func( xInvalidateRect, {hWnd, NULL, 0} )
   
end procedure
setHandler(MainWin, w32HActivate, routine_id("onCreate_MainWin"))

integer pos, orgX, orgY
   orgX = 0 
   orgY = 0

procedure on_scroll( integer self, integer event, sequence parms )

   pos = getHScrollPos( MainWin )
   x1 = pos x2 += pos orgX = pos

   pos = getVScrollPos( MainWin )
   y1 = pos y2 += pos orgY = pos

  junk = w32Func( xInvalidateRect, {hWnd, NULL, 0} )

end procedure
setHandler(MainWin, w32HScroll,  routine_id ("on_scroll"))


ps = acquire_mem(0, SIZEOF_PAINTSTRUCT)

-- onPaint_MainWin
procedure onPaint_MainWin( integer self, integer event, sequence parms )

   hdc = getDC( self )        
   if not w32Func( xBitBlt, {hdc, x1, y1, x2, y2, memdc, x1+orgX, y1+orgY, 
SRCCOPY} ) then end if     
    
end procedure
setHandler(MainWin, w32HPaint, routine_id("onPaint_MainWin"))


-- onClose_MainWin
procedure onClose_MainWin( integer self, integer event, sequence parms )
  
  junk = w32Func( xReleaseDC, {0, hdc} ) 

end procedure
setHandler(MainWin, w32HClose, routine_id("onClose_MainWin"))

WinMain( MainWin, Normal )


--Alt-Boundary-24756.22969406
Content-type: text/html; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body

<?xml  version="1.0" ?><html>
<head>
<title></title>
</head>
<body>
<div align="left"><font face="Arial"><span style="font-size:10pt">Ok, I have
about given up on the graphics codeing design built-into</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">Win32lib so I
have another Question.</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">Why do my
scrollbars automatically stop, Im sure its not that Im over the 65k
limit...</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">Here's updated
code that actually (sorta) works...</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">-- Author:
Euman 2003</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">without
warning</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">include
Win32Lib.ew</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span
style="font-size:10pt">constant</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">xPatBlt =
registerw32Function(gdi32, &quot;PatBlt&quot;, {C_POINTER, C_INT, C_INT, C_INT,
C_INT, C_LONG}, C_LONG),</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">PATCOPY
=  #F00021</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">object
junk</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span
style="font-size:10pt">constant</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">MainWin =
createEx( Window, &quot;Virtual Window Demo&quot;, NULL, 25, 25, 640, 480, 0,
0),</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">hWnd =
getHandle( MainWin )</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">sequence
InitExtent</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">atom hdc,
memdc, hbit, hbrush, ps</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
hdc = 0</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
memdc = 0</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">integer
vxScreen, vyScreen, x1, y1, x2, y2</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
vxScreen = 1280</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
vyScreen = 960</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
x1 = 0</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
y1 = 0</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
x2 = 640</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
y2 = 480</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">--
onOpen_MainWin</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">procedure
onCreate_MainWin( integer self, integer event, sequence parms
)</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt"> 
</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  hdc =
w32Func( xGetDC, {hWnd} )</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  memdc =
w32Func( xCreateCompatibleDC, {hdc} )</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  hbit =
w32Func( xCreateCompatibleBitmap, { hdc, vxScreen, vyScreen }
)</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  junk =
w32Func( xSelectObject, {memdc, hbit} ) </span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  hbrush
= w32Func( xGetStockObject, {WHITE_BRUSH}) </span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  junk =
w32Func( xSelectObject, {memdc, hbrush} ) </span></font></div>
<div align="left"><font face="Arial"><span
style="font-size:10pt">       
</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  if not
w32Func( xPatBlt, {memdc, 0, 0, vxScreen, vyScreen, PATCOPY}) then end if
</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt"> 
setScrollRange ( {MainWin, SB_HORZ}, 1, vxScreen )</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt"> 
setScrollRange ( {MainWin, SB_VERT}, 1, vyScreen )</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt"> 
setPenColor( MainWin, Green )</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  junk =
w32Func(xRectangle, {memdc, 10, 10, 600, 415})</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  junk =
w32Func( xReleaseDC, {hWnd, hdc} )</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  junk =
w32Func( xInvalidateRect, {hWnd, NULL, 0} )</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">end
procedure</span></font></div>
<div align="left"><font face="Arial"><span
style="font-size:10pt">setHandler(MainWin, w32HActivate,
routine_id(&quot;onCreate_MainWin&quot;))</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">integer pos,
orgX, orgY</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
orgX = 0 </span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
orgY = 0</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">procedure
on_scroll( integer self, integer event, sequence parms )</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
pos = getHScrollPos( MainWin )</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
x1 = pos x2 += pos orgX = pos</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
pos = getVScrollPos( MainWin )</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
y1 = pos y2 += pos orgY = pos</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  junk =
w32Func( xInvalidateRect, {hWnd, NULL, 0} )</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">end
procedure</span></font></div>
<div align="left"><font face="Arial"><span
style="font-size:10pt">setHandler(MainWin, w32HScroll,  routine_id
(&quot;on_scroll&quot;))</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">ps =
acquire_mem(0, SIZEOF_PAINTSTRUCT)</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">--
onPaint_MainWin</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">procedure
onPaint_MainWin( integer self, integer event, sequence parms
)</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
hdc = getDC( self )       
</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  
if not w32Func( xBitBlt, {hdc, x1, y1, x2, y2, memdc, x1+orgX, y1+orgY,
SRCCOPY} ) then end if     </span></font></div>
<div align="left"><font face="Arial"><span
style="font-size:10pt">    </span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">end
procedure</span></font></div>
<div align="left"><font face="Arial"><span
style="font-size:10pt">setHandler(MainWin, w32HPaint,
routine_id(&quot;onPaint_MainWin&quot;))</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">--
onClose_MainWin</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">procedure
onClose_MainWin( integer self, integer event, sequence parms
)</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt"> 
</span></font></div>
<div align="left"><font face="Arial"><span style="font-size:10pt">  junk =
w32Func( xReleaseDC, {0, hdc} ) </span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">end
procedure</span></font></div>
<div align="left"><font face="Arial"><span
style="font-size:10pt">setHandler(MainWin, w32HClose,
routine_id(&quot;onClose_MainWin&quot;))</span></font></div>
<div align="left"><br/>
</div>
<div align="left"><font face="Arial"><span style="font-size:10pt">WinMain(
MainWin, Normal )</span></font></div>
<div align="left"></div>

--Alt-Boundary-24756.22969406--

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu