请问vc中如何获得其它类的变量和函数 我现在遇到一个问题,我想在一个cformview类中调用另一个cformview类的变量和函数,一开始我用了指针,编译了说是错误,还有人建议我用句柄,请问高手,有何高见呢,能附上程序好吗,谢了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 什么错误呢?是不是没有 #include "XXXDlg.h" 只能用静态成员函数或成员变量。但你说的“一个cformview类中调用另一个cformview类的变量和函数”,意思不明白,两个类名字相同,怎么会是两个不同的类呢,你的意思是不是在某类的一个实例中访问另外一个实例的成员或函数,这样的话,用静态可能达不到你的要求,因为所有实例共享所有的静态量。 想法没错,只要得到了另一个类的指针,就可以得到你想要的数据,就像Doc/View结构里View要用到Doc的数据一样。问题的关键在于如何正确地得到其它类的指针,指针操作很简单,就是一个->操作符。你把错误贴出来大家看一下才好判断错误在哪里啊 视图类之间互相获得指针的方法:就是用文档类作中转,先用1的方法得到文档类的指针,再用2的方法,以文档类的视图定位函数取得另一个视图类。同样,可以实现成一个函数: (假设要从CTestAView中取得指向其它视图类的指针) CView* CTestAView::GetView(CRuntimeClass* pClass) { CTestDoc* pDoc=(CTestDoc*)GetDocument(); CView* pView; POSITION pos=pDoc->GetFirstViewPosition(); while(pos!=NULL) { pView=pDoc->GetNextView(pos); if(pView->IsKindOf(pClass)) break; } if(!pView->IsKindOf(pClass)) return NULL; return pView;} 这个函数和2中的GetView()相比,一是多了第一句以取得文档类指针,二是在GetFirstViewPosition()和GetNextView()前加上了文档类指针,以表示它们是文档类成员函数。 有了此函数;当要从CTestAView中取得CTestBView的指针时,只需如下: CTestBView* pTestbView=(CTestView*)GetView(RUNTIME_CLASS(CTestBView));请问缺少什么呢? 可不可以做到: 不加信任站点直接访问ocx CHtmlCtrl 请问一个多线程访问socket的问题,大家帮我看看怎么解决啊? 在VC中如果在程序中动态改变静态文本的内容? 很急的!在DLL中写DAT文件的错误! 寻求类似SNMP的思路!来者有分! 如何提高应用程序的优先级? 誰知道用VC怎么截获鼠标点击的,送你100分 多文档/视图中激活不同视图的问题 关于游戏汉化(拦截API) 请问VC里面有没有控件是做超联接的? 如何向dll动态库中传递一个结构体数组为参数(在线等待)
但你说的“一个cformview类中调用另一个cformview类的变量和函数”,意思不明白,两个类名字相同,怎么会是两个不同的类呢,你的意思是不是在某类的一个实例中访问另外一个实例的成员或函数,这样的话,用静态可能达不到你的要求,因为所有实例共享所有的静态量。
你把错误贴出来大家看一下才好判断错误在哪里啊
(假设要从CTestAView中取得指向其它视图类的指针)
CView* CTestAView::GetView(CRuntimeClass* pClass)
{ CTestDoc* pDoc=(CTestDoc*)GetDocument();
CView* pView;
POSITION pos=pDoc->GetFirstViewPosition();
while(pos!=NULL)
{
pView=pDoc->GetNextView(pos);
if(pView->IsKindOf(pClass))
break;
}
if(!pView->IsKindOf(pClass))
return NULL;
return pView;}
这个函数和2中的GetView()相比,一是多了第一句以取得文档类指针,二是在GetFirstViewPosition()和GetNextView()前加上了文档类指针,以表示它们是文档类成员函数。
有了此函数;当要从CTestAView中取得CTestBView的指针时,只需如下:
CTestBView* pTestbView=(CTestView*)GetView(RUNTIME_CLASS(CTestBView));
请问缺少什么呢?