Autor | Thema: Flache Buttons | | Datum:27.07.02 15:11 
| |
jo, ich weiss ist wohl das thema nummer eins, doch habe ich mittels suche auch nichts gefunden!
deshalb mal ne Post:
Wie bekomme ich meinen button wirklich flach, ohne ein 3d style? Dabei soll der 3d Style auch nicht angezeigt werden, wenn ich mit der maus drüberfahre.
da ich aber eigentlich keine buttons dafür verwenden will, habe ich das so geplant gehabt:
If and(and(and(gt(%mousex,a%),gt(%mousey,b%)),lt(%mousex,c%)),lt(%mousey,d%))
If Equ(%message,$201)
Endif
Endif
ist eigentlich ne gute idee, doch wirkt das ganze nicht auf einen dialogfenster. es scheint so, als wird diese abfrage nur auf das Hauptfenster bezogen. Gebe ich beispielsweise die Koordinaten 0,0-10,10 ein, so reagiert das Programm im Dialognfenster nicht, im hauptfenster dagegen reagiert es, obwohl ich dem Befehl nach dem createdialog befehl gebracht habe.
ist es möglich diese zeilen auch auf das Dialogfenster zu beziehnen?
mfg
|
| | Datum:27.07.02 16:02 
(mrk@mrk-soft.de) | |
Ja,
die Abfrage der Maus ist nur nicht über %MouseX und %MouseY
möglich, sondern läuft hier über die API.
dafür gibs aber glücklicherweise schon diese kleine Proc.
http://www.mrk-soft.de
Section Profan, Tip-Kiste ...
mrk
|
| | Datum:27.07.02 18:58 
| |
ahhhhhhhhh
thx
MFG
|
| | Datum:27.07.02 19:23 
| |
mhhhhh, komisch......
Def GetCursorPos(1) !"USER32","GetCursorPos"
Def ScreenToClient(2) !"USER32","ScreenToClient"
Def PtInRect(3) !"USER32","PtInRect"
Declare rectpt#,rect#
Proc CheckDlgArea
Parameters hw&,x%,y%,x1%,y1%
Declare result%
Dim rect#,16
Dim rectpt#,8
Long rect#,0=x%
Long rect#,4=y%
Long rect#,8=x1%
Long rect#,12=y1%
GetCursorPos(rectpt#)
ScreenToClient(hw&,rectpt#)
If Neq(PtInRect(rect#,Long(rectpt#,0),Long(rectpt#,4)),0)
result%=1
EndIf
Dispose rect#
Dispose rectpt#
Return result%
EndProc
das ist der quellcode, doch wenn ich nun die %Mouse usw ersetzen will, welche befehle nheme ich da, ich habe es zwar zustande gebracht, das es kein fehler gibt, doch die ausgabe erfolgt immer noch im hauptfenster........
If and(and(and(gt(%mousex,a%),gt(%mousey,b%)),lt(%mousex,c%)),lt(%mousey,d%))
If Equ(%message,$201)
Endif
Endif
wie kann ich diesen code für das dialogfenster anpassen
?
|
| | Datum:27.07.02 22:04 
(mrk@mrk-soft.de) | |
Hi,
ganz einfach:
CheckDlgArea winhandle%, 10, 10, 100, 20
If @%(0=) = 1
print "Maus ist in Koordinate"
Endif
Du ruft die Proc auf und übergiebst hier das Handle des
Fensters, und die Maus Koordinaten in X1/ y1 und X2 / Y2,
also das Rechteck. Ist die Maus in diesen Koordinaten, ist
das Ergebniss 1, sonnst 0.
|
| | Datum:28.07.02 12:55 
| |
Logischkeit kennt seine Bestimmung :D
> CheckDlgArea winhandle%, 10, 10, 100, 20
stimmt.......
ok ich danke dir
werde es gleich testen
MFG
|
| | Datum:28.07.02 20:01 
| |
hab as ganze mal mit createwindow getestet......
doch es reagiert nicht, das heisst der zähler ist auf 0, wenn ich nun 0 abfrage zeigt er mir es immer an, egal wo ich die maus habe..............
?
|
| | Datum:28.07.02 21:24 
(webmaster@rokosoft.de) | |
Hi nimm einfach folgendes:
declare dialog&,x%,y%,rect#,x&,y&,ende&,ende%
Window 0,0-600,600
let dialog&=@createdialog(%hwnd,"Mauskoordinaten im Dialog",5,5,230,200)
let x&=@createtext(dialog&,"",2,2,50,20)
let y&=@createtext(dialog&,"",2,25,50,20)
let ende&=@createbutton(dialog&,"ENDE",70,70,50,20)
let ende%=0
WHILENOT ENDE%
getmessage
case getfocus(ende&):let ende%=1
'und so das Dialogfenster abfragen:
'********************************************
'DIESE 2 ZEILEN, SIND VON EINEM ANDEREN AUTOR
'ANDREAS MIETHE WAR ES GLAUBE ICH ?!?
'WILL MICH NICHT MIT FREMDEN FEDERN SCHMÜCKEN ;)
let x%=int(mod(&lparam,65536))
let y%=int(div(&lparam,65536))
'********************************************
if equ(%mwnd,dialog&)
ifnot lt(x%,0)
ifnot lt (y%,0)
ifnot gt(x%,230)
ifnot gt (y%,200)
Settext x&,str$(x%)
Settext y&,str$(y%)
endif
endif
endif
endif
endif
WEND
|
| | Datum: 30.07.02 09:29 
| |
bei mir erscheinte immer das eine Speicher erschöpft wäre, doch habe einfach was dimenssioniert und ejtzt gehts :D
thx
|
|
|