CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

怎样得到视图的指针?

楼主zaiqian(zaiqian)2001-02-14 14:11:00 在 VC/MFC / 基础类 提问

怎样在一个类中写语句对视图进行操作。谢谢。下面的程序有错,请看看为什么。谢谢。  
   
  class   CTreeViewClass   :   public   CTreeView  
  {  
  protected:  
  afx_msg   void   OnDblclk(NMHDR*   pNMHDR,   LRESULT*   pResult);  
   
  }  
  void   CTreeViewClass::OnDblclk(NMHDR*   pNMHDR,   LRESULT*   pResult);  
  {  
                    CMainFrame   *pFrame   =   (CMainFrame   *)AfxGetMainWnd();  
  CDemo_DevStudioView   *pView   =   (CDemo_DevStudioView   *)pFrame->GetActiveView();  
  pView->Navigate2("www.creader.com");//这条语句运行时出错。那么怎样才能操作视图呢?使视图执行Navigate2()操作浏览网页。  
   
  }  
   
  class   CDemoView   :   public   CHtmlView   //从CHtmlView继承一个视图  
  {  
  } 问题点数:20、回复次数:10Top

1 楼fengchang(everate)回复于 2001-02-14 14:19:00 得分 0

应该是pFrame->GetActiveFrame()->GetActiveView(),这样才行。因为是多文档,所以调用  
  getactiveview的必须是文档边框的指针。另外提醒您一句,cj60lib本身就有bug,不要把他全盘采用,自己必须甄别使用。(当然这个函数OnDblclk是您自己添上去的)。Top

2 楼zaiqian(zaiqian)回复于 2001-02-14 14:43:00 得分 0

fengchang:  
          你好,我试了你的方法,还是不行。  
  Top

3 楼xyzboat(一叶小舟)回复于 2001-02-14 15:12:00 得分 5

CDemo_DevStudioView   *pView   =   (CDemo_DevStudioView   *)pFrame->GetActiveView();  
  你在这一句后面TRACE一下,确信你取得正确的视图;如果正确,可能是你的后面的一句有错.Top

4 楼fengchang(everate)回复于 2001-02-14 15:15:00 得分 5

有没有强制类型转换,就是加上(CDemo_DevStudioView   *)(pFrame->GetActiveFrame()->GetActiveView())—>Navigate("......");刚才我为了说明问题没有加上。其实返回的是  
  CView*的指针.您再试一试。Top

5 楼fengchang(everate)回复于 2001-02-14 15:15:00 得分 10

有没有强制类型转换,就是加上(CDemo_DevStudioView   *)(pFrame->GetActiveFrame()->GetActiveView())—>Navigate("......");刚才我为了说明问题没有加上。其实返回的是  
  CView*的指针.您再试一试。Top

6 楼zaiqian(zaiqian)回复于 2001-02-14 15:34:00 得分 0

我照着xyzboat的方法做了一下。  
  CDemo_DevStudioView   *pView   =   (CDemo_DevStudioView   *)pFrame->GetActiveView();  
  上面这句是错的,那么现在我该怎么办?  
  谢谢。  
  Top

7 楼snowglede(雪鹰)回复于 2001-02-14 15:50:00 得分 0

如果是多文档,GetActiveView()不一定返回你所需要的视,你需要检测所有的视,可用以下宏来投掷到你需要的视。  
   
  DYNAMIC_DOWNCAST(   class,   pointer   )  
  ----------------------  
  提供一个合适的方法来投掷一个指针到一个类对象(当投掷是合法),宏将投掷一个指针参数到一个class参数类型的一个对象。  
  如果被参考的对象是指定类的同族,宏返回一个合适的指针。如果不合法,则返回NULL。Top

8 楼zaiqian(zaiqian)回复于 2001-02-14 16:23:00 得分 0

谢谢fengchang。  
  这样用就正确了。  
  非常的感谢。  
  (CDemo_DevStudioView   *)(pFrame->GetActiveFrame()->GetActiveView())—>Navigate("......");Top

9 楼fengchang(everate)回复于 2001-02-14 17:09:00 得分 0

您感谢我,那么请您给我相应的分值。Top

10 楼northsnake(开发大西部)回复于 2001-02-14 19:58:00 得分 0

听课Top

相关问题

  • 怎样得到视图指针?
  • 如何得到视图类的指针??
  • 分割视图中,怎样获得其中一个视图的指针。
  • 如何在视图中得到菜单的指针
  • 在多文档里如何得到ChildFrame里的视图指针?
  • 如何得到指向视图的指针?
  • 怎样指向视图类对象的指针?
  • 怎样从CMainFrm中获得视图指针?
  • 在多文档程序中如何从一个视图中得到另一个视图的指针-100分
  • 请问我得到了一个视图的指针,如何更新该视图,而不更新其他的

关键词

  • 视图
  • 指针
  • 文档
  • devstudioview
  • cdemo
  • getactiveview
  • pframe
  • getactiveframe
  • ondblclk
  • 投掷

得分解答快速导航

  • 帖主:zaiqian
  • xyzboat
  • fengchang
  • fengchang

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo