Fenster Darstellung

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Lorne
Beiträge: 31
Registriert: 30.05.2008 15:45
Wohnort: Hohenlohe
Kontaktdaten:

Beitrag von Lorne »

Code zum testen:

Code: Alles auswählen

InitSprite()
InitKeyboard()
InitMouse()

OpenWindow(0,0,0,300,300,#PB_Window_SystemMenu,"Tasten Scanner")
If OpenWindow(0,0,0,300,300,#PB_Window_SystemMenu,"Tasten Scanner") =0
 MessageRequester("Error","Funktion 1 n.i.O.",#PB_MessageRequester_Ok)
EndIf

OpenWindowedScreen(WindowID(0),0,0,300,300,0,0,0)
If OpenWindowedScreen(WindowID(0),0,0,300,300,0,0,0) =0
 MessageRequester("Error","Funktion 2 n.i.O.",#PB_MessageRequester_Ok)
EndIf

 
LoadJPEGSprite(0,"I:\PB\Progs\TCS Window\GFX\NSA.jpg",0)

Global Taste.w
 Taste = 0

Repeat
ExamineKeyboard()
ExamineMouse()

ClearScreen(0,0,0)
EventID.l = WaitWindowEvent()

DisplayTransparentSprite(0,0,0)

StartDrawing(ScreenOutput())
 DrawingMode(1)
 Locate(5,5)
 FrontColor(0,255,0)
 DrawText("Tastencode: "+Str(Taste))
 Locate(137,283)
 FrontColor(0,255,0)
 DrawText("Copyright by N.S.A. 2008")
 StopDrawing()
FlipBuffers()
 

If KeyboardPushed(200)
 Taste=200
EndIf

If EventID = #PB_Event_CloseWindow Or KeyboardPushed(1)
Ende = 1
EndIf

FlipBuffers()

Until Ende = 1
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

also so funzt alles so wie es soll:

Code: Alles auswählen

InitSprite() 
InitKeyboard() 
InitMouse() 

If OpenWindow(0,0,0,300,300,#PB_Window_SystemMenu,"Tasten Scanner") =0 
MessageRequester("Error","Funktion 1 n.i.O.",#PB_MessageRequester_Ok) 
EndIf 

If OpenWindowedScreen(WindowID(0),0,0,300,300,0,0,0) =0 
MessageRequester("Error","Funktion 2 n.i.O.",#PB_MessageRequester_Ok) 
EndIf 


LoadJPEGSprite(0,"NSA.jpg",0) 

Global Taste.w 
Taste = 0 

Repeat 
ExamineKeyboard() 
ExamineMouse() 

ClearScreen(0,0,0) 
EventID.l = WindowEvent() 

DisplayTransparentSprite(0,0,0) 

StartDrawing(ScreenOutput()) 
DrawingMode(1) 
Locate(5,5) 
FrontColor(0,255,0) 
DrawText("Tastencode: "+Str(Taste)) 
Locate(137,283) 
FrontColor(0,255,0) 
DrawText("Copyright by N.S.A. 2008") 
StopDrawing() 
FlipBuffers() 


If KeyboardPushed(200) 
Taste=200 
EndIf 

If EventID = #PB_Event_CloseWindow Or KeyboardPushed(1) 
Ende = 1 
EndIf 

FlipBuffers() 

Until Ende = 1
es sollte kein WaitWindowEvent() drinne steht, sondern nur WindowEvent() , sonst hängt er sich da auf und wartet und wartet

Du siehst keine Maus, weil du auch keine darstellst, wenn du ExamineMouse() benutzt ´musst du auch selber eine Maus im Screen Anzeigen lassen.
Sonst lasse die mausBefhele ganz weg .
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
BlueHoschi
Beiträge: 97
Registriert: 02.10.2007 07:19

Beitrag von BlueHoschi »

@Stargate
Wenn ich anmerken darf: Es ist meist besser statt WindowEvent(), WaitWindowEvent(mit Timeout) zu nehmen
das verbraucht nicht ganz soviel Rechenzeit, selbst wenn man nur 10 ms nimmt!!
Wer Dir Steine in den Weg legt, pflastert den vielleicht.

PB 5.21, Win 7 64 bit
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ja, aber das gibs erst seit 4.1, in 3.3 ist davon noch nix....
SG leistet hier Hilfestellung für nen 3.3 code.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

jo dann halt nich n Delay(2) irgendwo hingeklatscht und dann hat sich das ^^
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Lorne
Beiträge: 31
Registriert: 30.05.2008 15:45
Wohnort: Hohenlohe
Kontaktdaten:

Beitrag von Lorne »

Danke, nur wenn ich das Programm jetzt so nehme, es dann über F5 starte, habe ich immer noch das Problem:
Error at line 28 : The specified output is NULL (0 Value).
Also wieder die StartDrawing(ScreenOutput()) Zeile.
Wenn ich das Fenster anklicke, verschwindet meine Maus, die Funktion über Taste 200 geht nicht und die Esc-Funktion geht auch nicht.
Der Debugger hängt sich auf und ich muss ihn über den TaskManager schließen.
Das verstehe ich nicht.

Also ich habe das ganze jetzt mal durch getestet und bin auf die Erkenntnis gekommen das der Fehler in der Fensterdarstellung liegt.
Sobald ich

Code: Alles auswählen

If OpenWindow(0,0,0,300,300,#PB_Window_SystemMenu,"Tasten Scanner") =0 
MessageRequester("Error","Funktion 1 n.i.O.",#PB_MessageRequester_Ok) 
EndIf 

If OpenWindowedScreen(WindowID(0),0,0,300,300,0,0,0) =0 
MessageRequester("Error","Funktion 2 n.i.O.",#PB_MessageRequester_Ok) 
EndIf
auskomentiere und dies durch

Code: Alles auswählen

OpenScreen(640,480,16,"Test")
ersetze funktioniert das Programm. Aber eben im Vollbild und nicht im Fenster Modus.
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Bekommst du denn die Meldung "Funktion 2 n.i.O." immernoch ?
Weil dann ist es ja wohl logisch.

Eine simple Überprüfung, ob der Screen geöffnet werden konnte, ohne entsprechende Gegenmassnahmen einzuleiten (Stichwort: END) ist ziemlich sinnlos...

Ändere doch mal die Maße deines Windows & Screens in Klassiker wie 640x480 oder 800x600.
Benutzeravatar
Lorne
Beiträge: 31
Registriert: 30.05.2008 15:45
Wohnort: Hohenlohe
Kontaktdaten:

Beitrag von Lorne »

Nein die Meldung bekomme ich nicht. Das Fenster geht normal auf, aber sobal ich es anklicke geht nichts mehr.
Ich habe es auch schon mit Standartgrößen versucht, jedoch ist dort das Gleiche.
Wie gesagt, im Fullscreen läuft das wie es soll. Nur in der Fensterversion macht das sowas.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

mach maln bäckup von deinen codes, und installier das PB mal neu....

könnte die CD beschädigt gewesen sein, dass eine Lib nicht korrekt installiert wurde?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Lorne
Beiträge: 31
Registriert: 30.05.2008 15:45
Wohnort: Hohenlohe
Kontaktdaten:

Beitrag von Lorne »

Das ist auf allen drei Rechner so.
Also mit denen ich arbeite.
Antworten