5.4.2 代码演练(1)
下面将给出实现本关任务的关键代码。
(1)MFC.h中,按照类的层次结构定义类的关键代码:
【程序5 1】光盘\code\05\AimedWork\AimedWork.sln
01 class CObject //声明CObject类 02 { 03 public: 04 CObject::CObject() {} 05 CObject::~CObject() {} 06 virtual CRuntimeClass* GetRuntimeClass() const; 07 BOOL IsKindOf(const CRuntimeClass* pClass) const; 08 public: 09 static CRuntimeClass classCObject; //定义CRuntimeClass结构的变量 10 virtual void Dynamic() { cout << "CObject has been created!\n"; } 11 }; 12 class CCmdTarget : public CObject //声明CCmdTarget类 13 { 14 DECLARE_DYNAMIC(CCmdTarget) //支持运行时类型识别 15 public: 16 CCmdTarget::CCmdTarget() {} 17 CCmdTarget::~CCmdTarget() {} 18 }; 19 class CWinThread : public CCmdTarget //声明CWinThread类 20 { 21 DECLARE_DYNAMIC(CWinThread) //支持运行时类型识别 22 public: 23 CWinThread::CWinThread() {} 24 CWinThread::~CWinThread() {} 25 virtual BOOL InitInstance() {return TRUE;} 26 }; 27 class CWnd; 28 class CWinApp : public CWinThread //声明CWinApp类 29 { 30 DECLARE_DYNAMIC(CWinApp) //支持运行时类型识别 31 public: 32 CWinApp* m_pCurrentWinApp; 33 CWnd* m_pMainWnd; 34 public: 35 CWinApp::CWinApp() {m_pCurrentWinApp = this;} 36 CWinApp::~CWinApp() {} 37 virtual BOOL InitInstance() {return TRUE;} 38 }; 39 class CDocument : public CCmdTarget //声明CDocument类 40 { 41 DECLARE_DYNAMIC(CDocument) //支持运行时类型识别 42 public: 43 CDocument::CDocument() {} 44 CDocument::~CDocument() {} 45 }; 46 class CWnd : public CCmdTarget //声明CWnd类 47 { 48 DECLARE_DYNCREATE(CWnd) //支持动态创建 49 public: 50 CWnd::CWnd() {cout << "CWnd Constructor be called!\n";} 51 CWnd::~CWnd() {} 52 virtual BOOL Create(); 53 BOOL CreateEx(); 54 virtual BOOL PreCreateWindow(); 55 void Dynamic() { cout << "CWnd has been created!\n"; } 56 }; 57 class CFrameWnd : public CWnd //声明CFrameWnd类 58 { 59 DECLARE_DYNCREATE(CFrameWnd) //支持动态创建 60 public: 61 CFrameWnd::CFrameWnd() {cout << "CFrameWnd Constructor be called!\n";} 62 CFrameWnd::~CFrameWnd() {} 63 BOOL Create(); 64 virtual BOOL PreCreateWindow(); 65 void Dynamic() { cout << "CFrameWnd has been created!\n"; } 66 }; 67 class CView : public CWnd //声明CView类 68 { 69 DECLARE_DYNAMIC(CView) //支持运行时类型识别 70 public: 71 CView::CView() {cout << "CView Constructor be called!\n";} 72 CView::~CView() {} 73 }; |
【责任编辑:
云霞 TEL:(010)68476606】