Wert einer ProgBar ermitteln
Übersicht BlitzBasic BlitzPlus
KnorxThieusBetreff: Wert einer ProgBar ermitteln |
Di, Feb 07, 2012 17:52 Antworten mit Zitat |
|
---|---|---|
Hallo!
Da ich eine kleine Funktion über ProgBars baue, benötige ich jetzt einen Befehl zum Fortschrittswert der ProgBar. Ich kann nicht den Wert eingeben, da der User der Funktion nur die PB-ID angeben soll. Unter ProgBar-Befehlen in der BlitzBasic-Hilfe stehen aber nur CreateProgBar und UpdateProgBar. Dafür weiß ich, dass USER32 oder solch artige Befehle lesen kann, denn an dem Beispiel, das Pummelie im Verzeichnis DLL und Userlibs hier schrieb, sieht man, dass BlitzBasic: [AUSKLAPPEN] SendMessage(QueryObject(progbar,1),1024+16,stat,0)den ProgBar-Fortschrittswert ausliest. Kennt also jemand so einen Befehl? Als ich googelte und auch blitzelte, fand ich leider keine Treffer. Danke schon im Vorraus! Danke bis dann |
||
Version: BlitzPlus / Blitz+ |
- Zuletzt bearbeitet von KnorxThieus am Mo, Mai 11, 2015 14:18, insgesamt 2-mal bearbeitet
ozzi789 |
Di, Feb 07, 2012 18:41 Antworten mit Zitat |
|
---|---|---|
Keine Ahnung wie das per Windows Api Call geht, aber man kann sich auch selber was basteln
Grüsse Code: [AUSKLAPPEN] Type progbarvalues
Field phandle Field value#=0.0 End Type window = CreateWindow("Fenster", 0, 20, 400, 300, 0, 3) PBar = create_progbar(0, 40, 100, 10, window) update=CreateButton("Update", 0, 0, 100, 30, window) get=CreateButton("Get", 0, 60, 100, 30, window) Repeat If GetKey() = 27 Then End event = WaitEvent() Select event Case $803 End Case $401 If EventSource()=update update_progbar( PBar, 0.05) EndIf If EventSource()=get Notify get_progbar_value(PBar) EndIf End Select Forever Function update_progbar(progbar,val#) For p.progbarvalues=Each progbarvalues If p\phandle=progbar p\value#=p\value#+val# UpdateProgBar(progbar,p\value#+val#) DebugLog p\value# EndIf Next End Function Function get_progbar_value#(progbar) For p.progbarvalues=Each progbarvalues If p\phandle=progbar Return (p\value#) EndIf Next End Function Function create_progbar(x,y,w,h,group,style=0) phandle=CreateProgBar(x,y,w,h,group,style) p.progbarvalues=New progbarvalues p\phandle=phandle Return phandle End Function |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
KnorxThieus |
Mi, Feb 08, 2012 17:30 Antworten mit Zitat |
|
---|---|---|
Schau's mir an!
Bis danach! ... Schon geschehen! Super Übrigens: Sind diese Types wirklich nötig? Ich würde es gern selbst beurteilen können, aber wirklich mehr als den Namen kenne ich nicht. Auf jeden Fall Danke!!! PS2: Das mit Api war bloß eine Alternativsidee, nicht nötig . |
||
Version: BlitzPlus / Blitz+ |
- Zuletzt bearbeitet von KnorxThieus am Mi, März 07, 2012 16:17, insgesamt 2-mal bearbeitet
ozzi789 |
Mi, Feb 08, 2012 18:58 Antworten mit Zitat |
|
---|---|---|
Die Types bevorzuge ich, klar man könnt einen zwei Dimensionalen Array (Dim) nehmen aber das ist für meinen Geschmack etwas unschön..
Wenn du Types noch nicht kennst, würd ich sie dir ans Herz legen, sind ne tolle Sache Grüsse |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
KnorxThieus |
Do, Feb 09, 2012 18:08 Antworten mit Zitat |
|
---|---|---|
Dann erzähl' mir doch mal was über Types!
Und: Kann ich die Types in die/eine Funktion verlegen? |
||
Version: BlitzPlus / Blitz+ |
- Zuletzt bearbeitet von KnorxThieus am Mi, März 07, 2012 16:17, insgesamt einmal bearbeitet
PhillipK |
Do, Feb 09, 2012 18:18 Antworten mit Zitat |
|
---|---|---|
Edit: Warnung, falschangabe! Meine unwissenheit *grml* - Siehte Xeres' beitrag!
In eine funktion verlegen? Eher andersrum - funktionen in ein Type verlegen! Ein Type ist ein "Objekt" wenn du so willst. Zb kannst du, wenn du ein rennspiel schreibst, ein type anlegen: *BB-codeblock rausgenommen - falsch! Dazu kannst du, unter die "Fields" auch Methoden und Funktionen schreiben. Wie genau das bei bb aussieht, kann ich dir allerdings nicht sagen. Wenn du nun 5 instanzen davon erzeugst, kann jede ihre eigene Beschleunigung, ihren eigenen treibstoff, ihre eigenen speedwerte haben, obwohl alle identisch sind (alles ist TAuto). |
||
- Zuletzt bearbeitet von PhillipK am Do, Feb 09, 2012 18:41, insgesamt einmal bearbeitet
KnorxThieus |
Do, Feb 09, 2012 18:22 Antworten mit Zitat |
|
---|---|---|
Ok. ' Werde ich mal versuchen. Mein Problem war meistens, wo kmmt denn jetzt "/" hin, wo "\", weshalb überhaupt?
Dann heißt's oft: KnorxThieus hat Folgendes geschrieben: Trzd. Danke! |
||
Version: BlitzPlus / Blitz+ |
- Zuletzt bearbeitet von KnorxThieus am Mi, März 07, 2012 16:17, insgesamt einmal bearbeitet
XeresModerator |
Do, Feb 09, 2012 18:27 Antworten mit Zitat |
|
---|---|---|
PhillipK hat Folgendes geschrieben: Wie genau das bei bb aussieht, kann ich dir allerdings nicht sagen. In dem Fall wäre es besser, wenn du deine Hilfsbereitschaft zügelst und keine Falschinformationen verbreitest. In BB gibt es weder Methoden, noch kann man Funktionen innerhalb des Types definieren und Fields wie in deinem Code zu definieren, wird nichts bringen - sie werden in jedem Fall mit 0 initialisiert.
|
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
ozzi789 |
Do, Feb 09, 2012 18:43 Antworten mit Zitat |
|
---|---|---|
Funktionen in Types gibts in BB leider nicht, Monkey hingegen hat das.. und Bmax(?)
Hoffe dieser Code hilft dir, falls du was nicht verstehst, fragen! Code: [AUSKLAPPEN] ;--------------------------
;Type Demo ;ozzi789 - 9.2.12 ;-------------------------- ;Grafik zeugs... Graphics 800,600,32,2 SetBuffer BackBuffer() ;Hier erstellen wir einen Type namens Gegner Type gegner Field x ;In dem Type legen wir eine Variable an namens X Field y ;Dito - Y End Type ;Ein For Loop (10x) For zaehler = 1 To 10 ;Einen neue neuen Gegner erstellen g.gegner = New gegner ;Die oben erstellten Variabeln mit zufalls Zahlen abfüllen g\x=Rnd(0,800) g\y=Rnd(0,600) Next ;Demonstration der zahlreichen tollen Befehlen ;Siehe auch : After & Before.. g.gegner = First gegner Print "Der erste erstellte Gegner befindet sich auf "+g\x+"/"+g\y g.gegner = Last gegner Print "Der zuletzt erstellte Gegner befindet sich auf "+g\x+"/"+g\y Print "Drücke eine Taste um weiterzufahren!" WaitKey While Not KeyHit(1) Cls ;Maus Koordinaten und Linksklick speichern mx=MouseX() my=MouseY() mh=MouseHit(1) ;Jeden gegner durchgehen in einem For Loop For g.gegner = Each gegner ;Gegner an den Koordinaten als Rect zeichnen Rect g\x,g\y,10,10,1 ;Falls die linke Maustaste gedrückt wurde und sie sich innerhalb des weisses Feldchen (Gegner) befindet If mh=1 And mx>g\x And mx<g\x+10 And my>g\y And my<g\y+10 ;Die Instanz des Gegners löschen Delete g.gegner EndIf Next Flip 30 Wend |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Lobby |
Do, Feb 09, 2012 19:33 Antworten mit Zitat |
|
---|---|---|
Falls Du den Fortschritt noch immer direkt vom Progbargadget auslesen können willst, könntest Du folgende Funktion verwenden:
BlitzBasic: [AUSKLAPPEN] Function GetProgValue#(progbar) Sie benötigt die selbe .decls-Datei wie das SendMessage von Pummelie, sollte also eigentlich kein Problem sein sie zu nutzen. Warum Du mit Google oder anderen Suchmaschinen nicht fündig wurdest, wundert mich jedoch. Zumindest mit englischen Suchbegriffen hättest Du früher oder später genau hier landen müssen, und damit ist der Rest nur noch ein Kinderspiel (das Wissen, wie man mit solchen Messages umgeht, sollte sich ebenfalls, sofern noch nicht vorhanden, erarbeiten lassen). Hier noch ein kleiner Testcode: BlitzBasic: [AUSKLAPPEN] win=CreateWindow("",200,200,400,300,0,1) Pummelies Code liest übrigens in keinster Weise den aktuellen Fortschritt einer ProgBar aus. Wie kommst Du darauf? |
||
ozzi789 |
Do, Feb 09, 2012 20:52 Antworten mit Zitat |
|
---|---|---|
@Lobby
Nice thx |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
KnorxThieus |
Sa, Feb 18, 2012 13:35 Antworten mit Zitat |
|
---|---|---|
@Lobby:
Aber der Wert wird übertragen. PS (7.3.12): Um die Grafik auszufüllen, liest Windows7 Daten der ProgBar aus. |
||
Version: BlitzPlus / Blitz+ |
Übersicht BlitzBasic BlitzPlus
Powered by phpBB © 2001 - 2006, phpBB Group