2011-03-01 11 views
7

Copié un encabezado existente para una clase de cuadro dlg (creado con el asistente de clase dlg/asistente de mfc). Todo parecía ir bien hasta que agregué el archivo cpp al proyecto. Ahora me sale errores de enlace impares para algunos métodos mágicos MFC:Errores de enlace de clase dlg MFC para MyClass :: GetMessageMap() y MyClass :: GetRuntimeClass (MSVC 2008)

error LNK2001: sin resolver símbolo externo? "Público: struct virtuales CRuntimeClass * __thiscall DlgGapWindow :: GetRuntimeClass (void) const " (GetRuntimeClass @ DlgGapWindow @@ @@ UBEPAUCRuntimeClass XZ)

LNK2001

de error: no resuelto externa símbolo "protegida: struct virtuales AFX_MSGMAP const * __thiscall DlgGapWindow :: GetMessageMap (void) const " (? GetMessageMap @ DlgGapWindow @@ @@ MBEPBUAFX_MSGMAP XZ)

Por qué sería esto?

Este es el código correspondiente en la cabecera

class DlgGapWindow : public CDialog 
{ 
    DECLARE_DYNAMIC(DlgGapWindow) 

public: 

    DlgGapWindow(CWnd* pParent = NULL); 

    virtual ~DlgGapWindow(); 
    virtual BOOL PreTranslateMessage(MSG* pMsg); 


protected: 
    virtual BOOL OnInitDialog(); 
    enum { IDD = IDD_DIALOG_GAP_VIEW };// Dialog Data 

    GapViewer m_chart; 

protected: 
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 

    afx_msg void OnSize(UINT nType, int cx, int cy); 
    afx_msg void OnSizing(UINT fwSide, LPRECT pRect) ; 
    afx_msg void OnTimer(ONTIMER_TYPE nIDEvent); 
    afx_msg void OnDestroy(); 
    afx_msg void OnClose(); 
    afx_msg void OnActivate(UINT,CWnd *,BOOL); 
    afx_msg void OnRButtonDown(UINT nFlags, CPoint point); 
    afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); 

    DECLARE_MESSAGE_MAP() 

}; 

no veo nada de la clase modelé después de eso parece que falta. No he encontrado nada útil con google u otras búsquedas para indicar por qué faltan estas cosas mágicas de mfc. Mis otras clases no las definen explícitamente y no tienen errores.

El archivo RC tiene una definición correspondiente de dlg.

EDIT:

Gracias por la ayuda DECLARE_DYNAMIC - ahora no tengo la GetRuntimClass() Error - sólo el error GetMessagemap().

+1

¿Realmente necesita 'DECLARE_DYNAMIC' macro? En caso afirmativo, ¿tiene una implementación equivalente de 'IMPLEMENT_DYNAMIC' en el archivo cpp' DlgGapWindow'? Consulte aquí para obtener información sobre 'DECLARE_DYNAMIC': http://msdn.microsoft.com/en-us/library/ywz9k63y%28VS.80%29.aspx – yasouser

Respuesta

14

Usó DECLARE_DYNAMIC pero olvidó IMPLEMENT_DYNAMIC.

+0

Genial, gracias. Esto resuelve el GetRuntimeClass() pero todavía tengo el error de enlace GetMessageMap(). – Tim

+2

Lo mismo, no BEGIN/END_MESSAGE_MAP. –

0

Vaya

me olvidó BEGIN_MESSAGE_MAP.

Gracias por la ayuda

Cuestiones relacionadas