学习MFC遇到的有关问题
学习MFC遇到的问题
是《深入浅出MFC》上面的一个例子,但是有些地方没有看懂,下面划红线的地方
求解释呀!
------解决方案--------------------
DECLARE_DYNAMIC(CDocument)这个东西是什么用法呀?
挺象是指定文档颜色,你可以这么试试:程序运行后,在视图里写上文字,看是什么颜色.如果有颜色,你再改颜色,比如:DECLARE_DYNAMIC(CDocument)[color=#00FF00]
------解决方案--------------------
直接搜索’DECLARE_DYNAMIC‘
------解决方案--------------------
IMPLEMENT_DYNAMIC是实现“运行时类型识别”宏,与之相对应的是DECLARE_DYNAMIC(声明“运行时类型识别”宏)。也就是说你在.CPP文件中如果看见有IMPLEMENT_DYNAMIC,则在.H文件中必定有DECLARE_DYNAMIC的声明。
DECLARE_DYNAMIC/DEClARE_DYNAMIC是为了确定运行时对象属于哪一个类而定义的宏。
DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE是为了“动态创建"类的实例而定义的宏。new可以用来创建对象,但不是动态的。比如说,你要在程序中实现根据拥护输入的类名来创建类的实例,下面的做法是通不过的:
char szClassName[0x100];
cin >> szClassName;
CObject* pOb=new szClassName; //通不过
这里就要用到DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE定义的功能了。
是《深入浅出MFC》上面的一个例子,但是有些地方没有看懂,下面划红线的地方
- C/C++ code
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)[color=#FF0000]这个东西是什么用法呀?[/color] public: CDocument::CDocument() { } CDocument::~CDocument() { } };
求解释呀!
------解决方案--------------------
DECLARE_DYNAMIC(CDocument)这个东西是什么用法呀?
挺象是指定文档颜色,你可以这么试试:程序运行后,在视图里写上文字,看是什么颜色.如果有颜色,你再改颜色,比如:DECLARE_DYNAMIC(CDocument)[color=#00FF00]
------解决方案--------------------
直接搜索’DECLARE_DYNAMIC‘
------解决方案--------------------
IMPLEMENT_DYNAMIC是实现“运行时类型识别”宏,与之相对应的是DECLARE_DYNAMIC(声明“运行时类型识别”宏)。也就是说你在.CPP文件中如果看见有IMPLEMENT_DYNAMIC,则在.H文件中必定有DECLARE_DYNAMIC的声明。
DECLARE_DYNAMIC/DEClARE_DYNAMIC是为了确定运行时对象属于哪一个类而定义的宏。
DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE是为了“动态创建"类的实例而定义的宏。new可以用来创建对象,但不是动态的。比如说,你要在程序中实现根据拥护输入的类名来创建类的实例,下面的做法是通不过的:
char szClassName[0x100];
cin >> szClassName;
CObject* pOb=new szClassName; //通不过
这里就要用到DEClARE_DYNCREATE/IMPLEMENT_DYNCREATE定义的功能了。