Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » CString darstellen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
15.11.2004, 13:55 Uhr
~Susanne
Gast


Hi
hab ein Problem . Ich will einen CString in einem Eingabefeld darstellen. Und zwar hab ich pro Reihe 5 Werte dann wechsele ich mit \r\n in die nächste Zeile. Da stehen dann wieder 5 Werte oder Worte. Das Problem ist das anscheinend Leerzeichen und verschiedene Buchstaben unterschiedlich viel Platz wegnehmen. Das heißt wenn ich mehr Leerzeichen in Zeile 1 als in Zeile 2 hab bekomme ich in Zeile 1 insgesamt mehr Zeichen rein als in Zeile 2. Somit hab ich große Probleme damit z.B. Wort 3 der 1.Zeile und Wort 3 der 2. Zeile exakt untereinander zu schreiben. Liegt das an der Schriftart oder woran und wie kann man das beheben?

Gruß
Susanne
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.11.2004, 14:46 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ja das hängt mit der Schriftart zusammen. Es gibt eine (oder vielleicht auch mehrere) bei der alle Zeichen gleich viel Platz benötigen.
Frag mich jetzt aber nicht welche das war
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.11.2004, 21:48 Uhr
ao

(Operator)


Das sind die sogenannten "monospace"-Schriftarten. In der Windows-Welt ist Courier am bekanntesten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.11.2004, 09:44 Uhr
~Susanne
Gast


Danke. Dann kann ich ja noch hoffen.....
Könnt ihr mir denn auch helfen wie ich das einstellen kann?

Hier mal mein Ansatz:


C++:
CFont font;


Dann hab ich in OnInitDialog() das geschrieben:


C++:
LOGFONT lF;
lF.lfHeight       = 0;
lF.lfWidth        = 0;
lF.lfWeight       = FW_NORMAL;
lF.lfItalic       = TRUE;
lF.lfUnderline    = FALSE;
lF.lfStrikeOut    = FALSE;
lF.lfEscapement   = 0;
lF.lfOrientation  = 0;
lF.lfFaceName       = wie definiere ich hier Courier?;   // "Courier" geht nicht

font.CreateFontIndirect(&lF);
CWnd* pStatic = GetDlgItem(IDC_STATIC1);
pStatic->SetFont(&font, FALSE);


Damit setzt er mit einen StaticText wie gewünscht um. Wenn ich versuche das auf ein Eingabefeld umzusetzen passiert nichts. Die Membervariable ist vom Typ CEdit. Wo liegt der Fehler?

Gruß
Susanne
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.11.2004, 09:51 Uhr
~Susanne
Gast


Und zurück das ganze. Da war es etwas voreilig. Hab das falsche Handle angefordert.
Klappt doch wie oben beschrieben.Bloß eine Sache noch:



C++:
lF.lfFaceName       = wie definiere ich hier Courier?;   // "Courier" geht nicht


das klappt noch nicht. In der MSDN hab ich da keinen Hinweis zu gefunden........

Grüße
Susanne
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.11.2004, 10:07 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Da hatte ich auch schon Probleme mit. Wenn überhaupt dann musst du es aber so machen:

C++:
strcpy(lF.lfFaceName,"Courier");

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.11.2004, 10:45 Uhr
Tommix



Hallo,
probier mal so:

C++:
CFont font;

font.CreateFont(-12, 0, 0, 0, FW_NORMAL, FALSE, FALSE,
        FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
        DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
    "Courier");



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.11.2004, 10:57 Uhr
~Susanne
Gast


@ Tommix
Supi. Das funzt. Dankeschöne
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.11.2004, 14:32 Uhr
~Susanne
Gast


Tja..... und da war ich ganz stolz das es klappt und dann das.
ein neues Problem hat sich zu mir gesellt.
Das mit dem Font ändern klappt ja mit:



C++:
font.CreateFont(-12, 0, 0, 0, FW_NORMAL, FALSE, FALSE,
FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
"Courier");

CWnd* pStatic = GetDlgItem(IDC_ENTRYDATA);
pStatic->SetFont(&font, FALSE);


Was im OnInitDialog() des Dialogfeldes steht. Wenn ich das jetzt aber wieder schließe und dann öffne schmiert mir das Programm an der Stelle ab.
Und an diesem Punkt tauchen wieder die 3 Fragezeichen auf meiner Stirn auf.............

Währd ihr nochmal so nett.......
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.11.2004, 15:01 Uhr
Tommix



Ich bin mir jetzt nicht ganz sicher, aber eventuell darf font während der Lebensdauer des Feldes nicht zerstört werden. D.h. es muß Member sein und nicht lokal.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: