Wie programmiert ihr eigentlich eure Fensterapplikationen?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Gar nicht. Konsole rockt ^_^.
Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Bei modalen Dialogen würde ich sie dann über eine Prozedur während der Laufzeit erstellen. Bei nichtmodalen Unterfenstern der Anwendung eben nicht während der Laufzeit, sondern am Start versteckt öffnen(NICHT HideWindow benutzen sondern das #PB_Window_Invisible Flag! Dann sieht man es bei langsamen Computern auch erst garnicht beim Start).
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Vallan
Beiträge: 223
Registriert: 20.01.2006 19:34
Kontaktdaten:

Beitrag von Vallan »

ICh erstelle immer erst ein fenster fertig, die gadgets mit Hand un kofrechnenpositionieren, Die konstanten Werden bei mir fensterübergreifend durchnummerirt,

ich habe 1 hauptschleife mit select für alle fenster,

Wenn ich mehrere fenster habe mache ich die entweder mit #PB_Any und einer LL() oder mit konstantendie vorher definirt wurden.

Die Fenster erstelle ich immer erst dann wenn sie gebraucht werden ( ICh weiß zu beginn des Proggens meist garnicht wiefiele fesnter ich brauche, und da schreibe ich sie halt rein wenn sie sichtbar werden sollen,)

Früher hab ich NIE Prozeduren verwendet, heute mache ich das manchmal, aber für Fenster eigentlich nicht.
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von Programie »

Ich mach es so (Ohne Komentare):

Code: Alles auswählen

Enumeration
 #Window
 #Menu; Wenn ein Menu verwendet wird
 #ToolBar; Wenn eine ToolBar verwendet wird
 ; Menukonstanten
 ; Gadgetkontanten
 #StatusBar; Wenn eine Statusleiste verwendet wird
EndEnumeration

Structure Config; Einstellungen speichere ich in einer Structure (Wenn nötig)
 MainPath.s; Programmverzeichnis
 PrefsFile.s; Einstellungsdatei (z.B. Settings.ini)
 Parameter.s; Wenn ich einen Parameter für das Programm benötige
 ; Sonstige Einstellungsvaluen
EndStructure

Global Config.Config; Die Einstellungsstructure mach ich IMMER Global

; Proceduren

Config\MainPath=GetPathPart(ProgramFilename()); Programmverzeichnis
Config\PrefsFile=Config\MainPath+"Settings.ini"; Einstellungsdatei
; Sonstige "Festwerte"

; Hier die Einstellungen mit OpenPreferences(Config\PrefsFile) oder ReadFile() in die Config-Structure laden (1. Möglichkeit)

If OpenWindow(#Window,100,100,500,300,"Fenstertitel",#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_ScreenCentered); Ist irgendwie eine Angewohnheit mit der Größe 100x100x500x300 :-)
 If CreateMenu(#Menu,WindowID(#Window))
  ; Menu-Items
 EndIf
 If CreateToolBar(#ToolBar,WindowID(#Window))
  ; ToolBar Einträge
 EndIf
 If CreateGadgetList(WindowID(#Window))
  ; Gadgets
 EndIf
 If CreateStatusBar(#StatusBar,WindowID(#Window))
  ; StatusBar "Flächen"
 EndIf
  ; Einstellungen Laden (2. Möglichkeit)
  ; Sonstige Funktionen (z.B. SmartWindowRefresh() oder StickyWindow())
  Repeat
   Select WaitWindowEvent()
    Case #PB_Event_Menu
     Select EventMenu()
      ; MenuItems
     EndSelect
    Case #PB_Event_Gadget
     Select EventGadget()
      ; Gadgets
     EndSelect
    Case #PB_Event_SizeWindow
     Select EventWindow()
      Case #Window
       ; Gadgets, ... im #Window resizen
      ; Sonstige Fenster
     EndSelect
    Case #PB_Event_CloseWindow
     ; Mehrere Fenster:
;      Select EventWindow()
;       Case #Window
;        Quit=#True
;       ; Sonstige Fenster
;      EndSelect
     ; Wenn nur ein Fenster da ist:
     Quit=#True
   EndSelect
  Until Quit=#True
 ; Einstellungen mit CreatePreferences(Config\PrefsFile) oder CreateFile() speichern (auslesen aus Config-Structure)
EndIf
BildBildBildBild
Antworten