Keypad: "Bitte geben Sie Ihre Geheimzahl ein"

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Axolotl
Beiträge: 265
Registriert: 31.12.2008 16:34

Re: Keypad: "Bitte geben Sie Ihre Geheimzahl ein"

Beitrag von Axolotl »

In der Hilfe zu WindowOutput() steht ja a.m.S. die Information.
Nur weil es unter windows evtl. auch anders läuft, .....
Hilfe

Code: Alles auswählen

  If OpenWindow(0, 0, 0, 220, 100, "Example...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    Repeat
      Event = WaitWindowEvent()
      
      If Event = #PB_Event_Repaint ; Redraw on the window every time the window is repainted
        StartDrawing(WindowOutput(0))
          Box(10, 10, 50, 50, RGB(255, 0, 0)) 
        StopDrawing()
      EndIf
    Until Event = #PB_Event_CloseWindow
  EndIf
 
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Benutzeravatar
RalfP
Beiträge: 51
Registriert: 17.03.2014 22:32
Computerausstattung: PC mit Intel i7 CPU, 16G Ram, Win11
Wohnort: 24321 Panker

Re: Keypad: "Bitte geben Sie Ihre Geheimzahl ein"

Beitrag von RalfP »

Wenn ich die Beiträge bisher richtig verstanden habe, wird nach StartDrawing(WindowOutput()) bei MacOS und Linux gar nichts gezeichnet.

In der Hilfe steht folgender Text:
Auf ein Fenster gezeichneter Inhalt wird gelöscht, wann immer das Fenster oder ein Teil davon von einem anderen Fenster verdeckt wird, außerhalb des Bildschirms verschoben wird, oder wenn das Fenster versteckt oder minimiert wird. Um daher den gezeichneten Inhalt sichtbar zu halten, muss dieser nach jedem #PB_Event_Repaint Ereignis erneut gezeichnet werden.

Den Text verstehe ich so:
Es wird in jedem Fall das gezeichnet was ich angebe, z.B. Box(), Line() usw.. Erst wenn ich das Fenster mit meiner Zeichnung über die Kante schiebe oder minimiere, muss ich alles neu zeichnen, weil die Zeichnung ausgelöscht wird. (und genau so ist es auch bei Windows)

Ich komme ja nun vermutlich aus der anderen Richtung. Für mich stellt sich das so dar, dass es bei MacOS und Linux anders läuft...
Woher soll ich wissen, dass alle MacOS- und Linux-Nutzer von Anfang an nichts zu sehen kriegen? Das geht für mich nicht aus der Hilfe hervor.
Und übrigens: Welcher Inhalt wird denn gelöscht, wenn keiner da ist?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Keypad: "Bitte geben Sie Ihre Geheimzahl ein"

Beitrag von NicTheQuick »

Ja, es kommt halt total auf die Fenstermanager an. Unter Linux gibt es da zig verschiedene. Und da kann es auch sein, dass so ein Repaint-Event am Anfang mehrmals kommt. Und generell ist es keine gute Idee Dinge auf eine Fenster zu zeichnen, wenn noch nicht alle Events abgearbeitet wurden, weil diese Events dann dazu führen können, dass wieder alles gelöscht wird.
Es ist eher Zufall, dass es unter Windows erst mal richtig aussieht. Das könnte man in der Hilfe sicherlich verbessern. Wichtig ist für dich nur zu wissen, dass `WindowOutput()` fast immer der falsche Weg ist.
Benutzeravatar
RalfP
Beiträge: 51
Registriert: 17.03.2014 22:32
Computerausstattung: PC mit Intel i7 CPU, 16G Ram, Win11
Wohnort: 24321 Panker

Re: Keypad: "Bitte geben Sie Ihre Geheimzahl ein"

Beitrag von RalfP »

Danke!
Antworten