| |
|
|
| MinMax Beispiel Fenstergröße beschränken. KompilierenMarqueSéparationSet(FastMode,1)
Def _cwp(5) !user32,CallWindowProcA
Def _mm(3) !KERNEL32, RtlMoveMemory
declare _ex%,_owp&,_hwnd&
windowstyle ( 1 | 2 | 4 | 8 | 16 | 512 )
_hwnd&:=createwindow(0,,0,0,640,480)
_owp&:=External(user32,SetWindowLongA,_hwnd&,-4, Procaddr(_wproc,4))
whilenot _ex%
getmessage
wend
End
Proc _wproc
Parameters Wnd&, Msg&, Wparam&, Lparam&
If (Msg&==16)// close
_ex%:=1
Elseif (Msg& == 3)// move
Elseif (Msg& == 5)// size
_redrw
elseif (msg& == 36)// getminmaxnfo
pokedw lparam&+24,400
pokedw lparam&+28,200
Elseif (Msg& == 15)// paint
_redrw
Elseif (Msg& == 256)// keydwn
Elseif (Msg& == $108)// keylast
Elseif (Msg& == 522)// wheel
If (Wparam&>0)
Else
Endif
Endif
Return _cwp(_owp&,Wnd&, Msg&, Wparam&, Lparam&)
Endproc
Proc PokeDW
Parameters adr&, V!
Declare V&
_mm(adr& + 2,Addr(V&),2)
v&:=Int(V!-(V&*2^16))
_mm(adr&,Addr(V&),2)
EndProc
Proc _redrw
href='./../../funktionsreferenzen/XProfan/endproc/'>ENDPROC
Viel Amusement avec cela, Salve. |
|
|
| |
|
|
|
Julian Schmidt | allez cela aussi sans XPSE et Procaddr? |
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 16.07.2011 ▲ |
|
|
|
|
| Mittlerweile déjà si aussi pas 100% zuverlässig -
musst oui seulement dans qui SubClassProc quelque chose comme écrivons comment ... KompilierenMarqueSéparation-
dans 2005 Gabs encore aucun xprofansche SubClassProc.
100% zuverlässig gehts mais aussi aujourd'hui encore seulement avec XPSE ou bien plan indem Du sonstwie nativen Code comme wndProc hinterlegst. |
|
|
| |
|
|
|
Julian Schmidt | Inwiefern funktioniert cela sans ProcAddr? KompilierenMarqueSéparationSet("FastMode",1)
Def cwp(5) !"user32","CallWindowProcA"
Def mm(3) !"KERNEL32", "RtlMoveMemory"
declare ex%,owp&,hwnd&
var minx%=400
var miny%=300
windowstyle ( 1 | 2 | 4 | 8 | 16 | 512 )
hwnd&=Create("Window",0,"",0,0,0,0)
owp&=External("user32","SetWindowLongA",hwnd&,-4, Procaddr(wproc,4))
whilenot ex%
getmessage
Endwhile
End
Proc wproc
Parameters Wnd&, Msg&, Wparam&, Lparam&
If (Msg&==16)// close
ex%:=1
Elseif (Msg& == 3)// move
Elseif (Msg& == 5)// size
redrw
elseif (msg& == 36)// getminmaxnfo
long lparam+24=minx%
long lparam+28=miny%
Elseif (Msg& == 15)// paint
redrw
Elseif (Msg& == 256)// keydwn
Elseif (Msg& == $108)// keylast
Elseif (Msg& == 522)// wheel
If (Wparam&>0)
Else
Endif
Endif
Return cwp(owp&,Wnd&, Msg&, Wparam&, Lparam&)
Endproc
Proc PokeDW
Parameters adr&, V!
Declare V&
mm(adr& + 2,Addr(V&),2)
v&:=Int(V!-(V&*2^16))
mm(adr&,Addr(V&),2)
EndProc
Proc redrw
4 href='./../../funktionsreferenzen/XProfan/endproc/'>ENDPROC
|
|
|
| ˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗˗ Webseite [...] | 16.07.2011 ▲ |
|
|
|
|
| Inwiefern ist cela relevant?
qui Antwort sur Votre ursprüngliche Frage ist: SubClassProc
"Deinen" bisherigen Code peux Du komplett jeter. |
|
|
| |
|
|