my.cpp编译后出现下面的出错信息
C:\Documents and Settings\Administrator\桌面\CRuntimeClass\my.cpp(12) : error C2084: function '__thiscall CMyFrameWnd::CMyFrameWnd(void)' already has a body
怎么解决?
mfc.h#define BOOL int
#define TRUE 1
#define FALSE 0
#define LPCSTR LPSTR
typedef char* LPSTR;
#define UNIT int
#define PASCAL _stdcall
#include <iostream.h>class CObject;
struct CRuntimeClass
{
//attritubes
LPCSTR m_lpszClassName;
int m_nObjectSize;
UNIT m_wSchema;
CObject* (PASCAL* m_pfnCreateObject)();//Null=>abastract class
CRuntimeClass* m_pBaseClass;
//CRuntimeClass objects linked together in simple list
static CRuntimeClass* pFirstClass;
CRuntimeClass* m_pNextClass;
};struct AFX_CLASSINIT{
AFX_CLASSINIT(CRuntimeClass* pNewClass);
};#define RUNTIME_CLASS(class_name)\
(&class_name::class##class_name)#define RUNTIME_DYNAMIC(class_name)\
public:\
static CRuntimeClass class##class_name;\
virtual CRuntimeClass* GetRuntimeClass() const;#define _IMPLEMENT_RUNTIMECLASS(class_name,base_class_name,wSchema,pfnNew)\
static char_lpsz##class_name[]=#class_name;\
CRuntimeClass class_name::class##class_name={\
lpsz##class_name,sizeof(class_name),wSchema,pfnNew,\
RUNTIMECLASS(base_class_name),NULL};\
static AFX_CLASSINIT _init##class_name(&class_name::class##class_name);\
CRuntimeClass* class_name::GetRuntimeClass() const\
{return &class_name::class##class_name;}#define IMPLEMENT_DYNAMIC(class_name,base_class_name)\
_IMPLEMENT_RUNTIMECLASS(class_name,base_class_name,0xffff,NULL)class CObject{
public:
CObject::CObject(){}
CObject::~CObject(){}
virtual CRuntimeClass* GetRuntimeClass()const;
public:
static CRuntimeClass classCObject;};
class CCmdTarget:public CObject{
DECLARE_DYNAMIC(CCmdTarget);
public:
CCmdTarget::CCmdTarget(){}
CCmdTarget::~CCmdTarget(){}
};class CWinThread: public CCmdTarget{
DECLARE_DYNAMIC(CWinThread);
public:
CWinThread::CWinThread(){}
CWinThread::~CWinThread(){}
virtual BOOL InitInstance(){
return TRUE;
}
virtual int Run(){
return 1;
}
};
class CWnd;
class CWinApp:public CWinThread
{
DECLARE_DYNAMIC(CWinApp);
public:
CWinApp* m_pCurrentWinApp;
CWnd* m_pMainWnd;
public:
CWinApp::CWinApp(){
m_pCurrentWinApp=this;
}
CWinApp::~CWinApp(){ }
virtual BOOL InitApplication(){
return TRUE;
}
virtual BOOL InitInstance(){
return TRUE;
}
virtual int Run(){
return CWinThread::Run();
}
};
class CDocument:public CCmdTarget
{
DECLARE_DYNAMIC(CDocument);
public:
CDocument::CDocument(){}
CDocument::~CDocument(){}
};
class CWnd:public CCmdTarget{
public:
CWnd::CWnd(){}
CWnd::~CWnd(){}
virtual BOOL Create();
BOOL CreateEx();
virtual BOOL PreCreateWindow();
};
class CFrameWnd:public CWnd
{
DECLARE_DYNAMIC(CFrameWnd);
public:
CFrameWnd::CFrameWnd(){}
CFrameWnd::~CFrameWnd(){}
BOOL Create();
virtual BOOL PreCreateWindow();
};
class CView:public CWnd
{
DECLARE_DYNAMIC(CView);
public:
CView::CView(){}
CView::~CView(){}
};
//global function
CWinApp* AfxGetApp();
mfc.cpp#include "my.h"
extern CMyWinApp theApp;
static char szCObject[]="CObject";
struct CRuntimeClass CObject::classCObject={szCObject,sizeof(CObject),0xFFFF,NULL,NULL,NULL};
static AFX_CLASSINIT _init_CObject(&CObject::classCObject);
CRuntimeClass* CRuntimeClass::pFirstClass=NULL;AFX_CLASSINIT::AFX_CLASSINIT(CRuntimeClass* pNewClass){
pNewClass->m_pNextClass=CRuntimeClass::pFirstClass;
CRuntimeClass::pFirstClass=pNewClass;
}CRuntimeClass* CObject::GetRuntimeClass()const{
return &CObject::classCObject;
}BOOL CWnd::Create()
{
return TRUE;
}BOOL CWnd::CreateEx()
{
PreCreateWindow();
return TRUE;
}BOOL CWnd::PreCreateWindow()
{
return TRUE;
}BOOL CFrameWnd::Create()
{
CreateEx();
return TRUE;
}BOOL CFrameWnd::PreCreateWindow()
{
return TRUE;
}IMPLEMENT_DYNAMIC(CCmdTarget,CObject)
IMPLEMENT_DYNAMIC(CWinThread,CCmdTarget)
IMPLEMENT_DYNAMIC(CWinApp,CWinThread)
IMPLEMENT_DYNAMIC(CWnd,CCmdTarget)
IMPLEMENT_DYNAMIC(CFrameWnd,CWnd)
IMPLEMENT_DYNAMIC(CDocument,CCmdTarget)
IMPLEMENT_DYNAMIC(CView,CWnd)
//global functionCWinApp* AfxGetApp()
{
return theApp.m_pCurrentWinApp;
}
my.h#include <iostream.h>
#include "mfc.h"
class CMyWinApp:public CWinApp{
public:
CMyWinApp::CMyWinApp(){}
CMyWinApp::~CMyWinApp(){}
virtual BOOL InitInstance();
};
class CMyFrameWnd:public CFrameWnd
{
public:
CMyFrameWnd::CMyFrameWnd(){}
CMyFrameWnd::~CMyFrameWnd(){}
};class CMyView:public CView{
public:
CMyView::CMyView(){}
CMyView::~CMyView(){}
};
//global function
void PrintAllClasses();
my.cpp#include "my.h"CMyWinApp theApp;
BOOL CMyWinApp::InitInstance()
{
m_pMainWnd=new CMyFrameWnd;
return TRUE;
}
CMyFrameWnd::CMyFrameWnd()
{
Create();
}void PrintAllClasses()
{
CRuntimeClass* pClass;
//just walk through the simple list of registered classes
for (pClass=CRuntimeClass::pFirstClass;pClass!=NULL;pClass=pClass->m_pNextClass)
{
cout<<pClass->m_lpszClassName<<"\n";
cout<<pClass->m_nObjectSize<<"\n";
cout<<pClass->m_wSchema<<"\n";
}
}
//main
void main()
{
CWinApp* pApp=AfxGetApp(); pApp->InitApplication();
pApp->InitInstance();
pApp->Run(); PrintAllClasses();
}