Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Aufflackern eines Fensters beim Start von Xbase-Programmen

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
BJelinek
UDF-Programmierer
UDF-Programmierer
Beiträge: 73
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen

Aufflackern eines Fensters beim Start von Xbase-Programmen

Beitrag von BJelinek » Di, 11. Jul 2017 14:54

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 ?
Gruß
Bernd

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13768
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Aufflackern eines Fensters beim Start von Xbase-Programmen

Beitrag von brandelh » Di, 11. Jul 2017 14:59

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: 6802
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Aufflackern eines Fensters beim Start von Xbase-Programmen

Beitrag von Tom » Di, 11. Jul 2017 15:00

Einfach das hier irgendwo in den Code:

Code: Alles auswählen

PROCEDURE AppSys() ; RETURN
Herzlich,
Tom

Antworten