fsgn.win32gui
Übersicht

![]() |
LunatixBetreff: fsgn.win32gui |
![]() Antworten mit Zitat ![]() |
---|---|---|
Huhu!
Ich habe mich nun Entschlossen, mein win32gui Modul online zu stellen. Vor ca... drei? Jahren war mir die MaxGui einfach zu beschränkt, weshalb ich eine eigene win32 (only!) Einbindung geschrieben habe, die auch soweit ganz gut läuft und fast alle funktionen hat. Die Dokumentation schreibe ich nun einfach mal hier herein, jedoch werde ich sie Stück für Stück erweitern, denn alles auf einmal zu Schreiben wäre schlichtweg zu lang. Natürlich kann man aber im beiliegenden Sourcecode schonmal nach den Fubnktionen schauen - und wenn Fragen aufkommen, beantworte ich diese gern! Das Modul hat keine Funktionen wie "CreateWindow" oder "CreateButton" - stattdessen müssen direkt die Befehle der Klassen verwendet werden. Die Haupt Gadget Klasse nennt sich "TGadgetObject" (Ausnahme: Menus werden als TMenu bezeichnet, sowie Items eigene Item Strukturen haben - dazu jedoch später mehr) Wichtiger Edit: Habe das Modul "fsgn.win32" vergessen, beizupacken, welches erforderlich für fsgn.win32gui war. Sorry! Nun ists bei! Downloads https://www.blitzforum.de/upload/file.php?id=9384 1.0 - Dateien (die wichtigsten) src.bmx : beinhaltet TGadgetObject und TGuiDriver - TGadgetObject beinhaltet alle Methoden, die für das jeweilige Gadget wichtig sind, TGuiDriver wird vom System ausgeführt und verwaltet, jedoch kann man hierüber noch DesktopWidth(), DesktopHeight() und ForGroundWindow() ausführen. src/event.bmx : beinhaltet eine Liste der Events sowie den Typ TFEvent src/gadgetstyle.bmx : beinhaltet alle Konstanten die für das Aussehen der Gadgets gebraucht werden src/structs.bmx : beinhaltet alle wichtigen Strukturen src/textarea.bmx : beinhaltet eine RichEdit 2.0 TextArea, welche wahlweise Multi- oder Singleline ausführung haben kann - mehr dazu steht in "src/gadgetstyle.bmx" 1.1 - Event System (TFEvent) Funktionsliste: BlitzMax: [AUSKLAPPEN] TFEvent.Peek:Int() Meldet "True", wenn ein neues Event abzurufen ist
BlitzMax: [AUSKLAPPEN] TFEvent.Wait:TFEvent()Gibt ein Handle des Types "TFEvent" zurück (wenn ein Event vorliegt) und löscht dies aus der Warteschlange Erfahrene Programmierer können sich noch weitere Funktionen in "src/event.bmx" ansehen, ich empfehle jedoch nicht unbedingt, diese unbedacht zu verwenden. Es können dort noch eigene Events hinzugefügt werden oder auch events gelöscht werden. Struktur TFEvent: Code: [AUSKLAPPEN] Field id:Int Event typ - siehe dazu 1.2 - Event Liste (z.b. MSG_CLOSE, MSG_MENUACTION, MSG_BUTTONPUSH)
Code: [AUSKLAPPEN] Field source:Object Quelle des Events (z.b. ein Fenster oder Button)
Code: [AUSKLAPPEN] Field sourcetype:Int Typ der Quelle (z.b. GADGET_WINDOW, GADGET_BUTTON, etc.)
Code: [AUSKLAPPEN] Field data:Object Optionale Daten, z.b. eine Menu Item Struktur
Code: [AUSKLAPPEN] Field extra:Object Optionale Daten
1.1 - Event Listung Folgende Konstanten können überevent.sourcetype übermittelt werden: GADGET_WINDOW /color [color=red]GADGET_BUTTON GADGET_LISTVIEW GADGET_TREEVIEW GADGET_TABBER GADGET_TEXTFIELD GADGET_TEXTAREA GADGET_PANEL GADGET_MENU GADGET_LABEL GADGET_TOOLBAR GADGET_COMBOBOX GADGET_SCROLLBAR GADGET_TRACKBAR GADGET_FILEBROWSER GADGET_OWNER_BUTTON Folgende Konstanten können überevent.id übermittelt werden: EVENT_WINDOWCLOSE - Schliessen-Button wurde gedrückt EVENT_WINDOWSIZE - Fenster wird verändert (Größe)]/b] [b]WM_DROPFILE - Dateien wurden per Drag&Drop auf das jeweilige Fenster geschoben MSG_CLOSE - Schliessen Button wurde betätigt MSG_SIZE - Fenstergröße wurde geändert MSG_MOVE - Fenster wurde bewegt MSG_MOVING - Fenster wird bewegt MSG_FILEDROP - Dateien wurden per Drag&Drop auf das jeweilige Fenster geschoben MSG_ITEMSELECT - Ein Item wurde angewählt (Treeview, Listview, ComboBox, Toolbar) MSG_LOSTFOCUS - Benutzer hat ein anderes Fenster ausgewählt MSG_ITEMMENU - MSG_DBLCLICK - Doppelter Mausklick MSG_RETURN - Return taste betätigt MSG_GETFOCUS - Benutzer hat Fenster ausgewählt MSG_ITEMCHANGE - Item wurde gewechselt MSG_ITEMEXPAND - Benutzer hat ein TreeViewItem ausgeklappt MSG_ITEMEXPANDING - Item klappt aus MSG_ITEMUNSELECT - Item wurde abgewählt MSG_CLICK - Linke Maustaste betätigt MSG_RCLICK - Rechte Maustaste betätigt MSG_ITEMEDIT - Benutzer editiert Treeview Item MSG_RDBLCLICK - REchte Maustaste doppelt betätigt MSG_BUTTONCLICKED - MSG_KEYDOWN - taste gedrückt MSG_KEYUP - Taste losgelassen MSG_MOUSEMOVE - Maus wird bewegt MSG_LMOUSEDOWN - Linke Maustaste gedrückt MSG_LMOUSEUP - Linke Maustaste losgelassen MSG_LMOUSEDBL - Linke Maustaste Doppelklick MSG_RMOUSEDOWN - Rechte Maustaste wird gedrückt MSG_RMOUSEUP - Rechte Maustaste losgelassen MSG_RMOUSEDBL - Rechte Maustaste Doppelklick MSG_LINK - MSG_TEXTSELECT - MSG_SCROLLINFO - Benutzer hat über eine Track- oder Scrollbar gescrollt MSG_BUTTONPUSH - Button wurde betätigt MSG_BUTTONSTATE - Status einer Checkbox wurde verändert MSG_MENUACTION - Ein Menu eines Fenster- oder PopUp Menus wurde ausgewählt 2.1 - TWindow BlitzMax: [AUSKLAPPEN] Local hWnd:TGadgetObject = TWindow.Create:TGadgetObject( hWndTitle:String, xpos:Int, ypos:Int, hWndWidth:Int, hWndHeight:Int, hWndParent:TGadgetObject, hWndStyle:Int, hWndMenu:TMenu = Null ) hWndTitle: Text, der in der Titelleiste, bzw. beim Hauptfenster in der Taskleiste erscheint xpos, ypos: X und Y Position des Fensters, ausgehend vom Bildschirm oben links hWndWidth, hWndHeight: Höhe und Breite des Fensters hWndParent: Soll das neue Fenster einem schon bestehenden "angehängt" werden, muss dieses hier angegeben werden - ansonsten einfach "NULL" hWndStyle: Aussehen des Fensters: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() hWndMenu: ein vorher erstelltes Menu (Rootmenu, hinterher indiviuell erweiterbar) Weitere informationen im Punkt 2.1 - TMenu [/i] 2.1 - TMenu[/i] BlitzMax: [AUSKLAPPEN] Local hMenu:TMenu = TMenu.Create(Name:String, source:TMenu = Null) Name: Menutext source Parent des Menus (Das Rootmenu bekommt natürlich keinen parent) Ein Menu kann entweder an ein Fenster angehangen werden oder aber auch als PopUp Menu per rechter Maustaste Aktiviert werden. Nachdem das Menu erstellt wurde, muss unbedingt die Methode (nur Rootmenu) Code: [AUSKLAPPEN] hRootMenu.Update() ausgeführt werden. Nachdem ein Fester erstellt wurde, welches das Menu angehangen bekommen hat, muss die Methode
Code: [AUSKLAPPEN] hWnd.RedrawMenu ausgeführt werden.
Soll das Menu als PopUp Menu fungieren, muss beispielsweise nach dem das Event (siehe Punkt X.1 - Event System) MSG_CLICK / MSG_RCLICK / MSG_LMOUSEDOWN / MSG_RMOUSEDOWN / MSG_RMOUSEUP / MSG_LMOUSEUP abgefangen wurde (oder jedes andere beliebige Event - das ist natürlich dem Programmierer überlassen) die MethodeCode: [AUSKLAPPEN] hWnd.PopUpMenu ausgeführt werden.
BlitzMax: [AUSKLAPPEN] TGadgetObject.PopUpMenu:Int(menu:TMenu,pt:Int[]=Null,align:Int=TPM_LEFTALIGN|TPM_TOPALIGN) menu:[b] Übergabe des vorher erstellten Menus [b]pt: Zweistelliges Array mit der X und Y Position des Fensters - ist der Pararmeter "NULL" werden automatisch die aktuellen Koordinaten des Mauszeigers benutzt. align: Ausrichtung des Menus: ![]() ![]() ![]() ![]() Zum Schluss nun noch ein simples Beispiel: BlitzMax: [AUSKLAPPEN] SuperStrict |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group