class CWinApp:public CWinThread
{
public:
CWinApp* m_pCurrentWinApp;
public:
CWinApp::CWinApp(){m_pCurrentWinApp = this;cout<<"CWinApp Constructor\n";}
CWinApp::~CWinApp(){cout<<"CWinApp Destructor\n";}
};class CMyWinApp:public CWinApp
{
public:
CMyWinApp::CMyWinApp(){cout<<"CMyWinApp Constructor\n";}
CWinApp::~CMyWinApp(){cout<<"CMyWinApp Destructor\n";}
};CMyWinApp theApp;
CWinApp* AfxGetApp()
{
return theApp.m_pCurrentWinApp;
}这是这两各类及一个函数的定义,可下面在用的时候我就看不懂了:void main()
{
CWinApp* pApp=AfxGetApp();
}
pApp是一个父类的指针,为什么却要指向一个子类的对象?而且AfxGetApp取出的对象好像也是固定不变的.这有什么有么?
这是<<深入浅出MFC>>六大技术仿真之一中的一段,详见P90
希望大家能教教我这个菜鸟.非常感谢.
{
public:
CWinApp* m_pCurrentWinApp;
public:
CWinApp::CWinApp(){m_pCurrentWinApp = this;cout<<"CWinApp Constructor\n";}
CWinApp::~CWinApp(){cout<<"CWinApp Destructor\n";}
};class CMyWinApp:public CWinApp
{
public:
CMyWinApp::CMyWinApp(){cout<<"CMyWinApp Constructor\n";}
CWinApp::~CMyWinApp(){cout<<"CMyWinApp Destructor\n";}
};CMyWinApp theApp;
CWinApp* AfxGetApp()
{
return theApp.m_pCurrentWinApp;
}这是这两各类及一个函数的定义,可下面在用的时候我就看不懂了:void main()
{
CWinApp* pApp=AfxGetApp();
}
pApp是一个父类的指针,为什么却要指向一个子类的对象?而且AfxGetApp取出的对象好像也是固定不变的.这有什么有么?
这是<<深入浅出MFC>>六大技术仿真之一中的一段,详见P90
希望大家能教教我这个菜鸟.非常感谢.
CMyWinApp是从CWinApp派生的,那么CMyWinApp就不属于CWinApp了么?
所以CWinApp* pApp=AfxGetApp();很正常啊。
直接用CWinApp theApp;不好么?