WM_Setfont nicht verfügbar?????



  • hallo zusammen,
    möchte gerne meine Schriftgröße in einem EditControl ändern,
    im mdsn steht das ich wm_Setfont einfügen muss..
    ich habe aber diese Eigenschaft nicht bei mir (Visual Studio 2005 Pro)

    wie kann ich sonst ein Cfont erstellen damit ich es dann an die
    EditControl weitergeben kann????

    😕



  • Schau mal hier:
    http://msdn.microsoft.com/en-us/library/94hsa63e(v=VS.80).aspx

    Zuweisen hiermit:

    pEdit->SetFont(&m_NewFont);
    

  • Mod

    WM_SETFONT ist keine Eigenschaft, sondern eine Nachricht. Ansnsten hat CWnd die Methode SetFont!



  • morgen,
    also ehrlich gesagt verstehe ich die Seite von mdsn nicht....
    wo muss das denn rein in die Oninitdialog????

    würde mich freuen wenn mir einer einbisschen genauer helfen könnte?
    danke....



  • Am besten du machst es so:
    In deiner Klasse machst du eine Member-Variable vom Typ
    CFont:

    class CMyClass : public CDialog
    {
    // blabla
       CFont m_MyFont;
    };
    

    Um den Default-Font eines Controls ein wenig zu ändern (z.B. auf Fett zu stellen),
    kannst du das machen:
    (pEdit ist ein Zeiger auf dein Edit-Control)

    BOOL CMyClass::OnInitDialog()
    {
       // blabla   
       CFont *pFont = pEdit->GetFont();
       LOGFONT LogFont;
       pFont->GetLogFont(&LogFont);
    
       // Bold setzen
       LogFont.lfWeight = FW_BOLD;
       m_MyFont.CreateFontIndirect(&LogFont);
    
       // Neuen Font zuweisen
       pEdit->SetFont(&m_MyFont, TRUE);
    
       return TRUE;
    }
    


  • hallo source,
    ich habe es gemacht wie von dir beschrieben...
    leider kommt aber die Meldung das sich SetFont in einer
    Klasse/Struktur/Union befinden muss!!!!

    membervariable erstellt und den unteren geposteten code dann
    in die OninitDialog...

    ????? hilfeeeee



  • Zeigt pEdit auf dein EditControl?

    CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT1); // Oder wie auch immer
    

    IDC_EDIT1 durch die ID deines Edit-Controls ersetzen.



  • ja er zeigt auf mein EditControl...
    habe ich gerade auch nochmal kontrolliert... 😕

    zur kontrolle :

    Den letzten geposteteten Code habe ich im EditControl ist das ok???

    wodrann kann es denn noch liegen...????



  • Den letzten geposteteten Code habe ich im EditControl ist das ok???

    Wie meinst du das? Poste mal ein paar relevante Codeausschnitte.



  • class SYSTEM10Dlg : public CDialog
    {
    
       CFont m_MyFont;
    
    };
    
    und der OnInitDialog
    
    BOOL SYSTEM10Dlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    	// Hinzufügen des Menübefehls "Info..." zum Systemmenü.
    
    	// IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden.
    	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    	ASSERT(IDM_ABOUTBOX < 0xF000);
    
    	CMenu* pSysMenu = GetSystemMenu(FALSE);
    	if (pSysMenu != NULL)
    	{
    		CString strAboutMenu;
    		strAboutMenu.LoadString(IDS_ABOUTBOX);
    		if (!strAboutMenu.IsEmpty())
    		{
    			pSysMenu->AppendMenu(MF_SEPARATOR);
    			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    		}
    
    	}
    
    {
       // blabla  
       CFont *pFont = betrag->GetFont();
       LOGFONT LogFont;
       pFont->GetLogFont(&LogFont);
    
       // Bold setzen
       LogFont.lfWeight = FW_BOLD;
       m_MyFont.CreateFontIndirect(&LogFont);
    
       // Neuen Font zuweisen
       betrag->SetFont(&m_MyFont, TRUE);
    
       return TRUE;
    }
    

    bei diesem Code kommt dann der Fehler.... 😕



  • Wenn du den Code korrekt gepostet hast, dann stimmt da was mit deinen Klammern nicht. Abgesehen davon: von welchem Typ ist "betrag"?



  • morgen,
    ja das mit den klammern ist nicht schlimm dadrunter ist noch mehr kramm der aber für mein problem nicht relevant ist....
    betrag hat die variable value vom typ double...???????



  • betrag hat die variable value vom typ double...???????

    Du benötigst eine Variable vom Typ CEdit*. So wie ich es auch geschrieben habe:

    CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
    

    Du kannst deinem Edit-Control auch per Assistent eine Membervariable vom Typ Control zuweisen. Dann kannst dir die Zeile oben sparen.



  • habs hinbekommen vielen dank für deine hilfe.... 😉


Anmelden zum Antworten