WM_Setfont nicht verfügbar?????



  • 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