Seite 1 von 1

Aufflackern eines Fensters beim Start von Xbase-Programmen

Verfasst: Di, 11. Jul 2017 14:54
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 ?

Re: Aufflackern eines Fensters beim Start von Xbase-Programmen

Verfasst: Di, 11. Jul 2017 14:59
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

Re: Aufflackern eines Fensters beim Start von Xbase-Programmen

Verfasst: Di, 11. Jul 2017 15:00
von Tom
Einfach das hier irgendwo in den Code:

Code: Alles auswählen

PROCEDURE AppSys() ; RETURN