vom DOS-Fenerst ins Windows Fenster + Logging

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

das "PrintN" durch einen Proc-Aufruf ersetzen.
diese Proc kann vorerst einfach ein PrintN enthalten,
und kann später durch eine "zum Editorgadget hinzufügen und runterscrollen" funktion ersetzt werden.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
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 »

Sieh Dir in der Hilfe mal das RunProgram-Beispiel an.
Erstellste ein Fenster mit EditorGadget, sowie Start- und Stop-Button
Bei start, startest die console, sichtbar oder auch nicht, bei stop machste sie
zu :mrgreen:
Mit ReadProgramString() liest Du die Ausgaben der Console (egal ob
sichtbar oder nicht) und schreibste ins EditorGadget.

Gruß
Thomas
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
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

Beitrag von MrVain »

Danke,

das sieht schonmal so aus.

Bild





So sieht mein Code aus:

[/img]

Code: Alles auswählen

WinMain_ID = OpenWindow(#PB_Any, #Null_X, #Null_Y, #WindowWidth, #WindowHeight, #Program_Title, #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)

If WinMain_ID
   If CreateMenu(0, WindowID(WinMain_ID))

    MenuTitle("Datei")
      MenuItem( 1, "&Schnittstelle starten")
      MenuItem( 2, "Schnittstelle beenden")
      MenuBar()
      MenuItem( 9, "&Beenden")

    MenuTitle("Optionen")
      MenuItem( 3, "INI-Datei bearbeiten")
      MenuBar()
      MenuItem(7, "Log-Datei öffnen")
      
    MenuTitle("?")
      MenuItem(11, "About")

  EndIf
  
  
  Repeat

    Select WaitWindowEvent()

      Case #PB_Event_Menu

        Select EventMenu()  ; To see which menu has been selected

          Case 11 ; About
            MessageRequester("Version", "Version 0.1", 0)
            
          Case 9  ; Beenden
            Quit = 1
            
          Case 1 ; Schnittstelle starten
                If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0)) 
               EditorGadget(0, 8, 8, 306, 133) 
               AddGadgetItem(0, a, "Hallo Welt!") 
               EndIf
          
          Case 3 ; Ini Datei öffnen
            RunProgram(#Ini_Datei)
            
          Case 7 ; Log Datei öffnen
            RunProgram(#Log_Datei)
          Default
            MessageRequester("Info", "MenuItem: "+Str(EventMenu()), 0)

        EndSelect

      Case #PB_Event_CloseWindow
        Quit = 1

    EndSelect

  Until Quit = 1
  
  

EndIf

End


1. Wie kann ich das Fenster in das fenster im Hintergrund einbetten?
2. Beim "eingebetteten" Fenster soll das X (Schließen) entfernt werden - es soll nur im Menü (über starten und beenden) geöffnet bzw geschlossen werden..


Vielen Dank schonmal für eure Hilfe...
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

also, ich würde da nicht noch ein fenster öffnen, wenn du keins haben willst...
wieso machst du das EditorGadget nicht von Anfang an auf?
und im Hauptfenster ganz normal?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

Beitrag von MrVain »

Kaeru Gaman hat geschrieben:also, ich würde da nicht noch ein fenster öffnen, wenn du keins haben willst...
wieso machst du das EditorGadget nicht von Anfang an auf?
und im Hauptfenster ganz normal?
Wie meinst du das???

Soll ich dies hier:

Code: Alles auswählen

WinMain_ID = OpenWindow(#PB_Any, #Null_X, #Null_Y, #WindowWidth, #WindowHeight, #Program_Title, #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered) 
... umschreiben zu einem EditorGadget??
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ermn... nein...

mompls...

PS/OT: o fac... definier doch die konstanten wenn du schon code postest... dz
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

K, das mein'ich:

Code: Alles auswählen

WinMain_ID = OpenWindow(#PB_Any, 0,#PB_Ignore, 600, 400, "BlaTest")

If WinMain_ID
   If CreateMenu(0, WindowID(WinMain_ID))

    MenuTitle("Datei")
      MenuItem( 1, "&Schnittstelle starten")
      MenuItem( 2, "Schnittstelle beenden")
      MenuBar()
      MenuItem( 9, "&Beenden")

    MenuTitle("Optionen")
      MenuItem( 3, "INI-Datei bearbeiten")
      MenuBar()
      MenuItem(7, "Log-Datei öffnen")
     
    MenuTitle("?")
      MenuItem(11, "About")

;*********************************************
;** Gadget ins Hauptfenster
    EditorGadget(0, 24, 24, 306, 133)
;*********************************************
  EndIf
 
 
  Repeat

    Select WaitWindowEvent()

      Case #PB_Event_Menu

        Select EventMenu()  ; To see which menu has been selected

          Case 11 ; About
            MessageRequester("Version", "Version 0.1", 0)
           
          Case 9  ; Beenden
            Quit = 1
           
          Case 1 ; Schnittstelle starten
            ;*********************************************
            ;** Hier nur Ausgabe
               AddGadgetItem(0, a, "Hallo Welt!")
            ;*********************************************
         
          Case 3 ; Ini Datei öffnen
            Debug "RunProgram(#Ini_Datei)"
           
          Case 7 ; Log Datei öffnen
            Debug "RunProgram(#Log_Datei)"
          Default
            MessageRequester("Info", "MenuItem: "+Str(EventMenu()), 0)

        EndSelect

      Case #PB_Event_CloseWindow
        Quit = 1

    EndSelect

  Until Quit = 1

EndIf

End
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Und noch nen Tipp! Du möchtest nicht alles in nen Procedure-Aufruf ersetzen? Und jederzeit schnell switchen können zwischen Console und Fenster? Ersetze einfach temporär die PB-Funktionen durch deine eigenen mit Makros...

Code: Alles auswählen

#Windowed = #True

CompilerIf #Windowed = #True
  Macro OpenConsole
    OpenConsoleNew
  EndMacro
  
  Macro PrintN
    PrintNNew
  EndMacro
  
  Macro Input
    InputNew
  EndMacro
  
  Macro CloseConsole
    CloseConsoleNew
  EndMacro
  
  Procedure OpenConsoleNew()
    Debug "Hier kannst du ein Konsolenfenster öffnen oder initalisieren. (Editor-Gadget erstellen oder was weiss ich..."
  EndProcedure
  
  Procedure PrintNNew(String$)
    Debug "Hier den Code zur Ausgabe ins Edit-Gadget eintippen"
  EndProcedure
  
  Procedure inputnew()
    Debug "Hier den Code für die Input-Funktion"
  EndProcedure
  
  Procedure CloseConsoleNew()
    Debug "Hier den Code fürs schliessen der Konsole"
  EndProcedure
CompilerEndIf

OpenConsole() ; Ruft OpenConsoleNew() auf
PrintN("Hallo") ; Ruft PrintNNew("Hallo") auf
Input()
; ...
Sollte alles erklären...

Gruss
PMTheQuick ;-)
MrVain
Beiträge: 24
Registriert: 08.03.2009 14:34

Beitrag von MrVain »

@Kaeru Gaman:

Wenn ich das so mache, wie du, dann kommt folgender Fehler:

"ERROR There is no current Gadget List"

@PMTheQuick

Sorry, aber für mich ist das etwas verwirrend... (bin noch Anfänger...)
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 »

> "ERROR There is no current Gadget List"
Woher sollen wir Wissen, das ein neuer eine alte Version nutzt und wieso
macht er das?

PureBasic Updaten, wir schreiben die Phase 4.30, und dann noch mal testen.
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
Antworten