Löschung des hässlichen schwarzen DOS-Fensters
Moderator: Moderatoren
Löschung des hässlichen schwarzen DOS-Fensters
Hi!
Ich habe hinter meiner Programmstartmaske immer noch so ein altes hässliches, schwarzes (DOS)-Fenster auf dem oben lediglich der Name der .EXE steht.
Welchen Namen hat dieses Fenster und wie kann ich es löschen bzw. wegbekommen?
Gruß Werner
Ich habe hinter meiner Programmstartmaske immer noch so ein altes hässliches, schwarzes (DOS)-Fenster auf dem oben lediglich der Name der .EXE steht.
Welchen Namen hat dieses Fenster und wie kann ich es löschen bzw. wegbekommen?
Gruß Werner
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Löschung des hässlichen schwarzen DOS-Fensters
Werner,
bau in Dein Projekt eine FUNCTION AppSys ein. Da mß nichts drin stehen, nur die Funktion muß es geben.
Jan
bau in Dein Projekt eine FUNCTION AppSys ein. Da mß nichts drin stehen, nur die Funktion muß es geben.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Löschung des hässlichen schwarzen DOS-Fensters
in der kann man aber auch einige Voreinstellungen machen, siehe hierzu das Beispiel von SDIDEMO:
Code: Alles auswählen
/*
* Beispiel für AppSys() in SDI Anwendung
* Die Funktion wird vor der Main Prozedur ausgefhrt
*/
PROCEDURE AppSys
LOCAL oDlg, oXbp, aPos[2], aSize, nHeight:=400, nWidth := 615
// Größe vom DeskTop feststellen
// um Anwendungsfenster zu zentrieren
aSize := SetAppWindow():currentSize()
aPos[1] := Int( (aSize[1]-nWidth ) / 2 )
aPos[2] := Int( (aSize[2]-nHeight) / 2 )
// Anwendungsfenster erzeugen (application window)
oDlg := XbpDialog():new()
oDlg:title := "Toys & Fun Inc. [Xbase++ - SDI Demo]"
oDlg:border := XBPDLG_DLGBORDER
oDlg:taskList := .T.
oDlg:maxButton:= .F.
oDlg:create( ,, aPos, {nWidth, nHeight},, .F. )
// Font wählen
oDlg:drawingArea:SetFontCompoundName( "8.Helv" )
// Mensystem erzeugen (UDF)
MenuCreate( oDlg:menuBar() )
// Online-Hilfe mit UDF bereitstellen
oXbp := XbpHelpLabel():new():create()
oXbp:helpObject := ;
HelpObject( "SDIDEMOG.HLP", "Hilfe fr SDI demo" )
oDlg:helpLink := oXbp
// Anwendungsfenster anzeigen und Fokus geben
oDlg:show()
SetAppWindow( oDlg )
SetAppFocus ( oDlg )
RETURN
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Löschung des hässlichen schwarzen DOS-Fensters
Hallo Hubert,
das ist natürlich korrekt. Wobei es ja immer mal Diskussionen darum gibt, was in die AppSys rein kann/sollte, und was nicht.
Für den Zweck, den Werner ansprach, muß da gar nichts drin stehen. Alleine die Anwesenheit der AppSys reicht aus, das DOS-Fenster zu unterdrücken.
Jan
das ist natürlich korrekt. Wobei es ja immer mal Diskussionen darum gibt, was in die AppSys rein kann/sollte, und was nicht.
Für den Zweck, den Werner ansprach, muß da gar nichts drin stehen. Alleine die Anwesenheit der AppSys reicht aus, das DOS-Fenster zu unterdrücken.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Löschung des hässlichen schwarzen DOS-Fensters
schön dass du mir zustimmst
Ich wollte dir auch gar nicht widersprechen
Um es genau zu sagen, diese PRG zeigt das Standardverhalten:
...\XPPW32\source\SYS\APPSYS.PRG
so wird sichergestellt, dass man standardmäßig ein Clipper kompatibles Fenster hat.
Ich wollte dir auch gar nicht widersprechen
Um es genau zu sagen, diese PRG zeigt das Standardverhalten:
...\XPPW32\source\SYS\APPSYS.PRG
Code: Alles auswählen
//////////////////////////////////////////////////////////////////////
//
// APPSYS.PRG
//
// Copyright:
// Alaska Software, (c) 1997-2009. Alle Rechte vorbehalten.
//
// Inhalt:
// AppSys() - Standard Applikationsfenster erzeugen
//
// Bemerkungen:
// Diese Datei ist Teil der XppRt0.lib.
//
// Syntax:
// Die Funktion AppSys() wird automatisch beim Programstart
// aufgerufen.
//
//////////////////////////////////////////////////////////////////////
#include "xbp.ch"
****************************************************************************
* Funktion AppSys() um Standard-Ausgabegeraete zu erzeugen
****************************************************************************
PROCEDURE AppSys()
#define DEF_ROWS 25
#define DEF_COLS 80
#define DEF_FONTHEIGHT 16
#define DEF_FONTWIDTH 8
LOCAL oCrt, nAppType := AppType()
LOCAL aSizeDesktop, aPos
DO CASE
// Anwendung wurde im PM Modus gelinkt, eine XbpCrt Instanz
// ist zu erzeugen.
CASE nAppType == APPTYPE_PM
// Bestimmen der Fensterposition (Anordnen in der Mitte
// des Desktop-Fensters)
aSizeDesktop := AppDesktop():currentSize()
aPos := { (aSizeDesktop[1]-(DEF_COLS * DEF_FONTWIDTH)) /2, ;
(aSizeDesktop[2]-(DEF_ROWS * DEF_FONTHEIGHT)) /2 }
// XbpCRT-Fenster erzeugen
oCrt := XbpCrt():New ( NIL, NIL, aPos, DEF_ROWS, DEF_COLS )
oCrt:FontWidth := DEF_FONTWIDTH
oCrt:FontHeight := DEF_FONTHEIGHT
oCrt:title := AppName()
#ifdef __OS2__
oCrt:FontName := "System VIO"
#endif
#ifdef __WIN32__
oCrt:FontName := "Alaska Crt"
#endif
oCrt:Create()
// Presentation Space initialisieren
oCrt:PresSpace()
// XbpCrt wird aktives Fenster und Ausgabeger„t
SetAppWindow ( oCrt )
// Anwendung wurde im VIO oder NOVIO Modus gelinkt, eine RootCrt
// Instanz ist zu erzeugen.
CASE nAppType == APPTYPE_VIO .OR. nAppType == APPTYPE_NOVIO
// RootCrt Instanz erzeugen.
//
// Die IVar :CreateBuffer bestimmt wie sich das RootCrt verhaelt
// wenn es in einem Shell Fenster erzeugt wird.
//
// :CreateBuffer == .T. : Das RootCrt wird einen eigenen Bildschirm
// Puffer erzeugen der dann fuer die Darstellung
// verwendet wird. Dies hat zur Folge das
// Ausgaben mit OutStd() nicht mit anderen
// Text Ausgaben (z.B: Qout(), Dispbox() gemischt
// werden koennen.
// :CreateBuffer == .F. : Es wird kein eigener Bildschirm Puffer erzeugt
// und der des Shell Fensters verwendet. OutStd()
// Ausgaben werden nun gleichzeitig dargestellt.
oCrt := RootCrt():New()
oCrt:CreateBuffer := .T.
oCrt:Create()
// RootCrt wird aktives Fenster und Ausgabeger„t.
SetAppWindow ( oCrt )
ENDCASE
RETURN
// EOF
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14662
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Löschung des hässlichen schwarzen DOS-Fensters
Hubert,
warum sollte ich Dir widersprechen wollen? Du hattest ja vollkommen Recht. Mir ging es ausschließlich darum darauf hinzuweisen, daß das alles nicht notwendig ist um das zu erreichen, was Werner braucht.
Es gibt da einen interessantes Video von Frank++, in dem er aufzeigt, in welcher Reihenfolge bestimmte Funktionen beim Programmstart ausgeführt werden. All das, was Du aufgeführt hast, kann man auch z. B. in die Main() stecken. Aber die AppSys kommt halt schon vorher dran. Es macht also manchmal durchaus Sinn zu überlegen, wo genau man bestimmten Code unterbringt.
Jan
warum sollte ich Dir widersprechen wollen? Du hattest ja vollkommen Recht. Mir ging es ausschließlich darum darauf hinzuweisen, daß das alles nicht notwendig ist um das zu erreichen, was Werner braucht.
Es gibt da einen interessantes Video von Frank++, in dem er aufzeigt, in welcher Reihenfolge bestimmte Funktionen beim Programmstart ausgeführt werden. All das, was Du aufgeführt hast, kann man auch z. B. in die Main() stecken. Aber die AppSys kommt halt schon vorher dran. Es macht also manchmal durchaus Sinn zu überlegen, wo genau man bestimmten Code unterbringt.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Löschung des hässlichen schwarzen DOS-Fensters
Es ist immer gut zu wissen wie was aufgerufen wird
Als meine EXE mit der neuen Xbase++ Version kurz zu sehen und dann sofort wieder weg war, konnte ich mit einer msgbox() in einer Exit Prozedur erkennen, dass es KEIN Programmabsturz sondern ein reguläres Ende war.
Eine der Abfragen war plötzlich .f. die vorher immer .t. war ... warum auch immer (kann mich nicht mehr erinnern).
Als meine EXE mit der neuen Xbase++ Version kurz zu sehen und dann sofort wieder weg war, konnte ich mit einer msgbox() in einer Exit Prozedur erkennen, dass es KEIN Programmabsturz sondern ein reguläres Ende war.
Eine der Abfragen war plötzlich .f. die vorher immer .t. war ... warum auch immer (kann mich nicht mehr erinnern).
Gruß
Hubert
Hubert
Re: Löschung des hässlichen schwarzen DOS-Fensters
Hallo: Hier meldet sich der Fragesteller Werner!
Ich habe, wie empfohlen, die PROCEDURE AppSys() Return in den Quellcode eingebaut ... und das hat bei drei von meinen 5 Projekten auch zauberhaft funktioniert!
Bei zwei weiteren Projekten, die ganz ähnlich aufgebaut sind, wie die drei ersten, führt die Aufnahme der PROCEDURE AppSys() jedoch dazu, dass
die .:EXE nicht mehr hochfährt. Kann das vielleicht an der Stelle innerhalb des Quellcodes liegen, an der die PROC AppSys eingebaut wurde?
Gruß Werner
Ich habe, wie empfohlen, die PROCEDURE AppSys() Return in den Quellcode eingebaut ... und das hat bei drei von meinen 5 Projekten auch zauberhaft funktioniert!
Bei zwei weiteren Projekten, die ganz ähnlich aufgebaut sind, wie die drei ersten, führt die Aufnahme der PROCEDURE AppSys() jedoch dazu, dass
die .:EXE nicht mehr hochfährt. Kann das vielleicht an der Stelle innerhalb des Quellcodes liegen, an der die PROC AppSys eingebaut wurde?
Gruß Werner
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Löschung des hässlichen schwarzen DOS-Fensters
Eine Funktion muss zwingend außerhalb anderer definiert werden, aber wo spielt keine Rolle,
solange die PRG compiliert und gelinkt wird.
Die im lokalen PRG definierte Funktion ersetzt dann die aus der DLL.
solange die PRG compiliert und gelinkt wird.
Die im lokalen PRG definierte Funktion ersetzt dann die aus der DLL.
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Re: Löschung des hässlichen schwarzen DOS-Fensters
Sind das möglicherweise CRT-Anwendungen? Oder hatten sie schon sinnvolle AppSys-Prozeduren, die jetzt überlagert wurden? Obwohl, dann gäb's ja Compilerfehler. XPPFATAL?
Herzlich,
Tom
Tom