Seite 1 von 6
Fenster Darstellung
Verfasst: 30.05.2008 15:54
von Lorne
Hallo,
ich versuche gerade das Programmieren über PureBasic zu lernen. Ich verwende die Version 3.3
Gerade versuche ich, ein Programm zu schreiben das mir auf eine bestimmte Tasten eingabe einen Text in dem Fenster ausgibt.
Aber nicht wie der MessageRequester, sondern das Fenster soll immer offen sein und auf den jeweiligen Tastendruck, die jeweilige Ausgabe machen. Als den Text dann anpassen.
Ich schaffe es ein Fenster zu öffnen, einen Text anzuzeigen, jedoch kann dieser nicht durch einen Tastendruck verändert werden.
Kann mir da jemand weiterhelfen?
Gruß Lorne
Verfasst: 30.05.2008 16:16
von Kaeru Gaman
Willkommen im Board.
es ist die frage, worauf du hinauswillst....
Tastatureingabe ist allgemein ein Anfang, keine Frage.
aber wenn du z.B. in Richtung Spielesteuerung gehen willst,
bist du mit dieser Form der Fensteroberfläche auf dem falschen weg,
weil du für das Spiel selber später (wahrscheinlich) einen Screen benutzen wirst,
und dafür eine bequemere Tastatureingabe zur Verfügung steht als für Fenster.
wenn du eine Dateneingabe in eine Fensteroberfläche realisieren willst,
wirst du in den meisten fällen einen Datencontainer benutzen,
der deine Tastatureingabe händelt, da brauchst du auch keine reine Tastaturabfrage.
Beispiel:
Code: Alles auswählen
OpenWindow(0, 0, 0, 200, 100, "StringGadget")
CreateGadgetList(WindowID(0))
StringGadget(0,20,20,160,20,"Hier Eingeben")
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow
Natürlich geht das auch, eine nackte Tastaturabfrage in einem Fenster,
allerdings musst du dafür auf die API (die schnittstelle von Windows) zurückgreifen,
und das wird ein wenig komplizierter, außerdem weiß ich nicht mehr,
ob die V3.3 überhaupt API unterstützt....
Verfasst: 30.05.2008 16:35
von Lorne
Danke erst einmal für die nette Begrüßung.
Also ich habe mir ein Programm geschrieben, das mir über eine Fullscreen Ausgabe, den jeweiligen Code bzw die Nummer der Taste gibt damit ich weiß welche Nummer ich für die jeweilige Aktion in dem Spiel das ich versuche zu programmieren eingeben muss.
Das ganze möchte ich als kleines Tool habe, das ich nur aufmache, ein Fenster erscheint, und wenn ich dann die Taste drücke wird mir die Nummer im Fenster angezeigt und ich muss nicht immer über den Fullscreen gehen.
Das ist das was ich vorhabe.
Ich habe es zwar geschaft einen Text über TextGadget in das Fenster ein zugeben, aber wenn ich ein Bild über ImageGadget einfügen will geht das auch nicht.
Leider ist das Handbuch hierbei auch nicht wirklich hilfreich.
Verfasst: 30.05.2008 16:43
von Kaeru Gaman
also wie gesagt, wenn du ein spiel programmieren willst, dann benutze besser grundsätzlich einen screen.
muss auch kein Fullscreen sein, es gibt auch nen WindowedScreen,
schau dir mal dieses Beispiel an:
http://www.purebasic.fr/german/viewtopic.php?t=11280
musst du ggf. etwas bearbeiten, weil es nicht für 3.30 ist.
über Images könntest du zwar auch ein Spiel programmieren,
aber da wirst du sehr langsam werden
und außerdem keine transpazenz zur Verfügung haben.
die Nummern für die Tasten brauchst du eigentlich garnicht,
weil PB eingebaute konstanten dafür hat, z.b. #PB_Key_Escape
btw: klick mal oben im Forum auf dein Postfach, da steht "Du hast 1 neue Nachricht"
Verfasst: 30.05.2008 18:27
von Lorne
Also danke erst mal für die Hilfe, aber unter dem 3.3 bekomme ich das nicht zum laufen.
Ja ich weiß das dass eine alte Version ist, aber dafür war sie günstig und müste für dein Einstig reichen oder?
Kann mir jemand vielleicht das kurz mit dem WindowedSrceen erklären? Wie ich den aufrufe.
Verfasst: 01.06.2008 07:18
von Kaeru Gaman
ich hatte vor 4-5 jahren auch mit der 3.30 angefangen,
aber im endeffekt war das an der falschen stelle gespart.
> Wie ich den aufrufe.
der Befehl heiße OpenWindowedScreen, schau mal in die Help, sollte ein Beispiel drin sein.
> unter dem 3.3 bekomme ich das nicht zum laufen.
musst halt mal schaun, was für fehlermeldungen du bekommst.
z.b. das OpenWindow hat ne andere reihenfolge der argumente gehabt,
und farbbefehle erwarten getrennte R, G und B werte.
sollte aber mit ein bissel geschraube zum laufen zu kriegen sein.
ich hab jetz aber keinen bock, mir die 3.30 wieder zu installieren,
um dir den code umzuschreiben, sorry.
allein bei dem gedanken an die IDE ohne Autocomplete tun mir die Füße weh.....
Verfasst: 01.06.2008 11:12
von Lorne
Na ich will das ja auch selber schaffen.
Vielleicht hole ich mir auch die neuste Version von PureBasic.
Also ich habe das hier gefunden:
OpenWindowedScreen(WindowID, x, y, Breite, Höhe, AutoStretch, RightOffset, BottomOffset)
Ergebnis = OpenWindowedScreen(WindowID, x, y, Breite, Höhe, Auto-Stretch, RightOffset, BottomOffset)
Öffnet einen neuen Bildschirm entsprechend den angegebenen Parametern
auf dem angegebenen Fenster 'WindowID'. Ist 'AutoStretch' gleich
1, dann wird die Größe des Bildschirmbereichs automatisch angepasst,
wenn sich die Fenstergröße ändert. 'RightOffset' und 'BottomOffset'
werden benutzt, um einen rechten und einen unteren Rand des Fensters
zu definieren (für eine StatusBar zum Beispiel). Der geöffnete Bildschirm
wird mit 2 Videobuffern erstellt, um das speziell für Spiele entwickelte
DoubleBuffering zu ermöglichen. Die Buffer können mittels
dem FlipBuffers() Befehl manipuliert werden. Wenn das Öffnen des
Bildschirms fehlschlägt, ist ‚Ergebnis’ gleich 0.
So wenn ich das dann statt dem
OpenScreen Befehl eingebe, dann öffnet sich nur der Debugger. Der hilft mir aber nicht wirklich, da er nur die Zeile schwarz hinterlegt.
Leider ist im Handbuch und in der Hilfe kein Beispiel dazu. Habe ich da was vergessen?
Verfasst: 01.06.2008 11:58
von Riacon
welche werte hast du denn eingegeben?
Verfasst: 01.06.2008 12:32
von Lorne
Verfasst: 01.06.2008 19:39
von Riacon
ich hab zwar kein pb 3.dingens, aber 0 ist keine
WindowID:
könnte besser klappen, falls das hauptfenster die
PBnr. 0 hat