导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

问题解决,马上结贴

绿豆蛙2013 2009-08-09 02:33:31
问题就是如何在文档类中获取视图类中定义的对话框数据m_dlg[5]中的第二个对话框的指针。

现在的思路是:获取视图类的指针->然后获取对话框的指针

但是操作中我遇到点问题,我见别人是这样获取视图类指针的:

Doc.cpp中
	POSITION firstViewPos;
CView *pView;
firstViewPos=GetFirstViewPosition();
pView=GetNextView(firstViewPos);


我用这个是可以,但是pView->里面没有对象m_dlg。为什么不能用CMyView *pView呢?我一改成CMyView *pView就一大堆错误,我包含了MyView.h也不行,这是问题一。

得到指针之后,就可以利用
pView->m_dlg[1]
就是获得的指针,是不是这样?

谢谢大家,问题搞定,马上就结贴~~~~
...全文
93 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
绿豆蛙2013 2009-08-09
牛逼,牛逼,你真牛逼!!!
佩服,佩服,我真佩服!!!

雪影,真诚的说一声,谢谢
回复
MoXiaoRab 2009-08-09
汗一个,强制转换的问题....LZ....
回复
雪影 2009-08-09
1. pView=(CMonitorView*)(GetNextView(firstViewPos));是c方式的转换
2. static 是c++转换方式,比上面的转换更安全,可以在编译期间发现错误。
回复
绿豆蛙2013 2009-08-09
牛逼!你真是太牛逼!
只是没明白你为什么这样转换类型static <CMyView*>,不都是这样吗
pView=(CMonitorView*)(GetNextView(firstViewPos));

回复
米西牙乖 2009-08-09
包含CMyView的头文件之前,请包含对应的文档类的头文件,就没有一大堆错误了。。。
回复
雪影 2009-08-09
[Quote=引用 7 楼 lzh19840809 的回复:]
引用 5 楼 tttyd 的回复:
另外
C/C++ code    POSITION firstViewPos;
    CMyView*pView;
    firstViewPos=GetFirstViewPosition();
    pView=static <CMyView*>(GetNextView(firstViewPos));//这里要进行指针类型转换


这个好像不用吧,GetNextView得到的是指针

MSDN上的解释

virtual CView* GetNextView( POSITION& rPosition ) const;

Return Value

A pointer to the view identified by rPosition.

[/Quote]
晕,C2440错误就是你没有进行类型转换而导致的错误。
GetNextView返回的CView指针类型,而你要赋值的值CMyView*类型,你说需不需要进行类型转换
回复
绿豆蛙2013 2009-08-09
[Quote=引用 5 楼 tttyd 的回复:]
另外
C/C++ code POSITION firstViewPos;
CMyView*pView;
firstViewPos=GetFirstViewPosition();
pView=static<CMyView*>(GetNextView(firstViewPos));//这里要进行指针类型转换
[/Quote]

这个好像不用吧,GetNextView得到的是指针

MSDN上的解释

virtual CView* GetNextView( POSITION& rPosition ) const;

Return Value

A pointer to the view identified by rPosition.
回复
绿豆蛙2013 2009-08-09
包含了啊,我把这部分程序贴出来
#include "stdafx.h"
#include "Monitor.h"

#include "MonitorDoc.h"
#include "MonitorView.h"


。。。。。。。。。。。。

	POSITION firstViewPos;
CMonitorView *pView;
firstViewPos=GetFirstViewPosition();
pView=GetNextView(firstViewPos);


错误:
error C2440: '=' : cannot convert from 'class CView *' to 'class CMonitorView *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
回复
雪影 2009-08-09
另外
    POSITION firstViewPos;
CMyView *pView;
firstViewPos=GetFirstViewPosition();
pView=static<CMyView*>(GetNextView(firstViewPos));//这里要进行指针类型转换
回复
雪影 2009-08-09
你确定你包含了CMonitorView类定义的头文件?

在pView指针定义的cpp文件里。
回复
绿豆蛙2013 2009-08-09
为了方便大家看,我把实际的CMonitorView 改成了 CMyView,抱歉
回复
绿豆蛙2013 2009-08-09
肯定不行啊,
	POSITION firstViewPos;
CMyView *pView;
firstViewPos=GetFirstViewPosition();
pView=GetNextView(firstViewPos);


错误:
error C2065: 'CMonitorView' : undeclared identifier
error C2065: 'pView' : undeclared identifier
warning C4552: '*' : operator has no effect; expected operator with side-effect
error C2440: '=' : cannot convert from 'class CView *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast

回复
你试试不包含.h,而使用class CMyView声明。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

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

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……