怎样得到视图的指针?
怎样在一个类中写语句对视图进行操作。谢谢。下面的程序有错,请看看为什么。谢谢。
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




