最近用MFC做一个小软件,SDI,插入了一个对话框资源,想在对话框加入控件响应函数,实现视图的客户区绘图
我在C**View类中定义了绘图函数Draw,在自定义的对话框类C**Dlg中接收数据,想要调用C**View类中的函数进行绘图,形式为:((CControlView*)...
我在C**View类中定义了绘图函数Draw,在自定义的对话框类C**Dlg中接收数据,想要调用C**View类中的函数进行绘图,形式为:
((CControlView*)(((CMainFrame*)(AfxGetApp()->m_pMainWnd))))->Draw();
但只要我在C**Dlg源文件中包含了头文件“C**View.h”,就会在“C**View.h"中报错,位置是 public:
CControlDoc* GetDocument() const;错误类型为:缺少“;”及类型标识符——貌似编译系统不认识此处的定义了。
我觉得是由于包含了头文件导致了重复定义,但怎么解决呢?
或者有没有更好的画图方法?
那位用过的指导指导啊。。。。。
开发环境是VS2010 展开
((CControlView*)(((CMainFrame*)(AfxGetApp()->m_pMainWnd))))->Draw();
但只要我在C**Dlg源文件中包含了头文件“C**View.h”,就会在“C**View.h"中报错,位置是 public:
CControlDoc* GetDocument() const;错误类型为:缺少“;”及类型标识符——貌似编译系统不认识此处的定义了。
我觉得是由于包含了头文件导致了重复定义,但怎么解决呢?
或者有没有更好的画图方法?
那位用过的指导指导啊。。。。。
开发环境是VS2010 展开
展开全部
在使用到CControlView类的头文件里只是添加语句 class CControlView;然后在用到它的实现里包含CControlView头文件。
更多追问追答
追问
我在自定义的对话框类头文件里面里加了class CControlView;,然后在CControlView.h加了#include "LineDlg.h",编译就没报错了。。。
但我是想在LineDlg.cpp中用CControlView中的函数,还是用不了。。。
追答
你要在LineDlg.cpp文件中包含CControlView所在的头文件。
展开全部
当只有一个view类的时候,或者只想获取当前活动的view类,这时可以采用这种方法。CListCtrlView* pView = (CListCtrlView*)pFrame->GetActiveView();
具体请参看我的这篇博客:
http://blog.csdn.net/bbdxf/article/details/7514716
具体请参看我的这篇博客:
http://blog.csdn.net/bbdxf/article/details/7514716
追问
你提供一种获取View指针的方法,对么?
我将这段代码加到,我自定义的对话框类的控件响应函数中时(我需要在控件响应函数中调用View类的绘图函数在客户区作图),CListCtrlView* 这个指针无法识别??是否应该包含某个头文件?
CListCtrlView* 这是一个什么样的指针类型??
追答
不好意思,刚不小心弄丢了一句:
CMainFrame* pFrame=(CMainFrame*)AfxGetMainWnd();
CListCtrlView* pView = (CListCtrlView*)pFrame->GetActiveView();
你可以参看我给你推荐的那个博客,那一片介绍的很详细的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询