Gadget

Fragen und Bugreports zur PureBasic 4.0-Beta.
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Gadget

Beitrag von Toshy »

Hallo.
ich habe noch nie mit Gadgets gearbeitet, weil ich noch relativ wenig mit PB gearbeitet habe und ich eher die "Hintergrundprogrammierung" mache, also nicht die Oberfläche.
Mit
Procedure Open_Window_ShowNetInfos()
Window_ShowNetInfos = OpenWindow(#PB_Any, 301, 0, 500, 500, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Window 0")
If Window_ShowNetInfos
If CreateGadgetList(WindowID(Window_ShowNetInfos))
PanelGadget(#Panel_ShowNetInfos, 0, 0, 500, 500)
AddGadgetItem(#Panel_ShowNetInfos, 1, "Tab 1")
ListViewGadget(#Listview_ShowNetInfos1, 0, 2, 496, 470)
AddGadgetItem(#Panel_ShowNetInfos, 2, "Tab 2")
ListViewGadget(#Listview_ShowNetInfos2, 0, 2, 496, 470)
CloseGadgetList()
EndIf
EndIf
EndProcedure
Erstelle ich ein Fenster, mit Panel, 2 Tabs und ner Liste drauf.
Soweit so gut, allerdings wird nur das Fenster angezeigt, die Tabs nicht (mit Liste) es sei denn, ich rufe im Hauptprogramm (oder nehm Thread) "WaitWindowEvent()" auf. Muß das so sein?
Ich hatte sonst eigendlich nicht vor Events selbst zu verarbeiten, da dies nur eine ARt Debugroutine in eine DLL sein sollte. Also nur ne Liste mit ein paar Zeilen Text die sich selbständig ändern.

Ist das verwenden von WaitWindowEvent() eine Voraussetzung das Panels angezeigt werden (und andere Gadgets) oder mache ich was falsch oder läuft in der Beta noch was nicht richtig?

Gruß
Toshy
1. Win10
PB6.1
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Ja, ist es (Windowevent geht auch)
dieser Befehl zeichnet nähmlich auch das Fenster neu.
(Schrittweise)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

WaitWindowEvents() sorgt erst dafür, das Ereignisse abgearbeitet werden.
Ohne diesen oder ä. Befehl funzt weder die GUI, noch Callbacks usw.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

Danke.
Jetzt weiß ich Bescheid.

Etwas dumm ist das aber schon.
Da ich eine DLL erstelle du unter anderem ein Debugfenster erstellen kann, aber auch so einige Gadgets die selbständig (durch Threads) aktualisiert werden sollen (nur Tabs und Listviews). Das würde dann ja leider nicht gehen. Wäre schon sehr dumm. Ich kann ja auch nicht einfach "waitevent" im Thread einsetzen (oder?) weil ich dann ja wohl auch die events des Hauptprogramms (das die DLL aufruft, nicht in PB erstellt) abfangen würde bzw. es vielleicht nicht funktioniert.

Gibt es da noch eine Möglichkeit?

Gruß
Toshy
1. Win10
PB6.1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

WaitWindowEvents() muß immer in dem Thread stehen, in dem das Fenster
erzeugt wird. Eventbearbeitung über mehrere Thread ist mit normalen Mitteln
nicht möglich. Per API kann man aber entsprechende Rechte vergeben, aber
das mußte Dir selber suchen, hab da keine weiteren Infos.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag von Toshy »

Ups. Das wußte ich nicht.
Das ist ja richtig gut, dann brauche ich mir ja gar keine Sorgen zu machen. Einfach Thread erstellen, Window erstellen mit Gadgets und in Schleife Event abfragen.

Mir ist das aus zwei Gründen nicht aufgefallen. Erstens weil ich WindowsEvent nur nutze damit die Gadget überhaupt aufgebaut werden, ich werte den Inhalt also nicht aus und zweitens, weil auch wenn ich Windowsevent aus einem anderen Thread (Hauptthread) aufrufe werden die Gadgets aus dem "Gadgetthread" trotzem richtig aufgebaut. Das ist für mich jetzt ein wenig verwunderlich, aber ok.
1. Win10
PB6.1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich beziehe mich aber immer auf Windows ab w2k!
Über DOS-Windows informiere ich mich nicht mehr :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Gesperrt