调用工程中的theApp指针----AfxGetApp()
来源:互联网 发布:三十岁换工作 知乎 编辑:程序博客网 时间:2024/06/02 01:52
我看到一段程序:
m_HArrow=AfxGetApp()->LoadStandardCursor(IDC_ARROW);
m_HCross=AfxGetApp()->LoadStandardCursor(IDC_CROSS);
问题:为什么写成:
m_HArrow=LoadStandardCursor(IDC_ARROW);
m_HCross=LoadStandardCursor(IDC_CROSS);
不行呢?此处 AfxGetApp()的用法,作用及返回值是什么?(帮助里看不清楚。)
m_HArrow=AfxGetApp()->LoadStandardCursor(IDC_ARROW);
m_HCross=AfxGetApp()->LoadStandardCursor(IDC_CROSS);
问题:为什么写成:
m_HArrow=LoadStandardCursor(IDC_ARROW);
m_HCross=LoadStandardCursor(IDC_CROSS);
不行呢?此处 AfxGetApp()的用法,作用及返回值是什么?(帮助里看不清楚。)
回答:
LoadStandardCursor不是VC++的标准函数,也不是API的函数,它是CWinApp类的函数,当然你不能不写AfxGetApp()。AfxGetApp返回一个CWinApp对象指针,就是MFC生成的C??App.cpp中定义的那个对象。如果你需要调用这个对象的某个成员函数,就可以使用AfxGetApp()函数。
我们在任何一个VC工程中都会看到一个类似于:
//Test.cpp文件中
CTestApp theApp;(工程名为Test)
的语句。它是指向工程对象的一个指针,你可以用它访问Test工程的成员函数和变量。
如果工程中添加了一个CConfig类,在CConfig中想调用Test工程中的成员函数和变量,则可以这样调用之:
CTestApp *pApp=(CTestApp *)AfxGetApp( );
如果在CTest类中我们声明如下一些变量:
//Test.cpp文件
class CTestApp : public CWinApp
{
public:
CTestApp( );
CString str; //添加的对话框变量
...
}
//Test.cpp文件
CTestApp::CTestApp()
{
str="abc";
}
好了,现在我们就在CConfig类中调用str吧!
//Config.cpp文件
CTestApp *pApp=(CTestApp *)AfxGetApp( );
AfxMessageBox(pApp->str);
这样,就实现了对CTestApp类中变量的调用。
- 调用工程中的theApp指针----AfxGetApp()
- 调用工程中的theApp指针----AfxGetApp()
- mfc 封装 theapp winmain afxGetapp
- qApp,对应于MFC中的theApp
- afxgetapp()
- AfxGetApp
- AfxGetApp
- AfxGetApp()
- AfxGetApp
- AfxGetApp();
- AfxGetApp()
- AfxGetApp
- AfxGetApp
- C#调用工程中的文本
- 调用类中的函数指针
- 类中的一些指针调用
- C#调用VC的DLL时AfxGetApp失败的解决方法
- 关于指针在函数中的调用
- Overload & Override
- sns的概念简析
- jxl操作EXCEL
- 基于Delphi的异常处理技术探究
- 企业管理软件平台架构内幕揭秘
- 调用工程中的theApp指针----AfxGetApp()
- Delphi中用API实现在MSN的信息提示
- ASP.net 验证码(C#)
- 软件测试的常识
- forms认证
- _INTSIZEOF 及windows 核心编程ch5
- Eclipse WTP 开发Struts环境配置
- Delphi中"包"的妙用
- 软件工程师工作经验谈