大家帮忙看看对话框中获取视图类指针的错误。。
CSolarView* pView; //视图类指针
pView=(CSolarView*)((CFrameWnd*)AfxGetApp()->m_pMainWnd)->GetActiveView();
在对话框Dlg里这样获取视图类指针可以吗?那要在Dlg.cpp中添加#include"SolarView.h"?这样会出错,说:
e:\opengl\solar\solarview.h(22) : error C2143: syntax error : missing ';' before '*'
e:\opengl\solar\solarview.h(22) : error C2501: 'CSolarDoc' : missing storage-class or type specifiers
e:\opengl\solar\solarview.h(22) : error C2501: 'GetDocument' : missing storage-class or type specifiers
该怎么做呢?
问题点数:20、回复次数:8Top
1 楼NJHS(天上来客(中国程序先锋网www.cppn.net)大量免费源代码下载)回复于 2006-03-17 15:02:29 得分 0
pView=(CSolarView*)((CMainFrame*)AfxGetApp()->m_pMainWnd)->GetActiveView();
Top
2 楼Seu_why(Newbie)回复于 2006-03-17 15:09:04 得分 0
CFrameWnd *pFrame =
(CFrameWnd*)AfxGetApp()->m_pMainWnd;
CYourView *pView = (CYourView *)pFrame->GetActiveView();Top
3 楼chenfj01(开心辞典)回复于 2006-03-17 23:27:12 得分 0
我是在view类里面要创建一个对话框,所以在view里包含了"Dlg.h",可是在Dlg里又要用到view,该怎么办?Top
4 楼ysc918(白纸人生)回复于 2006-03-18 08:16:19 得分 0
#include "SolarDoc.h"
#include " SolarView.h"Top
5 楼xiaoqiqixiao(七七)回复于 2006-03-18 09:32:16 得分 0
你只要记住,系统是编译.cpp,.c等文件的,因此,你要检查每个.cpp文件,看看是否包含了足够多的文件。
比如,在编译C.cpp文件时,可能包含了A.h文件,可是A.h文件又需要B.h文件中定义的某个类声明,而你又没在A.h文件中#include "B.h"文件,那么就会出错,这时你可以直接在你的C.cpp文件中
#include "B.h"
#include "A.h"
就象楼上写的。当然,如果你的B.h文件又需要其它的文件,那你看着办吧
那么为什么A.h文件不直接#include "B.h"呢,如果A.h需要B.h的话?
有时候,可能class CA定义在A.h文件中,class CB定义在B.h文件中,你的CA中定义了CB的实例或实例指针,而CB中又定义了CA的实例或实例指针,这时,你可以在class CA前先声明一个class CB;就不用再在A.h中#include "B.h"了,这样就不存在交叉包含的问题了。
当然在A.cpp和B.cpp中都得包含A.h和B.h,而且得注意先后顺序。
Top
6 楼jiangsheng(蒋晟.Net[MVP])回复于 2006-03-18 10:57:02 得分 0
对话框和视图的关系是什么?一对多?多对一?一对一?多对多?Top
7 楼syy64(太平洋)回复于 2006-03-18 11:48:02 得分 0
在对话框类里要包含文档类和视类的头文件。Top
8 楼chenfj01(开心辞典)回复于 2006-03-20 09:24:53 得分 0
非常感谢各位的精彩回复,尤其是xiaoqiqixiao(七七)。我明白了。
To jiangsheng(蒋晟.Net[MVP]),我还站在VC的门外面呢,还不会那么多对应,就是单视图的。顺便大家给介绍下你们学习VC的经验吧(不要说我跑题啊,呵呵)。Top




