Einsteigerfragen zur PROFAN Programmierung
  Suchen
 Zurück zur Übersicht
 AutorThema: Flache Buttons
Mathias Kranze
Datum:27.07.02 15:11 Antwortenals Email verschicken  


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


Thorsten
Datum:27.07.02 16:02 Antwortenals Email verschicken (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



Mathias Kranze
Datum:27.07.02 18:58 Antwortenals Email verschicken  


ahhhhhhhhh

thx

MFG


Mathias Kranze
Datum:27.07.02 19:23 Antwortenals Email verschicken  


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

?




Thorsten
Datum:27.07.02 22:04 Antwortenals Email verschicken (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.



Mathias Kranze
Datum:28.07.02 12:55 Antwortenals Email verschicken  


Logischkeit kennt seine Bestimmung :D

> CheckDlgArea winhandle%, 10, 10, 100, 20

stimmt.......

ok ich danke dir

werde es gleich testen

MFG


Mathias Kranze
Datum:28.07.02 20:01 Antwortenals Email verschicken  


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..............

?


Rolf Koch
Datum:28.07.02 21:24 Antwortenals Email verschicken (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



Mathias kranze
Datum: 30.07.02 09:29 Antwortenals Email verschicken  


bei mir erscheinte immer das eine Speicher erschöpft wäre, doch habe einfach was dimenssioniert und ejtzt gehts :D

thx


 Zurück zur Übersicht
 

 Ein kostenloses WebMart Forum
WebMart Homepage Tools kostenlos
Shortwin - denn Glück ist kein Zufall!