Fontname eines ConsolenFensters/cmdbox ermitteln

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

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

Fontname eines ConsolenFensters/cmdbox ermitteln

Beitrag von BJelinek »

Hallo Zusammen,
kann man aus eine VIO Xbase++ Anwendung, Reiner Textmode die
verwendete Schriftart des Commandzeilenfensters ermitteln.
Also Consolas, Rasterschrift oder Lucida Console. :?:
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fontname eines ConsolenFensters/cmdbox ermitteln

Beitrag von AUGE_OHR »

ein "original" VIO Fenster benutzt "Alaska CRT".
nur wenn du eine eigene AppSys verwendet "könnte" es ein anderer Font sein.

zu beachten bei CRT Fentern :

Code: Alles auswählen

   oFontDlg := XbpFontDialog():New()
   oFontDlg:fixedOnly := .T.          // CRT Fenster
gruss by OHR
Jimmy
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

Re: Fontname eines ConsolenFensters/cmdbox ermitteln

Beitrag von BJelinek »

Hallo Jimmy,
danke für die Antwort,
aber bei mir wird kein Font gesetzt.
Bei mir kommt dieser Teil der appsys zum Tragen.

Code: Alles auswählen

    oCrt := RootCrt():New()
    oCrt:CreateBuffer := .T.
    oCrt:Create()

    // RootCrt gets active window and output device
    SetAppWindow ( oCrt )

Ich möchte nur die Schriftart des Consolenfensters ermitteln.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Fontname eines ConsolenFensters/cmdbox ermitteln

Beitrag von AUGE_OHR »

das RootCrt(), welches nirgendwo dokumentiert ist, hat praktische keine Methoden.

für eine Windows API Function wird immer ein Handle gebraucht.
mit Xbase++ erhält man das üblicherweise mit o:GetHwnd().

bei RootCrt() passiert nun das

Code: Alles auswählen

oError:args         :
          -> VALTYPE: O CLASS: RootCrt
oError:canDefault   : N
oError:canRetry     : N
oError:canSubstitute: J
oError:cargo        : NIL
oError:description  : Methode ist für dieses Objekt unbekannt
oError:filename     : 
oError:genCode      :         23
oError:operation    : Gethwnd
aber ohne ein Handle wird keine API Function gehen.

---

GetCurrentConsoleFontEx function
https://docs.microsoft.com/en-us/window ... solefontex

Code: Alles auswählen

BOOL WINAPI GetCurrentConsoleFontEx(
  _In_  HANDLE               hConsoleOutput,
  _In_  BOOL                 bMaximumWindow,
  _Out_ PCONSOLE_FONT_INFOEX lpConsoleCurrentFontEx
);
benötigt CONSOLE_FONT_INFOEX structure
https://docs.microsoft.com/en-us/window ... ont-infoex

Code: Alles auswählen

typedef struct _CONSOLE_FONT_INFOEX {
  ULONG cbSize;
  DWORD nFont;
  COORD dwFontSize;
  UINT  FontFamily;
  UINT  FontWeight;
  WCHAR FaceName[LF_FACESIZE];
} CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
und per Refenz Type COORD structure
https://docs.microsoft.com/en-us/window ... /coord-str

Code: Alles auswählen

typedef struct _COORD {
  SHORT X;
  SHORT Y;
} COORD, *PCOORD;
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fontname eines ConsolenFensters/cmdbox ermitteln

Beitrag von brandelh »

Eine Anwendung (GUI=NO) im Textmodus (RootCrt()) nimmt den Font, der für alle bzw. genau dieses CMD Fenster eingestellt ist.
Diesen kann man über das Kontextmenü jederzeit ändern, ohne dass sich das jeweilige Programm darum kümmern müsste.

Ob Jimmys API Funktionen deinen Wunsch erfüllen können weiß ich nicht, aber ich wollte klar stellen, dass Alaska CRT nur bei XbpCrt() Anwendungen (GUI=YES) automatisch verwendet wird.
Und nur mit diesen kann man im Programm den Font auch ändern, dazu gibt es in der Wissensbasis was von mir.
Gruß
Hubert
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

Re: Fontname eines ConsolenFensters/cmdbox ermitteln

Beitrag von BJelinek »

Hallo Hubert,
Ist mir klar.
Ich will ja nur in meinem Programm wissen, welche Schriftart in der Console eingestellt ist.
Dann kann ich unterschiedlich mit den ascii Zeichen < 32 umgehen. Wenn Rasterschrift, dann verwenden, wenn nicht
Alternativ Zeichen.

Hallo Jimmy
Danke, da muß ich mal schauen wie ich das in eine Function bekomme.Das Händle des Fensters hab ich.
In der Art. CSchrift := bfbgetschriftart(Händle) :book:
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
DelUser01

Re: Fontname eines ConsolenFensters/cmdbox ermitteln

Beitrag von DelUser01 »

Beitrag von mir gelöscht (war doch Hybrid)...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fontname eines ConsolenFensters/cmdbox ermitteln

Beitrag von brandelh »

aber nicht bei GUI=NO !

Code: Alles auswählen

------------------------------------------------------------------------------
FEHLERPROTOKOLL von "D:\TEST\NetErr\TEST.EXE" Datum: 19.12.2017 13:10:32

Xbase++ Version     : Xbase++ (R) Version 2.00.875
Betriebssystem      : Windows 7 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: O CLASS: RootCrt
oError:canDefault   : N
oError:canRetry     : N
oError:canSubstitute: J
oError:cargo        : NIL
oError:description  : Member-Variable ist für dieses Objekt unbekannt
oError:filename     : 
oError:genCode      :         26
oError:operation    : FontName
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       2240
oError:subSystem    : BASE
oError:thread       :          1
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von MAIN(13)
Gruß
Hubert
Antworten