Aufflackern eines Fensters beim Start von Xbase-Programmen

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Aufflackern eines Fensters beim Start von Xbase-Programmen

Beitrag von BJelinek »

Hallo Zusammen,

wenn ich ein GUI Xbase-Programme starte flackert immer ein Fenster im Hintergrund auf,
bevor das Programmfenster öffnet.

Auch wenn ich die Xbase-Workbensch starte.

Sieht aus wie ein Consolen-Fenster.

Warum ist das so ?
Ist bei meinem Rechner was falsch installiert ?
Muss man sich daran gewöhnen ?
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Aufflackern eines Fensters beim Start von Xbase-Programmen

Beitrag von brandelh »

Das ist die Standardeinstellung, und z.B. bei Debuggen gar nicht übel.
Aber man kann das Ändern ;-)

APPSYS.PRG (wird automatisch geladen) zeigt, dass ein Consolenfenster erstellt wird und danach zusätzlich eventuelle XbpDialog() von dir.

Hier ist meine APPSYS Prozedur bei reinen GUI Anwendungen (der Prozedurname kann auch einfach in einer anderen Datei liegen).
Es wird ein Standard MDI Hauptfenster angelegt, mit Standardwerten aus INI gefüttert und zentriert.

Code: Alles auswählen

*--------------------------------------------------------------------------------
PROCEDURE AppSys
   LOCAL oDlg, oXbp, aPos[2], aSize, aDesktopSize

   // GrӇe vom DeskTop feststellen
   // und Anwendungsfenster dimensionieren

   aDesktopSize := AppDesktop():currentSize()
   aSize    := {0,0}
   aPos[1]  := 0.1 * aDesktopSize[1]
   aPos[2]  := 0.1 * aDesktopSize[2]
   aSize[1] := 0.8 * aDesktopSize[1]
   aSize[2] := 0.8 * aDesktopSize[2]

   // Anwendungsfenster erzeugen (application window)
   oDlg       := MyHBRootDialog():new( ,, aPos, aSize,, .F. )

   #ifdef DEBUG
      oDlg:title               := HB_PROG_NAME + "     * DEBUG *"
   #else
      oDlg:title               := HB_PROG_NAME
   #endif

   oDlg:ProgName            := HB_PROG_NAME
   oDlg:ProgVersion         := HB_PROG_VERSION
   oDlg:ProgVersionMitDatum := HB_PROG_VERSION_MIT_DATUM
   oDlg:ProgFreiDatum       := HB_PROG_FREI_DATE
   oDlg:aProgOwner          := HB_PROG_OWNER
   oDlg:aProgUser           := HB_PROG_USER
   oDlg:aLizenzText         := HB_PROG_LIZENZ_TEXT
   oDlg:UserInfo            := "?"    // das ist jetzt noch nicht bekannt.

   oDlg:NotHideMenuItems    := .t.     // Immer Bearbeiten und Fenster anzeigen
   oDlg:RunInReadOnlyMode   := HB_PROG_RunInReadOnlyMode // (-> keine Schreibzugriffe im Programmverzeichnis !)

   // Anwendungsfenster systemweit abrufbar machen
   RootWindow( oDlg )

   // Hintergrundbilder ?   in ANW_ALLG.CH und ANW_ALLG.ARC definieren
   // oDlg:DlgAboutBitmap := 0 -> Standard kein Hintergrundbild !
   // diese beiden Variablen steuern die Darstellung von HB_ABOUT.PRG

   oDlg:DlgAboutBitmap      := ID_BITMAP_HG1
   oDlg:DlgAboutOption      := XBP_IMAGE_NORMAL   // im kleinen Fenster besser keine Anpassung

   // Fensterhintergrund vom Hauptfenster
*   oDlg:drawingArea:bitmap  := ID_BITMAP_HG1
*   oDlg:drawingArea:options := XBP_IMAGE_SCALED  // hier ist dies meist schön

   oDlg:icon  := ICON_APPLICATION
   oDlg:close := {|| AppQuit() }
   oDLg:taskList := .T.
   oDlg:create()

   if empty(oDlg:DlgAboutBitmap)  // keine Bitmap
      // Windowsstandard verwenden
      oDlg:DlgAboutBG          := XBPSYSCLR_DIALOGBACKGROUND
      // oder etwas mehr Pep
      oDlg:DlgAboutBG          := GraMakeRGBColor({197,215,243})   // ein helles Blau
   else
      // mit Bitmap auf Transparent schalten !!!
      oDlg:DlgAboutBG          := XBPSYSCLR_TRANSPARENT
   endif

   if empty(oDlg:drawingArea:bitmap)
      oDlg:drawingArea:SetColorBG( XBPSYSCLR_DIALOGBACKGROUND )
   else
      oDlg:drawingArea:SetColorBG( XBPSYSCLR_TRANSPARENT )
   endif

   SetAppWindow( oDlg )

   // Hauptmen systemweit abrufbar machen (UDF)
   AppMenu( oDlg:menuBar() )

   // Mensystem erzeugen (UDF)
   MenuCreate( AppMenu(), oDlg )

   *###################  Wie wird es mit der Hilfe ????

/*
   // Online-Hilfe mit UDF bereitstellen
   oXbp := XbpHelpLabel():new():create()
   oXbp:helpObject := ;
        HelpObject( "MDIDEMOG.HLP", "Hilfe fr MDI Grundgerst" )
   oDlg:helpLink := oXbp
*/

   // Anwendungsfenster anzeigen und Fokus geben
   oDlg:show()
   SetAppFocus( oDlg )

RETURN
*------------------------------------------------------------------------------------------------------------
CLASS MyHBRootDialog FROM HBRootDialog // Platz für eigene Erweiterungen
ENDCLASS
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Aufflackern eines Fensters beim Start von Xbase-Programmen

Beitrag von Tom »

Einfach das hier irgendwo in den Code:

Code: Alles auswählen

PROCEDURE AppSys() ; RETURN
Herzlich,
Tom
Antworten