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) aufrufen

    Das 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


Anmelden zum Antworten