Beipiel (aus Vis.Stud. in 21 T.) geht nicht



  • Hallo,

    das Beispiel funktioniert nicht, wenn ich es genau so wie im Buch eingebe.

    Listing 8.3: Die Funktion FillFontList

    1: void CTextFontsDlg::FillFontList(void)
    
     2: {
     3:   LOGFONT lf;
     4: 
     5:   lf.lfCharSet = DEFAULT_CHARSET;
     6:   // Alle Schriftarten festlegen
     7:   lf.lfFaceName[0] = '\0';
     8:   // Muss DEFAULT_PITCH | FF_DONTCARE sein um alle anzuzeigen
     9:   // beide Werte sind aber als 0 definiert
    10:   lf.lfPitchAndFamily = 0;
    11:   // Listenfeld leeren
    12:   m_ctlFontList.ResetContent();
    13:   // Gerätekontextvariable erzeugen
    14:   CClientDC dc (this);
    15:   // Schriftfamilien aufzählen
    16:   ::EnumFontFamiliesEx((HDC) dc, &lf,
    17:         (FONTENUMPROC) MyEnumFontProc, (LPARAM) this, 0);
    
    18: }
    

    Zeile 16 und 17:

    bekomme dann die Fehlermeldung:
    error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'FONTENUMPROC'

    obwohl ich das genauso wie im Buch übernommen habe?



  • Schau Dir mal die Callback an, so is die in der MSDN definiert

    http://msdn.microsoft.com/en-us/library/ms534204(VS.85).aspx

    Vielleicht stimmt da was net.

    Gruß Matthias



  • ein gut gemeinter rat, wirf bitte dieses buch weg 🙂



  • @sothis_: wirf das Buch weg, wird achimos net weiter helfen, wenn Du ihm wenigstens eine Alternative aufgezeigt hättest, aber so is das doch etwas dünn, was du da ablässt

    Gruß Matthias



  • CTecS schrieb:

    @sothis_: wirf das Buch weg, wird achimos net weiter helfen, wenn Du ihm wenigstens eine Alternative aufgezeigt hättest, aber so is das doch etwas dünn, was du da ablässt

    Gruß Matthias

    ach, was du nicht sagst. du hast ihm doch schon einen hinweis gegeben. und wenn er sich da einliest, wird er bestimmt feststellen das der funktionszeiger MyEnumFontProc nicht den richtigen prototypen besitzt. 🙂


Anmelden zum Antworten