| |
|
|
Thomas Freier | Kann man verhindern, dass der Button bei Hover oder nach dem Klick unter XP bis W7 sein Aussehen verändert? |
|
|
| |
|
|
|
Jörg Sellmeyer | verhindern, daß er sein Aussehen nicht verändert? Doppelte Verneinung Absicht? Irgendwie verstehe ich die Frage gar nicht... |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 06.06.2010 ▲ |
|
|
|
|
Thomas Freier | @Jörg, stimmt, war zuviel. Also bei Hover kein Fabumschlag und nach Klick ein Punktrahmen. Die Alternative ist naturalmente eine Bmp und Abfrage wo ein Klick statt fand. |
|
|
| |
|
|
|
Rolf Koch | Wegen dem Punkterahmen: Vielleicht (nur eine banale Idee) einen unsichtbaren funktionslosen Button erstellen und nach Klick dummymässig darauf den Focus verlegen? Siehste, so was gibt es unter Windows 7 nicht mehr (ekliger Punktrahmen) |
|
|
| |
|
|
|
ByteAttack | Naja. Entweder via Picture ein eigenen Button erstellen, oder einfach SKControl [...] benutzen. |
|
|
| |
|
|
|
| Thomas Freier, Beitrag=57377, Zeitpunkt=06.06.2010
Kann man verhindern, dass der Button bei Hover oder nach dem Klick unter XP bis W7 sein Aussehen verändert?
Hallo Thomas,
nach EnableWindow button&,0 .
Oder solch hässlicher Konstrukt: KompilierenMarkierenSeparieren {$cleq}
cls
long myButton=createMySonderButton(hWnd,"Hallo Welt",10,10,100,100)
whilenot key
waitInput
case clicked(myButton) : messageBox "","",0
wend
deleteObject getWindowLong(myButton,gwl_userData)
end
proc createMySonderButton(long parent,string text,long x,y,xx,yy)
long myButton=create("button",parent,text,x,y,xx,yy)
mcls xx,yy
startPaint myButton
copyBmpToMem 0,0 - xx,yy > 0,0
endPaint
long myHPic=create("hNewPic",xx,yy,0)
startPaint myHPic
mCopyBmp 0,0 - xx,yy > 0,0;0
endPaint
setWindowLong(myButton,gwl_userData,myHPic)
subClass myButton,true
return myButton
endproc
subClassProc
if subClassMessage(myButton,wm_paint)
set("winProc",0)
startPaint myButton
drawPic getWindowLong(myButton,gwl_userData),0,0;0
endPaint
validateRect(myButton,0)
return 1
endif
endproc
Einfach ists imho nicht possibile. ^^ KompilierenMarkierenSeparieren $H windows.ph
cls
var myButton&=createMySonderButton(%hWnd,"Hallo Welt",10,10,100,100)
whilenot %key
waitInput
case clicked(myButton&) : messageBox "","",0
wend
deleteObject ~getWindowLong(myButton&,~gwl_userData)
end
proc createMySonderButton
parameters parent&,text$,x&,y&,xx&,yy&
var myButton&=create("button",parent&,text$,x&,y&,xx&,yy&)
mcls xx&,yy&
startPaint myButton&
copyBmpToMem 0,0 - xx&,yy& > 0,0
endPaint
var myHPic&=create("hNewPic",xx&,yy&,0)
startPaint myHPic&
mCopyBmp 0,0 - xx&,yy& > 0,0;0
endPaint
~setWindowLong(myButton&,~gwl_userData,myHPic&)
subClass myButton&,1
return myButton&
endproc
subClassProc
if subClassMessage(myButton&,15)//wm_paint
set("winProc",0)
startPaint myButton&
drawPic ~getWindowLong(myButton&,~gwl_userData),0,0;0
endPaint
~validateRect(myButton&,0)
return 1
endif
endproc
Ist aber "Murx" zumindest z.B. weil das Control nur korrekt angezeigt wird wenn es sichbar (nicht verdeckt) _erzeugt wurde.
Für so einfache Spielereien aber vlt. ausreichend - ich würde wohl eher (wie auch bereits vorgeschlagen) ein Bitmap(-Static) nutzen statt solch Konstrukt. ^^ |
|
|
| |
|
|
|
ByteAttack | Hier mal ein einfaches Beispiel eines Hover-Button unter XProfan: KompilierenMarkierenSeparierenUSERMESSAGES 16
Declare appexit%,Button&,Hover&
Set("TrueColor",1)
WindowStyle 26
WindowTitle "Hover-Button"
Window ((%maxX/2)-320),((%maxY/2)-240)-640,480
Lade Button
Button&=Create("HPic",-1,$ProgDir+"button_a.bmp")
Lade HoverButton
Hover&=Create("HPic",-1,$ProgDir+"button_b.bmp")
Zeichne Button
DrawPic Button&,10,10;0
WhileNot appexit%
GetMessage
Case %Umessage=16:appexit%=1
if Mouse(10,10-135,50) Wenn MouseOver Button
DrawPic Hover&,10,10;0 Zeichne Hover
While Mouse(10,10-135,50)
Warten auf Mausereigniss wenn MouseOver Button
EndWhile
DrawPic Button&,10,10;0 MouseOut
endif
EndWhile
DeleteObject Button&
DeleteObject Hover&
end
Beispiel im Anhang |
|
|
| |
|
|
|
Paul Glatz | KompilierenMarkierenSeparierencls
var myButton&=Button(%hWnd,"Hallo Welt",10,10,100,100)
whilenot %key
waitInput
case clicked(myButton&) : messageBox "","",0
wend
end
proc Button
parameters parent&,text$,x&,y&,xx&,yy&
var myButton&=create("button",parent&,text$,x&,y&,xx&,yy&)
mcls xx& + 2,yy& + 2
startPaint myButton&
copyBmpToMem 0,0 - xx&,yy& > 0,0
endPaint
var myHPic&=create("hNewPic",xx&,yy&,0)
startPaint myHPic&
mCopyBmp 0,0 - xx&,yy& > 0,0;0
endPaint
destroyWINDOW(mybutton&)
mybutton& = Create("PicButton",parent&,myHPic&,x&,y&,xx& + 1,yy& + 1)
deleteObject myHPic&
return myButton&
endproc
|
|
|
| |
|
|
|
Thomas Freier | Danke per die Hinweise. Da die SKControl ohnehin im Programm im Einsatz ist, war es der geringste Aufwand einen SKCtrl_CreateUserButton einzusetzen. |
|
|
| |
|
|