Autor Thema: Mal eine Frage über Button sprich zur GUI  (Gelesen 2885 mal)

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« am: 08. February 2006, 13:17 »
Hi,

ich arbeite gerade an meiner GUI. Aber jetzt will ich ein beenden Button einbauen. Schön und gut, das zeichnen ist ja kein Problem. Nur soll ja auch was passieren wenn man draufklickt. Wie genau macht man das am besten? Ich mein, der Maustreiber verschiebt den Cursor bzw. schreibt parameter zur Funktion der Cursorverschiebung. Aber wenn jetzt gedrückt wird. Dann muss man doch irgendwie prüfen ob es da gedrückt wurde wo sich der button befindet. Aber das kann ja nicht der Maustreiber machen, weil der ja nicht weiß wann wo ein button ist. Also muss ich eine Funktion schreiben wie z.B. ButtonA startX, startY, endX, endY, text, programm . So startx und starty sind dann der Anfang und endX, endY ist das ende. Und der text muss eine Variable bzw. ein Zeichenstring sein. Und programm ist der Offset der Routine die ausgeführt werden soll, wenn der Button gedrückt wurde. Alles schön und gut, aber dann müsse die Funktion ButtonA immer prüfen ob dort gedrückt wurde. Dann aber kann nichts anderes mehr ausgeführt werden. Versteht ihr was ich mein? Ich suche den Algorithmus oder wie man das nennt für Button. Vielleicht habt ihr ja 'ne Idee.

Danke!!!
In the Future everyone will need OS-64!!!

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 08. February 2006, 13:58 »
Ich würde dir empfehlen, dass der Maustreiber einfach bei jedem Klick die GUI (also den WindowManager oder was auch immer) aufruft, und die GUI dann überprüft, ob die Koordinaten der Maus auf irgentein Control passen.

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #2 am: 08. February 2006, 15:28 »
Zitat von: SSJ7Gohan
Ich würde dir empfehlen, dass der Maustreiber einfach bei jedem Klick die GUI (also den WindowManager oder was auch immer) aufruft, und die GUI dann überprüft, ob die Koordinaten der Maus auf irgentein Control passen.
Danke, ich habe es mir so überlegt: Mein Maustreiber liest die Befehle aus den Ports und schreibt diese (Xbewegung ung Ybewegung) an meine OS-Funktion ViewCursor. So habe ich es bis jetzt. Dann wird der Mauscursor bewegt. Ich habe dann vor noch eine Funktion zu schreiben wie z.B. ClickCursor der man dann übergeben soll welche Taste gedrückt wurde. Die liest dann die aktuelle position (die mit ViewCursor positioniert wurde) und guckt ob dort ein Button ist. Nur ist mein Problem, wie will die Funktion herrausbekommen ob dort ein Button ist? Vielleicht schreibt die Funktion DrawButton die Koordinaten in spezielle variablen die ClickCursor dann ausließt und guckt ob da der Cursor ist. Nur kann man ja dann nur ein Button haben. Ich müsste dann eine ganze Zeichenkette haben die alle Positionen von Buttons aufnehmen kann und so. Vielleicht hat jemand ne bessere Idee. Einige von euch haben ja schon eine kleine GUI, wie habt ihr das denn gemacht?

danke!!!
In the Future everyone will need OS-64!!!

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #3 am: 08. February 2006, 15:44 »
Ich werde versuchen, so viel wie möglich vom eigenen Systemkern an die Anwendungen abzugeben, die dann von Libs unterstützt werden. Ich halte es für gut, wenn Klicks vom Maustreiber einfach nur in eine Schlange gehauen werden. Von wem sie ausgelesen werden ist erstmal egal. Wenn eine GUI läuft wird das die GUI sein, die den Buffer ausließt. Die schaut, ob da ein Fenster ist und schickt an den Inhaber (also das Programm) per IPC eine Nachricht, da und da wurde geklickt. Das Programm kann dann schauen, wie es reagiert, "normalerweise" sollte sich dann aber die GUI-Lib der Anwendung drum kümmern, dass das richtig verarbeitet wird.


Programm (und da kann dann eine Lib die IPC überwachen und auf Mausgeschichten reagieren)
^ (ausliefern)
IPC
^ (weitergeben)
GUI
^ (auslesen)
Buffer
^ (ablegen)
Maustreiber
^ (IRQ)
Hardware (Maus)
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

 

Einloggen