Schriftart ändern
-
hmm, dann definiere ich doch aber für alle Schriften das so, oder? Ich will aber 4 verschiedene "Fontarten", d.h. verschiedene variationen von Fonts Kursiv, Fett usw. und Farbe haben, die voreingestellt sind...
-
Nö machts nitt.
Wenn du den Zeiger von font an ein Control übergibst dann über nimmt NUR dieses Control die Schrift. Wenn du jetzt noch eine schrift einfügen willst dann kopiere den kram, nenne die Var anstatt font, fontpeter und setze ein paar andere Parameter und gebe das dann ans nächste Control.
*winke*
Hellsgore
-
-
kann mir niemand helfen?
// eidt:
ich kapiere das net, ich mache erst wenig c++
-
Servus,
Gucke mal nochmal eine ausführliche Erklärung von mir:
CFont fSchriftTyp1; VERIFY(font.CreateFont( 12, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_NORMAL, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily "Arial")); // lpszFacename CFont fSchriftTyp2; VERIFY(font.CreateFont( 12, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_NORMAL, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily "Arial")); // lpszFacename ///////////////////////////////////////////////////////////////////// //Jetzt öffnet sich dein Dialog und du willst verschiedene //Schriftarten für zwei verschiedene Controls haben, dann machst //du folgendes in der Func: BOOL CDeinDlg::OnInitDialog() { CDialog::OnInitDialog(); ///////////////////////////////////////////////////// m_MemberVonEinemEdit.SetFont(&fSchriftTyp1); // <--- Da passiert es m_MemberVonEinemStatic.SetFont(&fSchriftTyp2); // <--- Da passiert es nochmal ... .... return TRUE; }
Jetzt wird nur in dem Dialog für das EINE Edit Control und für das EINE Static Control, die zwei verschiedenen Schrift angenommen. Der Rest bleibt gleich da passiert nichts. Alle Controls, ausser den beiden, haben den Standard Schrifttyp.
Sollte aber jetzt verständlich sein
Wenn nitt --> Fragen!!!
*winke*
Hellsgore
-
Hi,
und was muss ich einfügen, um die Schrift fett zu machen?
Danke schon mal
Stephan
-
Um die Schriftart fett zumachen musst du
FW_NORMAL, // nWeight
durch
FW_BOLD, // nWeight
ersetzen
Mist auf die Sekunde zur gleich Zeit *gg*
-
*knüppel auspack* -> *schlag* -> *tret* -> *prügel*
Anstatt:
VERIFY(fSchriftTyp2.CreateFont( 12, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_REGULAR, ..
nimmst du FW_BOLD
VERIFY(fSchriftTyp2.CreateFont( 14, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_BOLD,
Ich glaube mal das stimmt so *g* aber gucke mal in die MSDN unter CFont und dann CreateFont.... wird dort erklärt...
*winke*
Hellsgore
-
*kleinlautgeprügeltfühl*
MS Visual C++ 6 schrieb:
--------------------Configuration: Test - Win32 Debug--------------------
Compiling resources...
Compiling...
TestDlg.cpp
G:\Stephan\Programme\Test\TestDlg.cpp(121) : error C2143: syntax error : missing ';' before 'do'
G:\Stephan\Programme\Test\TestDlg.cpp(121) : error C2143: syntax error : missing ';' before '{'
G:\Stephan\Programme\Test\TestDlg.cpp(121) : error C2447: missing function header (old-style formal list?)
G:\Stephan\Programme\Test\TestDlg.cpp(121) : error C2143: syntax error : missing ';' before 'while'
G:\Stephan\Programme\Test\TestDlg.cpp(138) : error C2143: syntax error : missing ';' before 'do'
G:\Stephan\Programme\Test\TestDlg.cpp(138) : error C2143: syntax error : missing ';' before '{'
G:\Stephan\Programme\Test\TestDlg.cpp(138) : error C2447: missing function header (old-style formal list?)
G:\Stephan\Programme\Test\TestDlg.cpp(138) : error C2143: syntax error : missing ';' before 'while'
G:\Stephan\Programme\Test\TestDlg.cpp(148) : error C2065: 'm_MemberVonEinemEdit' : undeclared identifier
G:\Stephan\Programme\Test\TestDlg.cpp(148) : error C2228: left of '.SetFont' must have class/struct/union type
G:\Stephan\Programme\Test\TestDlg.cpp(150) : error C2065: 'm_MemberVonEinemStatic' : undeclared identifier
G:\Stephan\Programme\Test\TestDlg.cpp(150) : error C2228: left of '.SetFont' must have class/struct/union type
Error executing cl.exe.
Build : warning : failed to (or don't know how to) build 'C:\Dokumente und Einstellungen\Administrator\Desktop\button\RolloverButton.cpp'Test.exe - 12 error(s), 1 warning(s)
wow.
Was hab ich falsch gemacht?
Danke schonmal
Stephan
-
Poste mal den Code, wo der Font erstellt wird...
du hast irgendwo ein Semikolon vergessen. Wahrscheinlich bei der letzten Klammer des CreateFont....
Hellsgore
-
///////////////////////////////////////////////////////////////////////////// // CtestDlg message handlers CFont fSchriftTyp1; VERIFY(font.CreateFont( 12, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_NORMAL, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily "Arial")); // lpszFacename CFont fSchriftTyp2; VERIFY(font.CreateFont( 14, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_BOLD, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily "Times New Roman")); // lpszFacename ///////////////////////////////////////////////////////////////////// // Schriftarten definieren BOOL CtestDlg::OnInitDialog() { CDialog::OnInitDialog(); SetWindowPos(&wndTopMost,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),0); m_MemberVonEinemEdit.SetFont(&fSchriftTyp1); // <--- Schriftart 1 m_MemberVonEinemStatic.SetFont(&fSchriftTyp2); // <--- Schriftart 2 // Add "About..." menu item to system menu.
Danke schon mal
Stephan
-
Servus,
BOOL CtestDlg::OnInitDialog() { CDialog::OnInitDialog(); SetWindowPos(&wndTopMost,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),0); CFont fSchriftTyp1; VERIFY(font.CreateFont( 12, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_NORMAL, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily "Arial")); // lpszFacename CFont fSchriftTyp2; VERIFY(font.CreateFont( 14, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_BOLD, // nWeight FALSE, // bItalic FALSE, // bUnderline 0, // cStrikeOut ANSI_CHARSET, // nCharSet OUT_DEFAULT_PRECIS, // nOutPrecision CLIP_DEFAULT_PRECIS, // nClipPrecision DEFAULT_QUALITY, // nQuality DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily "Times New Roman")); // lpszFacename m_MemberVonEinemEdit.SetFont(&fSchriftTyp1); // <--- Schriftart 1 m_MemberVonEinemStatic.SetFont(&fSchriftTyp2); // <--- Schriftart 2 // Add "About..." menu item to system menu. .... return TRUE;
Du machst ja hiermit font.CreateFont(...) einen Funktionsaufruf den solltest du dann auch in der Funktion machen. Sollte jetzt funzen.
*winke*
Hellsgore
-
--------------------Configuration: test - Win32 Debug-------------------- Build : warning : failed to (or don't know how to) build 'C:\Dokumente und Einstellungen\Administrator\Desktop\button\RolloverButton.cpp' Compiling... testDlg.cpp G:\Stephan\Programme\test\testDlg.cpp(127) : error C2065: 'font' : undeclared identifier G:\Stephan\Programme\test\testDlg.cpp(127) : error C2228: left of '.CreateFontA' must have class/struct/union type G:\Stephan\Programme\test\testDlg.cpp(144) : error C2228: left of '.CreateFontA' must have class/struct/union type G:\Stephan\Programme\test\testDlg.cpp(148) : error C2065: 'm_MemberVonEinemEdit' : undeclared identifier G:\Stephan\Programme\test\testDlg.cpp(148) : error C2228: left of '.SetFont' must have class/struct/union type G:\Stephan\Programme\test\testDlg.cpp(150) : error C2065: 'm_MemberVonEinemStatic' : undeclared identifier G:\Stephan\Programme\test\testDlg.cpp(150) : error C2228: left of '.SetFont' must have class/struct/union type Error executing cl.exe. test.exe - 7 error(s), 1 warning(s)
-
Servus,
Sei mir nicht böse aber ich würde dir erstmal ein schönes Tut für MFC C++ empfehlen damit du ein bisschen MFC C++ kennenlernst. Methoden, Funktionen, Vererbung etc.
Wenn du über den Code drüber guckst dann siehst du das CFont fSchriftTyp1; deklariert wurde. Daraus lässt sich dann schließen das es font.CreateFont(); es ja garnicht gibt sondern fSchriftTyp1.CreateFont() heißen müsste.
Das war von mir nur ein Bsp. und sollte nur als Anschauungsmaterial dienen. Wie rufst du denn Mehoden / Funktionen von einem Button auf?
Natürlich so:
CButton clButtonTest;
clButtonTest.IrgendNeFunc();*winke*
Hellsgore
-
oki sry, jetzt hab ich alles, nur noch ne frage:
--------------------Configuration: test - Win32 Debug--------------------
Build : warning : failed to (or don't know how to) build 'C:\Dokumente und Einstellungen\Administrator\Desktop\button\RolloverButton.cpp'
Compiling...
testDlg.cpp
G:\Stephan\Programme\test\testDlg.cpp(152) : error C2039: 'SetFont' : is not a member of 'CString'
c:\programme\microsoft visual studio\vc98\mfc\include\afx.h(368) : see declaration of 'CString'
G:\Stephan\Programme\test\testDlg.cpp(154) : error C2039: 'SetFont' : is not a member of 'CString'
c:\programme\microsoft visual studio\vc98\mfc\include\afx.h(368) : see declaration of 'CString'Warum das? Wie kann ich das wegmachen, SetFont müsste es doch sein, oder?
Danke schonmal
Stephan
-
SetFont ist ja schon richtig aber ist leider kein Member von CString.
MSDN -> CStringT (Bei VS 7)
MSDN -> CString (Bei VS 6)Du versuchst eine Funktion von einer Variable vom Typ CString aufzurufen. In der Klasse CString gibt es aber kein SetFont.
z.B. in der Klasse CButton, CStatic etc. gibt es SetFont();
Du darfst nicht der Variable in der du deinen Text drinstehen hast mit SetFont verändern, sondern das Control in das du es hinein schreibst. Ist auch ein bissle verwirrend *g*...
*winke*
Hellsgore
-
CStatic ist doch staticText oder? Das habe ich doch genommen...
Sorry, wenn ich nerve, ich lerne, ich lese Tuts, viele *bravsei*
-
Nein wenn du eine Membervariable von deinem Control CStatic gemacht und als Category = Value ausgewählt hast, dann wird dieser bestimmt von Typ CString sein.
Erstelle eine vom Typ CStatic:
1. Dialogansicht öffnen
2. Das Control auswählen den rechts über deine Propertie Fenster eine gescheite ID geben Bsp: ID_STATIC_WELCOMETXT
3. STRG gedrückt halten, doppelklick auf das Control
4. Rechts unter Category = Control auswählen (falls nicht geschehen)
5. Als Variable Typ = CStatic auswählen
6. Darunter einen schönen Variablennamen eingeben Bsp: m_StaticWelcomeTxt
7. In deine .cpp zurück
8. Nach deiner CFont Deklaration, m_StaticWelcomeTxt.SetFont(blabla) aufrufenDas sollte dann funzen *g*
*winke*
Hellsgore
-
--------------------Configuration: test - Win32 Debug--------------------
Compiling...
testDlg.cpp
G:\Stephan\Programme\test\testDlg.cpp(150) : error C2664: 'SetFont' : cannot convert parameter 1 from 'class CFont' to 'class CFont *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
G:\Stephan\Programme\test\testDlg.cpp(152) : error C2664: 'SetFont' : cannot convert parameter 1 from 'class CFont' to 'class CFont *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Generating Code...
Compiling...
test.cpp
Generating Code...
Error executing cl.exe.test.exe - 2 error(s), 0 warning(s)
Ich hab alles so gemacht, wie Du sagtest...
-
Ne haste nicht
CFont cfDeinFont;
cfDeinFont.CreateFont(blabla)m_StaticBla.SetFont(&cfDeinFont);
Du haste bei SetFont(); das "&" vor der Variable vergessen.
*winke*
Hellsgore