|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 29.03.2016, 11:25 Titel: |
|
|
Bei mir Funktioniert jetzt alles, der Fehler in der RadioButton.bas-Function RadioButtonActions), denn hatte ich noch gar nicht gemeldet, ist auch weg.
Danke für die Korrektur! |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 16.10.2018, 21:08 Titel: |
|
|
Hi Muttonhead,
ich haette da mal ne frage bezueglich dem managment von sGUI.
Da ich gerade an einem MapGenerator bastel und mir sGUI immernoch sehr gefaellt (wegen der einfachen benutzung und dem schnellen aufbau) hab ich
mal nachgeschaut im source aber nix gefunden.
In meinem Project habe ich zB solche Konstrukte...
Code: |
'NoiseSettins.bi
Type NoiseSettings
Declare Constructor()
Enum FilterType_e
Normal,
Rigid
End Enum
Enum NoiseType_e
Classic,
Simplex,
OpenSimplex
End Enum
NoiseType As NoiseType_e
FilterType As FilterType_e
active As boolean
hide As boolean
NoiseMask As Integer
Dim CenterX As Double = 0.0
Dim CenterY As Double = 0.0
Dim CenterZ As Double = 0.0
Dim CenterW As Double = 0.0
Dim minValue As Double = -0.0
Dim octaves As Integer = 1
Dim persistence As Double =0.5
Dim baseRoughness As Double = 1.01
Dim roughness As Double = 2.5
Dim strength As Double = 1.0
Dim addvalue As Double =0.0
n_min As Double
n_max As Double
End Type
Constructor NoiseSettings()
End Constructor
'-------------------------------------------------------------------------------------
'NoiseFilter.bi
#Include "noise.bi"
#Include "NoiseFactory.bi"
'define a standart interface for the Noise Filters
Type INoiseFilter extends object
Declare virtual Function eval(x As Double,y As Double) As double
Declare virtual Function eval(x As Double,y As Double,z As double) As double
Declare virtual Function eval(x As Double,y As Double,z As Double,w As Double) As double
value As Double
End Type
Function INoiseFilter.eval(x As Double,y As Double) As double
Return value
End Function
Function INoiseFilter.eval(x As Double,y As Double,z As Double) As double
Return value
End Function
Function INoiseFilter.eval(x As Double,y As Double,z As Double,w As Double) As double
Return value
End Function
'The Classic Perlin
Type ClassicNoiseFilter extends INoiseFilter
Declare Constructor(NS As NoiseSettings)
Declare Destructor()
Declare Function eval(x As Double,y As Double) As Double
Declare Function eval(x As Double,y As Double,z As double) As Double
Settings As NoiseSettings
noise As INoise Ptr
End Type
Constructor ClassicNoiseFilter(NS As NoiseSettings)
Settings = NS
noise = NoiseFactory.CreateNoise(NS)
End Constructor
Destructor ClassicNoiseFilter()
Delete noise
End Destructor
Function ClassicNoiseFilter.eval(x As Double,y As Double,z As Double) As double
value=noise->noise(x,y,z)
Return value
End Function
Function ClassicNoiseFilter.eval(x As Double,y As Double) As double
value=noise->noise(x,y,0)
Return value
End Function
'The Simplex Noise
Type SimplexNoiseFilter extends INoiseFilter
Declare Constructor(NS As NoiseSettings)
Declare Destructor()
Declare function eval(x As Double,y As double) As double
Declare function eval(x As Double,y As Double,z As double) As double
Settings As NoiseSettings
noise As INoise Ptr
End Type
Constructor SimplexNoiseFilter(NS As NoiseSettings)
Settings = NS
noise = NoiseFactory.CreateNoise(NS)
End Constructor
Destructor SimplexNoiseFilter()
Delete noise
End Destructor
Function SimplexNoiseFilter.eval(x As Double,y As Double) As double
value=noise->noise(x,y)
Return value
End Function
Function SimplexNoiseFilter.eval(x As Double,y As Double,z As Double) As double
value=noise->noise(x,y,z)
Return value
End Function
'A Rigid Filter
Type RigidNoiseFilter extends INoiseFilter
Declare Constructor(NS As NoiseSettings)
Declare Destructor()
Declare function eval(x As Double,y As double) As double
Declare function eval(x As Double,y As Double,z As double) As double
Settings As NoiseSettings
noise As INoise ptr
End Type
Constructor RigidNoiseFilter(NS As NoiseSettings)
Settings = NS
noise = NoiseFactory.CreateNoise(NS)
End Constructor
Destructor RigidNoiseFilter()
Delete noise
End Destructor
Function RigidNoiseFilter.eval(x As Double,y As Double) As Double
Dim amplitude As Double = 1
Dim weight As Double = 1
Dim v As Double
dim frequency As Double=Settings.baseRoughness
Dim min As Double = DBL_MAX
Dim max As Double = DBL_MIN
value=0
For i As UInteger=0 To Settings.octaves
v=1.0-(Abs(noise->noise(x*frequency+Settings.CenterX,y*frequency+Settings.CenterY,0)))'+1.0
v*=v
v*=weight
weight=v
value+=v*amplitude
frequency*=Settings.roughness
amplitude*=Settings.persistence
If value<min Then min=value
If value>max Then max=value
Next
value = IIf(0>value-Settings.minValue,0,value-Settings.minValue)
Return value'/(max-min)
End Function
Function RigidNoiseFilter.eval(x As Double,y As Double,z As Double) As double
Dim amplitude As Double = 1
Dim weight As Double = 1
Dim v As Double
dim frequency As Double=Settings.baseRoughness
Dim min As Double = DBL_MAX
Dim max As Double = DBL_MIN
value=0
For i As UInteger=0 To Settings.octaves
v=1.0-(Abs(noise->noise(x*frequency+Settings.CenterX,y*frequency+Settings.CenterY,z*frequency+Settings.CenterZ)))
v*=v
v*=weight
weight=v
value+=v*amplitude
frequency*=Settings.roughness
amplitude*=Settings.persistence
If value<min Then min=value
If value>max Then max=value
Next
value = IIf((value-Settings.minValue)>0,(value-Settings.minValue),0)
Return value'/(max-min)
End Function
'--------------------------------------------------------------------------------------
'NoiseFilterFactory.bi
#Include "NoiseSettings.bi"
#Include "NoiseFilter.bi"
#ifndef NULL
#define NULL cptr(any ptr, 0)
#EndIf
Type NoiseFilterFactory
Declare Static Function CreateNoiseFilter(NS As NoiseSettings) As INoiseFilter Ptr
dummy As byte
End Type
Function NoiseFilterFactory.CreateNoiseFilter(NS As NoiseSettings) As INoiseFilter Ptr
Dim res As INoiseFilter Ptr = NULL
Select Case NS.FilterType
Case NS.FilterType_e.Normal
res = New ClassicNoiseFilter(NS)
Case NS.FilterType_e.Rigid
res = New RigidNoiseFilter(NS)
End Select
Return res
End Function
|
nun hab ich mich gefragt ob sGUI auch so aufgebaut ist.
wenn ja wo vertseckten sich die "Interfaces", wenn nein koennte
man das in zusammenarbeit oder alleine (mit deiner erlaubniss)
so umstrukturieren das man ein IGdaget interface hat und evtl noch mehr?
(Gadgets haben ja alle eine xy position soweit ich das sehe).
Meine Intension ist ein WindowManager zu basteln mit sGUI den man
"intuitiv" programieren kann.
evtl kannst du mir ja dabei helfen bzw tipps geben falls das ueberhaupt
moeglich ist. zb wo muss ich ansetzen (wo ist der anfang von sGUI) um zB die Gadgets in "Interface"Gadgeds umzuwandeln.
Mir schweben im da gerade so Konstrukte wie
Code: |
Type IWindow extends object
x As Integer
y As Integer
w As Integer
h As Integer
z As Integer 'for rendering order
title As String 'window title (if "" then not drawn)
active As boolean 'is window visible
minimized As boolean 'is it minimized
Declare Sub Render(e As sGUI.EventHandle ptr)
Declare Sub AddGadget(g As sGUI.Gadget ptr)
Declare Sub DeleteGadget(g As sGUI.Gadget ptr)
Gadgets As arrayList
UserData As arrayList
End Type
Type WindowManager
Declare Sub Render()
Declare Sub UpdateZ()
Declare Sub Sort()' sorts the arrayList by Z
Declare Sub AddWindow(w As IWindow)
Declare Sub DeleteWindow(w As IWindow)
event As sGUI.EventHandle Ptr ' th global event handle
End Type
|
im kopf rum.
salute
PS.: ich nutze auserdem die aeusserst nuetzliche erweiterung von Paul Doe
namens "arrayList.bi" aus diesem Fred https://www.freebasic.net/forum/viewtopic.php?f=8&t=26667 |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 21.10.2018, 16:20 Titel: |
|
|
erst jetzt gelesen... sorry.
Also es geht generell um nen Fenster-System? Nun,mit der downloadbaren sGUI Version wird das sehr schwierig. Die noch immer in den Kinderschuhen steckende Version hat zumindest ein paar Grundlagen die m. M. nach sehr wichtig sind. Sämtliche Allozierungen, also erzeugte Eventhandles, Gadgets usw. werden dort in "zentralen Listen" verwaltet. Das ist bisher nicht so. Außerdem ist es nun möglich, einem Evenhandle ne art XY offset zu verpassen, was einem Pseudofensterhandling sehr entgegenkommt.
In wieweit man dies wieder rückimplantieren kann, weiß ich momentan auch nicht, da, mal wieder, etliche Types einer Reorganisation unterzogen wurden.
Trotzdem wäre es cool mal wieder dran herumzuschrauben
Mutton |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 21.10.2018, 17:11 Titel: |
|
|
ja genau ein fenstersystem, ich hab zB einen type IWindow der ein fenster
beschreibt. dann moechte ich gadgets hinzufuegen (halte ich in einer liste)
nun hab ich natuerlich das problem das ich in der liste leider nicht weis
was fuer ein gadget ich anklicke,ist es der close button oder eine listbox.
dann hab ich ein type zb ColorPicker der die eigenschaften und ein paar subs
von IWindow erbt. dieser stellt das eigendliche fenster dar. ich muss nun
nurnoch eine sub schreiben die die speziellen eigenschaften des ColorPicker
fensters behandelt, alles andre ist ja schon in IWindow definiert.
(zb verschieben des fensters,der close und minimieren button,
halt alles was ein fenster zu einem fenster macht)
probleme hab ich nun natuerlich zB beim senden und empfangen von msgs
von einem fenster zum andren. bzw hab ichgarkeine idee wie ich das
umsetzen sollt. ich kann also zZ nicht oder nur umstaendlich auf die
selectierte farbe des ColorPicker zugreifen und mir zB den globalen
hindergrund damit faerben lassen.
hm ka wie ich das beschreiben soll, hoffe aber du weist was ich meine.
salute
Edit: waere es evtl moeglich eine testverion deiner neuimplementierung hochzuladen?
Edit2: mal als idee was ich so vor hab
der Windowmanager:
Code: |
Type WindowManager
Declare Constructor()
Declare Constructor(w As Integer,h As Integer)
Declare Destructor()
Declare Sub Render()
Declare Sub UpdateZ()
Declare Sub Sort()
Declare Sub AddWindow(w As IWindow ptr)
Declare Sub DeleteWindow(w As IWindow ptr)
Windows As arrayList 'holds a list of IWindows
event As sGUI.EventHandle Ptr
w As Integer
h As Integer
End Type
|
das IWindow Interface
Code: |
Type IWindow extends object
Declare Constructor()
Declare Sub Init(e As sGUI.EventHandle Ptr,t As String,x As Integer,y As Integer,w As Integer,h As integer)
Declare virtual Destructor() ' the user has to implemet it
Declare Sub PreRender(e As sGUI.EventHandle Ptr)
Declare virtual Sub Render(e As sGUI.EventHandle ptr) 'the user has to implement it
Declare Sub AddGadget(g As sGUI.Gadget ptr)
Declare Sub DeleteGadget(g As sGUI.Gadget ptr)
title As String
x As Integer
y As Integer
w As Integer
h As Integer
z As Integer 'for drawing order
Gadgets As arrayList 'holds sGUI.Gadgets
UserData As arrayList 'holds data?
event As sGUI.EventHandle Ptr
active As boolean
minimized As boolean
End Type
|
und das Eigendliche fenster
Code: |
Type ColorPicker extends IWindow
Declare Constructor(e As sGUI.EventHandle Ptr,t As String,x As Integer,y As Integer,w As Integer,h As integer) 'calls first IWindow.Init(...)
Declare Destructor()' the specialized Destructor
Declare Function Pick(x As UInteger, y As uinteger) As color_t
Declare Function lerp(v0 As double, v1 As Double, t As Double) As Double
Declare Sub Render(e As sGUI.EventHandle ptr) 'the specialized Render Routine, calls first IWindow.PreRender(...)
selected As color_t
m_over As color_t
img As IMAGE Ptr
End Type
|
nun kann ich zb sowas machen
Code: |
dim WM as WindowManager ptr = new WindowManager(1024,600)
Dim CP As IWindow Ptr= New ColorPicker(WM->event,"ColorPicker",64,64,360,256)
WM->AddWindow(CP)
WM->Render()
|
hoffe das macht die geschichte bissl einleuchtender.
evtl bin ich ja auch aufm holzweg was dieimplementierung angeht,
fals ja dann sag mir das bitte ;D
|
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 21.10.2018, 18:41 Titel: |
|
|
<Link entfernt>
Wir können es ja mal zerlegen
Mutton
Zuletzt bearbeitet von Muttonhead am 22.10.2018, 17:39, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 22.10.2018, 14:35 Titel: |
|
|
also das Dragger Gadget gefaellt mir schon mal sehr, das hilft mir beim Fenster
verschieben extrem ansonsten seh ich noch nich wirklich wo was geendert
wurde. aber ich schau mir die demos gerade an. der bitmap font gefaellt mir
auch sehr, sieht irgenwie professioneller aus
salute
edit: ich habe das DragBar Gadget um das parameter GadHeight erweitert, da mir dieses fehlte. es wird genauso behandelt wie im AddSimpleGadget.
bei 0 wird die Fonthoehe benutzt.
edit2: cls aus DragBarActions entfernt da das stoerte.
frage: reicht eigendlich eine Eventhandle aus oder kann ich auch mehr davon nutzen?
problem ich habe 2 fenster das 2. laesst sich schieben und schliesen das 1. nicht. |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 22.10.2018, 18:02 Titel: |
|
|
Ja, das DragBar soll in die Richtung verschiebbares Fenster gehen.
Wie schon gesagt, in jedem Eventhandle gibt es nun einen GFX Offset. Die Positionierung der dem EH zugeordneten Gadgets erfolgt nun relativ zum Offset. Wie gut oder schlecht das funktionieren wird... soweit war ich noch nicht.
Wenn du einen Blick in die sGUI.bas wirfst, dort werden gegen Ende einige Listen erzeugt. Also sämtliches alloziertes Zeugs wird in diesen Listen verwaltet. Dies hat beim Löschen definitiv Vorteile, und ein vielleicht noch zu entwerfendes MCP (Master Control Program Tron lässt grüßen) hat dann universellen Zugriff.
ps: Zu deiner Frage: Bis jetzt kann nur immer einer laufen..
Aber, da man nun auf alle Gadgetlisten Zugriff hat.
Für ein Fenster beispielsweise eine eigene Gadgetliste, ja gut das sollte auch so sein, und der (eine!) Eventhandle rattert alle Listen ab. Hm
Mutton |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 22.10.2018, 19:50 Titel: |
|
|
hm okay jetzt hab ich einen EventHandle laufen, nun hab ich das problem das
meine 3 fenster an der selben stelle angezeigt werden. ka warum.
wenn ich dagegen in jedem fenster einen eventhandler erstelle dann
stehen die fenster an ihrer position wie gewuenscht, aber irgendwas stimmt
da dann auch noch nich, is aber warscheinlich mein fehler.
dafuer hab ich einen sporadischen Focus fuer fenster gebastelt der soweit auch
funtzt. schoen waere es wenn ich die DragBar klicke das die mir einen "Ping"
zurueck giebt das macht sie soweit ich das sehe ja nich.
ausserdem ist mir aufgefallen das die DragBar gar keine gad->posx/y hatt (immer 0) muss das so sein? was ist gad->event->guiposx?
evtl koenntest du mal erklaeren wie ich das evtl implementieren kann.
hab das irgenwie nich hinbekomm. :/
(waere halt super fuer einen SetWindowFocus).
Salute |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 23.10.2018, 06:16 Titel: |
|
|
Zitat: | ausserdem ist mir aufgefallen das die DragBar gar keine gad->posx/y hatt (immer 0) muss das so sein? was ist gad->event->guiposx? |
wenn du in die sGUI_EventHandle.bas mal rein siehst...
Code: | type EventHandle extends node
'Parent Handle
parentevent as _EventHandle ptr
'GUI
guiposX as integer
guiposY as integer
'.......... |
guiposX,guiposY ist der Offset des Handles, Für alle ihm zugeordneten Gadgets ist dies quasi der Nullpunkt/ die Referenz. Die Dragbar befindet sich relativ immer in der oberen linken Ecke. Wenn du sie bewegst, bewegt sich eigentlich der Offset im Eventhandler.
Und hier der Unterschied zur vorangegangenen Version. Die Positionierung die Gadgets ist relativ zur Position im Eventhandle zu sehen, nicht zum Screen. Der Eventhandle (maybe das Fenster) kann sich bewegen, die Controls tun es dann auch.
Mutton |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 23.10.2018, 09:37 Titel: |
|
|
ah okay also ist das gar kein wunder das meine fenster alle an der
selben stelle stehn wenn ich einen globalen eventhandle benutze, richtig?
wenn dem so ist dann waeren natuerlich mehrere event handles besser.
fuer jedes fenster einen.
erstellen kann ich ja mehrere EventHandles anscheinend wird aber nur
der erste abgearbeitet. hab zZ aber auch noch nichts gefunden
wo ich da was aendern muesste das mehrere event handles abgearbeitet
werden.
hier mal ein demo mit source als FBEdit project, evtl hilft das ja das
problem zu erkennen.an den wichtigen stellen hab ich auch ein paar
kommentare hinterlassen.
http://users.freebasic-portal.de/haubitze/sGUI-Windows.7z
wichtig hierbei ist eigendlich nur IWindow.bi da dort alles fuer ein standart
fenster geschieht.
(den rest muss man dann halt im kind behandeln siehe ColorPicker.bi)
salute |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 23.10.2018, 18:32 Titel: |
|
|
Hab mich mal inspirieren lassen von deinem Code... etwas Geduld ist von Nöten... fliegt einiges durcheinander
Mutton |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 11.11.2018, 13:49 Titel: |
|
|
Hey Motton,
wollte mal nachfragen wie du vorran kommst?
giebt es schon etwas neues mit dem man spielen kann?
salute |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 18.11.2018, 10:49 Titel: |
|
|
...auch wenn es nicht so aussieht, es passiert schon etwas:
nach einigen Fehlversuchen nun dieser Ansatz:
alles soll in einer sauberen(?) Hirachie geordnet sein. Also ein klare Parent<->Child Beziehung
es gibt nun 2 Types: Gadget und Window
(Obwohl,beides ist letzlich irgendwie das gleiche)
Gadget:
*ist immer(!) Child-Objekte eines Windows
*kann ein(und nur ein) eigenes Child-Window enthalten. Dies ermöglicht dann auch die zusammengesetzten Gadgets
Window:
*kann Child eines Gadgets als auch eines Windows sein
*besitzt eine (Child-)GadgetListe
*besitzt eine (Child-)WindowListe
*übernimmt einige Funktionen des Eventhandles beschränkt aufs jeweilige Window.
MCP:
Da Gadgets und Windows erst einmal passive,"tote" Objekte sind, braucht man nun noch das MasterControlProgram.
Es sucht den gesamten Hirachiebaum (oder nur einen Teil dessen) ab und führt entsprechende Aktionen aus.
Bedingt durch diese Hierachie-Kontruktion gibt es nun ein RootWindow, das den Einstiegspunkt fürs Gesamte darstellt.
Wie gut das "Signaldurchschleifen" funktioniert, kannst du in der Demo sehen.
Als nächstes werde ich alle vorhandenen Gadgets an dieses System anpassen.
Das Menü-System wird komplett neu geschrieben werden müssen.
FensterHandling....Close/Open,Bewegung und Fensterstapelhandling (wie nennt man sowas richtig XD) usw.
Drawing/Refresh.... ich vermute es wird auf eine Art frame-basierenden Neuzeichnen hinauslaufen.
Mutton
https://1drv.ms/u/s!AsTPhVzcfzRrht47ft54RCtRdJZOfQ |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 18.11.2018, 13:43 Titel: |
|
|
auweija, da hab ich ja was angerichtet ;D
gefaellt mir aber gut, funktioniert flott und wie gewohnt einfach.
nur das erzeugen der fenster is noch etwas umstaendlich aber das wirst
du ja auch noch implementieren, wenn ich den kommentar im code richtig lese.
aber gut zumindest hab ich wieder was mit dem ich spielen kann.
auf jeden fall danke ich dir fuer deine muehen.
salute |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4603 Wohnort: ~/
|
Verfasst am: 13.01.2019, 01:56 Titel: |
|
|
Um mal ein bisschen Werbung für eines meiner Lieblingsspiele zu machen
Ich habe für Spellweaver einen Card Designer geschrieben, für den ich sGUI einsetze.
https://www.freebasic-portal.de/projekte/spellweaver-card-designer-106.html _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 03.03.2019, 22:34 Titel: |
|
|
Hey Muttonhead,
ich weis hab mich lange nicht mehr gemeldet tschuldigung dafuer.
dennoch wollte ich mal wieder nachfragen ob sich was tut?
hab dein demo mal in mein demo eingebaut um zu sehen ob ich damit klar-
komme. soweit funtzt das ganz gut nur das fensterziehen und den fokus setzen
will mir nicht so recht gelingen. ausserdem hab ich festgestellt das DragBar
Gadget wohl putt ist. ich hoffe auf weitere updates und beispiele.
ich hab auch gerade so meine probleme mit den events, ka wie ich die jetzt abfrage.
hab ja mehrere fenster die wohl ihre eigenen events haben wenn
ich das richtig verstanden habe.
danke und weiter so. |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 17.03.2019, 19:23 Titel: |
|
|
[url]https://1drv.ms/f/s!AsTPhVzcfzRrh_EowxL7pFtwGTo0Kw[/url]
Alle Grafik-Routinen können nun auch in FB.Images herumpinseln.
Wenn Fenster benutzt werden, ist ein CLS erforderlich :/
Das bedeutet letztlich das der User die Standard GFX Befehle nicht mehr benutzen kann.
Über das so genannte RootWindow will ich mal versuchen, ob es ohne bewegliche Fenster, irgendwie anders geht.
Es werden noch verschiedene Fenstertypen hinzukommen. Derzeit sind die Fenster nur ein Machbarkeitstest.
Das Window-Stack Handling fehlt, eine klare Signaltrennung fehlt auch noch.
Man kann zB beide Fenster gleichzeitig bewegen, wenn die Kopfzeilen übereinander liegen...
Mutton |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 18.03.2019, 15:47 Titel: |
|
|
jaa endlich wieder was zum spielen
kann ich wieder bissl rumprobieren.
danke fuer das update Muttonhead. |
|
Nach oben |
|
|
Muttonhead
Anmeldungsdatum: 26.08.2008 Beiträge: 563 Wohnort: Jüterbog
|
Verfasst am: 22.03.2019, 16:05 Titel: |
|
|
https://1drv.ms/u/s!AsTPhVzcfzRrh_F8FseGKKWdzSZbMA
...Erstaunlich das es überhaupt funktioniert
Mutton |
|
Nach oben |
|
|
Haubitze
Anmeldungsdatum: 14.10.2009 Beiträge: 132
|
Verfasst am: 24.03.2019, 13:42 Titel: |
|
|
ja wie geil is das denn, danke Muttonhead.
lauft fluessig und sieht klasse aus
bin schoon gespannt was du da noch draus machst. also weiter so |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|