我复制了dlg box类的现有标头(使用dlg类向导/ mfc向导创建)。在我将cpp文件添加到项目之前,一切似乎都没问题。现在我得到一些mfc魔术方法的奇怪链接错误:
错误LNK2001:未解析的外部 符号“public:virtual struct CRuntimeClass * __thiscall DlgGapWindow :: GetRuntimeClass(无效)常量 “ (?GetRuntimeClass @ DlgGapWindow @@ UBEPAUCRuntimeClass @@ XZ)
错误LNK2001:未解析的外部 符号“protected:virtual struct AFX_MSGMAP const * __thiscall DlgGapWindow :: GetMessageMap(无效)常量 “ (?GetMessageMap @ @@ DlgGapWindow @@ MBEPBUAFX_MSGMAP XZ)
为什么会这样?
以下是标题
中的相关代码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()
};
我似乎没有看到任何类似于我建模的东西。我没有发现谷歌或其他搜索有用的东西,以表明为什么这些神奇的mfc缺失。我的其他类没有明确定义它们,也没有错误。
RC文件确实有相应的dlg定义。
编辑:
感谢DECLARE_DYNAMIC帮助 - 现在我没有GetRuntimClass()错误 - 只是GetMessagemap()错误。
答案 0 :(得分:15)
您使用了DECLARE_DYNAMIC但忘记了IMPLEMENT_DYNAMIC。
答案 1 :(得分:0)
糟糕
我忘记了BEGIN_MESSAGE_MAP。
感谢您的帮助