【求助】关于无法获得列表视图指针的问题

baidu_27215509 2015-05-07 09:06:51
最近使用VC2010做界面,遇到一个问题,想请教一下大家。
界面如下图,通过想点击左侧树节点更新中间的列表,中间列表视图CtesttView的基类是CListView。


左侧树视图对应的类CViewTree中添加了响应OnTvnSelchanged,可以正常响应::AfxMessageBox( str);弹出对话框。
CtesttView中添加了函数refreshlist(CString listname), OnInitialUpdate()中调用refreshlist函数可以正常显示表格,
然而在CViewTree中,语句CtesttView *pRight=(CtesttView*)pMain->GetActiveView();无法获得表格视图的指针,从而导致pRight->refreshlist(str);无法执行。

请教一下大家如何才能正确的获得中间列表视图的指针,或者有什么方法可以更新中间的列表呢,谢谢!

代码如下:
void CViewTree::OnTvnSelchanged(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reint erpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: Add your control notification handler code here
CTreeCtrl* pTreeCtrl = this;
HTREEITEM hSelect = pTreeCtrl->GetSelectedItem();
CString str=pTreeCtrl->GetItemText (hSelect);
::AfxMessageBox( str);

CMainFrame *pMain=(CMainFrame*)AfxGetMainWnd();
CtesttView *pRight=(CtesttView*)pMain->GetActiveView();
pRight->refreshlist(str);

*pResult = 0;
}
...全文
231 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2015-06-12
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
rxguoblp 2015-05-08
  • 打赏
  • 举报
回复
那就定义一个全局或者静态的指针变量CtesttView *pRight,在OnInitialUpdate()中位置赋值,然后不就是随处可用了?!
baidu_27215509 2015-05-07
  • 打赏
  • 举报
回复
不好意思,还是没有明白什么意思。这个是VC2008中直接创建的多文档的程序,左侧的树和右侧的属性框都是CDockablepane,中间的是Ctesttview,把基类设置为了CListView。左侧的CDockeablepane下放了一个树,也就是CViewtree,现在是想点击树,CtesttView 中的表进行更新,然而在CViewtree中总是不能获取CtesttView 的指针
schlafenhamster 2015-05-07
  • 打赏
  • 举报
回复
是 CDockablePane m_Panes[5]; 吧
baidu_27215509 2015-05-07
  • 打赏
  • 举报
回复
可能我没有说清楚,我没有使用拆分窗口,左侧的树是放在CDockablePane里的,所以GetPane(0,1)没法用。
schlafenhamster 2015-05-07
  • 打赏
  • 举报
回复
即 CHMI_manView* CMainFrame::GetRightPane() { CWnd* pWnd = m_wndSplitter.GetPane(0, 1); CHMI_manView* pView = DYNAMIC_DOWNCAST(CHMI_manView, pWnd); return pView; }
schlafenhamster 2015-05-07
  • 打赏
  • 举报
回复
CtesttView *pRight=(CtesttView*)pMain->GetPane(0,1);
baidu_27215509 2015-05-07
  • 打赏
  • 举报
回复
不是的,右侧的是另一个View,跟Ctesttview没关系啊
schlafenhamster 2015-05-07
  • 打赏
  • 举报
回复
"右侧的属性框都是CDockablepane,中间的是Ctesttview," 就是说 右侧的CDockablepane (m_pane ),放了个 Ctesttview ?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧