Einsteigerfragen zur PROFAN Programmierung

| Suchen
| Zurück zur Übersicht

Autor | Thema: Flache Buttons
Mathias Kranze
| 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
Thorsten
| 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
Mathias Kranze
| Datum:27.07.02 18:58 |
ahhhhhhhhh thx MFG
Mathias Kranze
| 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 ?
Thorsten
| 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.
Mathias Kranze
| 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
Mathias Kranze
| 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.............. ?
Rolf Koch
| 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
Mathias kranze
| 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

| Zurück zur Übersicht

| Ein kostenloses WebMart Forum WebMart Homepage Tools kostenlos |