Schriftart ändern



  • 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