如何响应动态创建的CFormView中树控件的事件?

bizzard 2002-03-16 05:03:47
在一个程序中,我扩展了一个CFormView类,动态创建了这个类的一个对象,我如何才能够响应用CTreeView::GetTreeCtrl()函数得到的控件的事件呢?因为这个控件没有ID所以不能用ClassWizzard的帮助来响应事件。

问题很急,多谢
...全文
117 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bizzard 2002-03-17
  • 打赏
  • 举报
回复
jiangsheng:
你好!
谢谢你上次对我的帮助,我简要描述一下我的做法,你看看有什么毛病:
我建了一个SDI工程,最后一步用的是一个CFormView作为基类,然后我又扩展了两个类CFormView和CTreeView,并且把这两个类,作为切分窗口(splitter window)的view来动态创建,创建的函数如下:
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
// create a splitter with 1 row, 2 columns
if (!m_wndSplitter.CreateStatic(this, 1, 2))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}

// add the first splitter pane - the default view in column 0
if (!m_wndSplitter.CreateView(0, 0,
RUNTIME_CLASS(CMyTreeView), CSize(130, 50), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}

// add the second splitter pane - an input view in column 1
if (!m_wndSplitter.CreateView(0, 1,
RUNTIME_CLASS(CMyFormView), CSize(0, 0), pContext))
{
TRACE0("Failed to create second pane\n");
return FALSE;
}

// activate the input view
SetActiveView((CView*)m_wndSplitter.GetPane(0,1));

return TRUE;
//return CFrameWnd::OnCreateClient(lpcs, pContext);
}

然后我对CMyFormView中的树控件进行了初始化,添加了一些项,这是我才发现,没有办法响应树的事件,你觉得应该怎么该才能既实现切分窗口,又能够响应树事件呢?

你有没有这方面的例程呢?

谢谢你的帮助

bizzard
charles_y 2002-03-17
  • 打赏
  • 举报
回复
假设你创建的树的ID 为IDC_TREE_MYTREE,
在BEGIN_MESSAGE_MAP和END_MESSAGE_MAP()之间加入
ON_NOTIFY(NM_CLICK, IDC_TREE_MYTREE,OnClickMyTree())

当然OnClickMyTree( NMHDR* pNMHDR, LRESULT* pResult )自己要手动加入并做出理了。
蒋晟 2002-03-17
  • 打赏
  • 举报
回复
你的创建树控件的代码在哪里?
蒋晟 2002-03-16
  • 打赏
  • 举报
回复
??
你不能在CFormView类中调用CTreeView::GetTreeCtrl
你创建这个窗口的时候要指定一个窗口ID,在FormView的OnNotify判断通知消息是否来自于同样的窗口ID,然后处理相应的通知。

1,658

社区成员

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

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