导航
  • 主页
  • VC/MVC基础类
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC/MFC&Web
  • Doc/View

一个CView类指针传递的问题,请高手指教!

南飞雁 2002-05-14 06:38:36
我用vc创建了一个SDI窗体,然后增加了一个对话框,对应的类是CAaDlg,然后我想在类CAaDlg里面访问SDI的CTestView类的一个成员变量。我是这样做的,我在CTestView类的CPP文件里面首先#include "AaDlg.h",然后在CTestView类的一个菜单函数里面声明一个变量CAaDlg dlg(this);我将CView类的this指针传给对话框类。我在CAaDlg类的头文件里面首先用class CTestView;声明视图类,然后在CAaDlg里面声明一个CTestView类的指针CTestView* m_pView;然后我在AaDlg.h文件的CAaDlg的构造函数里面执行m_pView = (CTestView*)pParent;到目前为止,编译没有出错,但是当我在CAaDlg的另外一个函数里面使用m_pView的变量时却出现了不认识编译错误CTestView的错误,请各位指教!
...全文
4 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
南飞雁 2002-05-14
成功了,多谢各位,散分!
回复
南飞雁 2002-05-14
那样也不行,就会出现在CTestView的GetDocument()那里有错误,但那是不可能的,我希望你能够亲自试验一下。
回复
webber84 2002-05-14
你在CAaDlg类的头文件里用class CTestView声明视图类,只是告诉编译器这个类的存在,所以当你只使用CTestView的指针时,没有问题;但是当你用这个指针来调用CTestView的成员函数时,就会出错了,因为编译器并不能根据你的声明来确定CTestView到底有哪些成员函数,所心你须把CTestView的定义告诉编译器。
解决办法:像楼上所说的,在AaDlg.cpp中包含testview.h的头文件,同时别忘了相应doc类的头文件,因为view类里有一个GetDocument要用到doc类的指针。

回复
wened 2002-05-14
一般视类是不能做为对话框的父窗口的,不信你在你那个对话框里调用GetParent,得到的指针应该与视类的指针不同的,
对于要在对话框里调用视图指针,可以直接把视图指针赋给对话框里的视图指针变量,这样就不会出错
回复
opentuxedo 2002-05-14
别忘了把你的“另外一个函数”放在Cpp文件中
回复
opentuxedo 2002-05-14
在AaDlg.cpp中包含testview.h
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告