Schriftgröße von Edit Control ändern
-
Hi Leute hab folgendes Problem und zwar klappt das einfach nicht mit der Schriftgröße ändern. In der Edit Box steht nur 1 Zeichen daher auch das
m_ctlNummer1.SetSel(0, 1);Hier mein Code:
void CProgDlg::OnEnChangeEdit1() { m_ctlNummer1.SetSel(0, 1); }void CProgDlg::OnEnKillfocusEdit1() { CFont m_Font; LOGFONT lF; lF.lfCharSet = DEFAULT_CHARSET; lF.lfHeight = 30; // Zeichenhöhe lF.lfWidth = 0; // Zeichenbreite lF.lfWeight = FW_BOLD; // Normal / Fett lF.lfItalic = FALSE; // Normal / Kursiv lF.lfUnderline = FALSE; // Normal / Unterstrichen lF.lfStrikeOut = FALSE; // Normal / Durchgestrichen lF.lfEscapement = 0; // Schreibrichtung i 1/10 Grad lF.lfOrientation = 0; // Orientierung einzelner Zeiche lF.lfCharSet = ANSI_CHARSET; m_Font.CreateFontIndirect(&lF); m_ctlNummer1.SetFont(&m_Font, FALSE); m_ctlNummer1.UpdateWindow(); }Hat jemand eine Idee ?
Cursos und alles wird gross angezeigt aber der Text wird immer klein geschrieben. Ich arbeite mit VC++ 2008.Gruss
-
Die Killfocus Funktion wird ausgeführt. ( Ich kill den Focus von Hand )
-
nur mal so als Idee, ob das sinn macht weiss ich net aber kann es sein das du den standart Font hast weil dein erzeugter Font wieder zerstört wurde, der wird doch lokal in OnEnKillfocusEdit1() erstellt, sollte man vielleicht mal in die klasse als Member verschieben
-
Er wird aber als Fett dargestellt. Er übernimmt lediglich die Größe nicht. Also das High
-
Jo, weil lfHeight ja auch in DeviceUnit angegeben werden. Also entweder du Probierst mit ner negativen Zahl dir die Passende Größe zu suchen oder du Berechnest du.
hier mal mit nen geliehenen Beispiel aus nem anderen Thread im Forum:
CWindowDC wdc(NULL); int nLPixY = GetDeviceCaps(wdc.m_hDC, LOGPIXELSY); m_nFontSize = 36; m_nPointSize = -MulDiv(m_nFontSize,72,nLPixY);Müsste eigentlich so gehen, aber versucht hab ich das jetzt net
-
Geht trotzdem nicht. Weder mit Berechnen noch mit Negativzahl
-
CFont m_Font;
muss in der Dialog Klasse liegen. Du legst ihn auf dem Stack an und das Ding wird sofort wieder zerstört.MSDN lesen lohnt sich:
http://msdn.microsoft.com/en-us/library/ms632642(VS.85).aspxThe best time for the owner of a dialog box control to set the font of the control is when it receives the WM_INITDIALOG message. The application should call the DeleteObject function to delete the font when it is no longer needed; for example, after it destroys the control.
-
m_Font ist eine lokale Variable, mach daraus mal eine Membervariable Deines Dialoges.
/e: Grrrr, Martiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiinnnnnnnnnnnnnnnnnnnn!

-
Danke jetzt klappts. Aber wie kann es sein dass es erstens mit ++VC6.0 so geht ( zu 100 % habs grad versucht ) und warum er mir die Schrift fett dargestellt hat aber nur die Größe nicht ? Dann müsste ja das fette auch gleich weg gewesen sein oder ?
Gruss
-
pmb schrieb:
Danke jetzt klappts. Aber wie kann es sein dass es erstens mit ++VC6.0 so geht ( zu 100 % habs grad versucht ) und warum er mir die Schrift fett dargestellt hat aber nur die Größe nicht ? Dann müsste ja das fette auch gleich weg gewesen sein oder ?
Gruss
Das hat definitiv in VC++6 auch schon nicht funktioniert, bin nämlich vor Jahren auch mal auf dieses Problem gestossen. Vielleicht wird in Deinem Fall die lokale Variable nicht überschrieben und es sieht so aus, als ob es funktionieren würde.
-
Also bei mir gehts. Habs grad vor mir und bei meinem Kollege auch. kP warum das da klappt und beim anderen net. Habs kopiert Hmm..