为什么我用不了theApp这个全局变量???(100分)

  • 主题发起人 主题发起人 bestdelpher
  • 开始时间 开始时间
B

bestdelpher

Unregistered / Unconfirmed
GUEST, unregistred user!
我创建了一个给予对话框的工程
在对话框文件中的代码
void CTest3Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
m_ListBox1.AddString("C++测试");
CTest3Dlg * MyDlg;
MyDlg =::theApp.GetMainWnd();
MyDlg->m_ListBox1.AddString("C++测试");
}
在代码中编辑,也能查找到theApp定义,但就是编译时报
E:/Microsoft Visual Studio/MyProjects/Test3/Test3Dlg.cpp(179) : error C2039: 'theApp' : is not a member of '`global namespace''
E:/Microsoft Visual Studio/MyProjects/Test3/Test3Dlg.cpp(179) : error C2065: 'theApp' : undeclared identifier
E:/Microsoft Visual Studio/MyProjects/Test3/Test3Dlg.cpp(179) : error C2228: left of '.GetMainWnd' must have class/struct/union type
请问大虾们怎么回事。
环境:
VC6+sp6
 
大家帮我啊,是系统的问题吗,
我在vs.net2003(vc.net)下都行啊
 
error C2039: 'theApp' : is not a member of '`global namespace''
theApp不是全局命名空间的成员
老实讲,这样的问题你在这里发问,远不如找本MFC的书翻翻快,VS2003和VS6存在很多细微地方的不同
 
没道理阿,大家都说行的,是设置的问题吗?
明明申明了的
CTest3App::CTest3App()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
/////////////////////////////////////////////////////////////////////////////
// The one and only CTest3App object
[red]CTest3App theApp;[/red]
//CString str="DIYER";
/////////////////////////////////////////////////////////////////////////////
// CTest3App initialization
BOOL CTest3App::InitInstance()
{
AfxEnableControlContainer();
…………………………………………………………
}
 
theApp前面干吗加::啊??
::AfxGetApp()可以取得应用程序示例的指针。
 
::AfxGetApp()可用
JamesBond_L记功一次,有谁能说的详细一点呢。
为什么在编写代码时能找到,如go to definition能定位,
编译却说没定义。
 
那个可能是BUG,但也可能是方便输入的,也可能是某个head文件包含了(但是你没有包含),没有什么的。重要的是,你的theApp是在程序里面的变量。
 
在你需要使用theApp变量的文件头加上:
extern CTest3App theApp;
具体原因不用多说,每新建一MFC相关工程系统自动建立一theApp变量,你如果要用,你所需要做的就是加上上面一句话,这句话应该明白吧!
 
后退
顶部