#include  <afxwin.h>  
 
//应用程序类  
class  CMyApp  :public  CWinApp  
{  
       virtual  BOOL  InitInstance();  
       DECLARE_MESSAGE_MAP()  
};  
 
//MDI主框架类  
class  CMyFrame  :public  CMDIFrameWnd  
{  
protected:  
       DECLARE_DYNAMIC(CMyFrame)  
public:  
       afx_msg  int  OnCreate(LPCREATESTRUCT  lpCreateStruct);  
       DECLARE_MESSAGE_MAP()  
};  
 
//MDI子框架类  
class  CChildFrame  :public  CMDIChildWnd  
{  
       DECLARE_DYNAMIC(CChildFrame)  
       DECLARE_MESSAGE_MAP()  
};  
 
//文档类  
class  CMyDoc  :public  CDocument  
{  
       DECLARE_DYNCREATE(CMyDoc)  
       virtual  void  Serialize(CArchive&  ar);  
       DECLARE_MESSAGE_MAP()  
};  
 
//视图类  
class  CMyView  :public  CView  
{  
protected:  
       DECLARE_DYNCREATE(CMyView)  
//        CMyDoc*  GetDocument();  
public:  
       virtual  void  OnDraw(CDC*  pDC);  
       DECLARE_MESSAGE_MAP()  
};  
CMyApp  theApp;  
 
BOOL  CMyApp::InitInstance()  
{  
       CMultiDocTemplate*  pDocTemplate;  
       pDocTemplate=new  CMultiDocTemplate(  
               NULL,RUNTIME_CLASS(CMyDoc),  
               RUNTIME_CLASS(CChildFrame),  
               RUNTIME_CLASS(CMyView));  
       AddDocTemplate(pDocTemplate);  
       CMyFrame*  pframe=new  CMyFrame;  
       pframe->LoadFrame(NULL);  
       m_pMainWnd=pframe;  
       pframe->ShowWindow(m_nCmdShow);  
       pframe->UpdateWindow();  
       return  TRUE;  
}  
IMPLEMENT_DYNAMIC(CMyFrame,CMDIFrameWnd)  
BEGIN_MESSAGE_MAP(CMyFrame,CMDIFrameWnd)  
END_MESSAGE_MAP()  
 
IMPLEMENT_DYNAMIC(CChildFrame,CMDIChildWnd)  
BEGIN_MESSAGE_MAP(CChildFrame,CMDIChildWnd)  
END_MESSAGE_MAP()  
 
IMPLEMENT_DYNCREATE(CMyDoc,CDocument)  
BEGIN_MESSAGE_MAP(CMyDoc,CDocument)  
END_MESSAGE_MAP()  
 
void  CMyDoc::Serialize(CArchive&  ar)  
{  
       //  
}  
 
IMPLEMENT_DYNCREATE(CMyView,CView)  
 
BEGIN_MESSAGE_MAP(CMyView,CView)  
END_MESSAGE_MAP()  
 
void  CMyView::OnDraw(CDC  *pDC)  
{  
       //  
}  
 
 
 
我用的是VC++6.0编译通过,但连接出错,错误输出:  
Linking...  
main.obj  :  error  LNK2001:  unresolved  external  symbol  "protected:  virtual  struct  AFX_MSGMAP  const  *  __thiscall  CMyApp::GetMessageMap(void)const  "  (?GetMessageMap@CMyApp@@MBEPBUAFX_MSGMAP@@XZ)  
Debug/MFC_temp03.exe  :  fatal  error  LNK1120:  1  unresolved  externals  
Error  executing  link.exe.  
 
MFC_temp03.exe  -  2  error(s),  0  warning(s)  
------------------------------------------------------------------------  
请问哪里出错了,(我已经设置连接库动态连接和多线程)  
我想可能是工程项目的设置没有设好。  

解决方案 »

  1.   

    从你的link错误信息来看应该是.h文件里域范围有问题,CMyApp::GetMessageMap(void)是DECLARE_MESSAGE_MAP()宏代表的函数,你应该是在app.h中改变了向导默认生成的public控制
      

  2.   

    应该是没有定义"GetMessageMap()"
    DECLARE_MESSAGE_MAP()宏声明了该函数,而相应的 BEGIN_MESSAGE_MAP()...
    END_MESSAGE_MAP()配对宏定义了该函数,你看看每个类的头文件合实现文件
    中是否分别有哦上述三个宏,重点检查一下你的MyApp.cpp.
      

  3.   

    这个MFC程序不是用向导生成的,自己写的看了侯sir的书上的例子。
    现在不能运行,我都照书上每个字母都对照过了,还是不行。
    哎100分求助。
      

  4.   

    在cmyapp.cpp文件中加入下列宏:BEGIN_MESSAGE_MAP(CMyApp, CWinApp)END_MESSAGE_MAP()