Fehler-,meldung bei Visual c++ in 21Tagen



  • Hallo,
    ich bin dabei Visual C++ mit dem Buch "Visual c++ in 21 Tagen von David Chapmann zu lernen, jedoch glaube ich daß einige Fehler enthalten sind.
    Jetzt habe ich das problem, das ich bei Kapitel 8 eine Fehlermeldung erhalte:

    d:\pieczkowski\übungen\grafik_2\grafik_4\paintdlg.h(9) : error C2653: 'CPaintDlg' : Keine Klasse oder Namespace
    PaintDlg.cpp
    d:\pieczkowski\übungen\grafik_2\grafik_4\paintdlg.h(9) : error C2653: 'CPaintDlg' : Keine Klasse oder Namespace

    Kann mir jemand sagen, was ich falsch gemacht habe.

    Der Fehler tritt im Listing 8.4 auf:
    const COLORREF CPaintDlg::m_crColors[8] = {
    RGB( 0, 0, 0), // Schwarz
    RGB( 0, 0, 255), // Blau
    RGB( 0, 255, 0), // Grün
    RGB( 0, 255, 255), // Cyan
    RGB( 255, 0, 0), // Rot
    RGB( 255, 0, 255), // Magenta
    RGB( 255, 255, 0), // Gelb
    RGB( 255, 255, 255) // Weiß
    };



  • Hi,
    1. Ich habe auch das Buch 😃
    2. AFAIK wird die "Farbtabelle" in die *.cpp Datei geschrieben und nicht in die Header-Datei ("paintdlg.h(9)", also in dem Fall wohl die paintdlg.cpp).
    Dies geschiet auch in den anderen Listings (z.b. 10.17) 😉
    3. Mein erster Post 😃
    Hoffe das hilft...



  • Hallo,

    ist Dir vielleicht ein Fehler im Kapitel 10 aufgefallen?

    Ich erhalte folgende Fehlermeldung:

    D:\Pieczkowski\Übungen\Tag 10\Tag10_1\Line.cpp(20) : error C2512: 'CLine' : Kein geeigneter Standardkonstruktor verfuegbar
    Tag10Doc.cpp

    Danke!



  • hm...
    Ich habe den folgenden fehler gemacht, weiß aber nicht ob das die selbe fehlermeldung ausgibt: wenn ich die Parameter einer Funktion angepasst habe habe ich am anfang vergessen dass man die auch in der header-datei anpassen muss 🙄
    Das proggy funktioniert bei mir (wenn eins aus dem buch unerklärliche fehler ausgibt und der qt nicht weiterverwendet wird habe ich es meist sein lassen, so z.B. in Kapitel 😎 also daher glaube ich nicht dass es am buch liegt^^ (kann aber trotzdem sein :D)

    Falls es hilft: hier ist mein Quelltext der line.cpp

    // Line.cpp: Implementierung der Klasse CLine.
    //
    //////////////////////////////////////////////////////////////////////
    
    #include "stdafx.h"
    #include "stdafx.h"
    #include "Line.h"
    
    #ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif
    
    IMPLEMENT_SERIAL (CLine, CObject, 1)
    //////////////////////////////////////////////////////////////////////
    // Konstruktion/Destruktion
    //////////////////////////////////////////////////////////////////////
    
    CLine::CLine()
    {
    
    }
    
    CLine::~CLine()
    {
    
    }
    
    CLine::CLine(CPoint ptFrom, CPoint ptTo, COLORREF crColor, UINT nWidth)
    {
    	m_ptFrom = ptFrom;
    	m_ptTo = ptTo;
    	m_crColor = crColor;
    	m_nWidth = nWidth;
    }
    
    void CLine::Draw(CDC *pDC)
    {
    	CPen lpen (PS_SOLID, m_nWidth, m_crColor);
    
    	CPen* pOldPen = pDC->SelectObject(&lpen);
    
    	pDC->MoveTo(m_ptFrom);
    	pDC->LineTo(m_ptTo);
    
    	pDC->SelectObject(pOldPen);
    }
    
    void CLine::Serialize(CArchive &ar)
    {
    	if(ar.IsStoring())
    		ar << m_ptFrom << m_ptTo << (DWORD) m_crColor << m_nWidth;
    	else
    		ar >> m_ptFrom >> m_ptTo >> (DWORD) m_crColor >> m_nWidth;
    }
    

    Hoffe dass ich damit nicht gegen copyright o.ä. stoße aber dieser teil an sich bringt nicht sehr viel^^
    Hoffe das hilft...



  • Hallo,

    vielen Dank, es klappt doch!

    Übrigens bei Kapitel 8 gibt es seitens des Verlags eine Korrektur, falls Du ein altes Buch hast( meins ist von 1998), hier die Korrektur:

    vielen Dank für Ihre Mail. Bitte fügen Sie in Ihrem Buch auf
    S. 192 im 2. Absatz, 6. Zeile nach "...sich selbst neu zu
    zeichnen." folgenden Text ein:

    **"Fügen Sie dazu nacheinander für jedes Optionsfeld mit dem
    Klassen-Assistenten eine Funktion für das Ereignis BN_Clicked
    hinzu, wobei Sie aber jeweils den vorgegebenen Funktionsnamen
    durch OnRSelection ersetzen. Im Ergebnis entsteht lediglich
    eine einzige Behandlungsroutine, die mit allen Klickereignissen
    verbunden ist. In diese Behandlungsroutine nehmen Sie den Code
    aus Listing 8.3 auf."

    Den letzten Satz in dem Absatz "Mit dem Code..." streichen Sie.**

    Damit sollte das Beispiel dann fehlerfrei funktionieren.

    Mit freundlichen Grüßen

    i.A. Ralf K. Buschner
    Tech. Support
    Tel. (089) 4 60 03 371
    Fax (089) 4 60 03 370
    mailto:rbuschner@pearson.de

    Pearson Education Deutschland GmbH
    Verlage Markt+Technik / Addison-Wesley / Pearson-Studium / Longman
    Martin-Kollar-Straße 10-12
    D-81829 München


Anmelden zum Antworten