hur.cn - 华软网

 热门搜索

求助关于CWinApp*AfxGetApp()的问题

  作者:未知    来源:网络    更新时间:2011/4/16
#include "iostream"
using namespace std;
class CWinApp 
{
public:
            CWinApp * m_pCurrentWinApp;
public:
            CWinApp::CWinApp()
            {
                 m_pCurrentWinApp=this;
                 cout<<"CWinApp::CWinApp Constructor \n";
            }
  
            CWinApp::~CWinApp()
            {
                  cout<<"CWinApp Destructor \n";
            }  
           
};
class CMyWinApp : public  CWinApp
{
public:
          
         
            CMyWinApp ::CMyWinApp ()
            {
                   cout<<"CMyWinApp Constructor \n";
            }
            CMyWinApp ::~CMyWinApp ()
            {
                   cout<<"CMyWinApp Destructor \n";
            }
          
};
extern CMyWinApp theApp;
CWinApp * AfxGetApp()
{
     return theApp.m_pCurrentWinApp; 
}
CMyWinApp theApp;
void main()
{
    CWinApp * pApp=AfxGetApp();
}
我想问的是,建立全局对象后,程序后续的执行步骤


另有个问题当建立全局对象theApp时,首先调用基类的构造函数,举行m_pCurrentWinApp=this;赋值操作
请问:这时的this是基类的对象照旧派生类theApp对象,网上有人说是theApp对象,我不太懂,为什么会是theApp对象?
---华软 网友回答---
HELP,HELP
---华软网友回复---
你要定义全局的theApp
只需要在.h中
extern CMyWinApp theApp;

CPP中就不用改了
CMyWinApp theApp;

这样你的项目中包括了#include "MyWin.h"
的地方都能够直接用theApp
---华软网友回复---
this指向调用者,调用者是派生类就指向派生类
---华软网友回复---
陌生的话,你能够跟一下吗,他人在怎么说你也其实不一定清楚
---华软网友回复---
this 这个指针指向那时的对象。

当建立全局对象theApp,调用基类的构造函数,举行m_pCurrentWinApp=this;赋值操作
这时的this是派生类theApp对象。

由于这个全局对象就是CMyWinApp theApp这样定义的,

而且就你的程序来说,只有基类CWinApp,基本就不存留CWinApp的对象,

由于你基本就没有定义CWinApp theApp。如果你这样定义也是能够的,那么你的派生类就没有意义了。
---华软网友回复---
当然是派生类了,this是指向对象的,而这个问题中只有派生类对象。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。