首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

小弟我想在view类中加入树型控件,应该如何做

2012-01-21 
我想在view类中加入树型控件,应该怎么做?基于单文档工程。像类似于资源管理器的界面我用静态分割窗口的方法

我想在view类中加入树型控件,应该怎么做?
基于单文档工程。像类似于资源管理器的界面

我用静态分割窗口的方法将客户端窗口分为leftview和rightview,两个子窗口都是基于CView基类,现在我想在左边窗口中加入树型控件,不知道该如何加,是不是只能在dialog中才能添加控件,如果是这样应该怎么做呢?谢谢

[解决办法]
在View的OnCreate中调用CTreeCtrl::Create
[解决办法]
加入。。。切分一下,加个TreeView吧~
[解决办法]
这个问题有点复杂,我曾为这样的问题头大!
首先告诉你,不是只能在dialog中才能添加控件,在View里也可以。
1,建一个自定义的树类,继承CTreeCtrl,注意在消息处理的时候加上DEFAULT_REFLECTION_HANDLER(),做一个消息反射,对应的在你CMainFrame中加上REFLECT_NOTIFICATIONS(),接受这个消息反射。接受的消息用
NOTIFY_CODE_HANDLER(TVN_SELCHANGED, OnSelChanged) //OnSelChanged为你的消息处理函数。
2,在自定义的类中写一个初始化树的函数,写入你根节点什么的
void Tree::InitTreeView( HWND hWndCtl)
{
Create( hWndCtl, rcDefault, NULL, WS_CHILD |
WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | TVS_HASLINES |
TVS_LINESATROOT | TVS_SHOWSELALWAYS | TVS_HASBUTTONS |
WS_EX_CLIENTEDGE,0,(HMENU)IDC_TREE);

merRoot =this-> InsertItem( STR_MERDISCOUNT, TVI_ROOT, NULL);
competeRoot =this-> InsertItem( STR_COMPETE, TVI_ROOT, NULL);
this-> Expand( merRoot);
}
然后再你CMainframe中

GetClientRect( &rcDefault );
m_hWndClient = m_wndVertSplit.Create( m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE );

if( !m_wndTree)// m_wndTre是自定义数的对象
m_wndTree.InitTreeView( m_wndVertSplit);

m_wndVertSplit.SetSplitterPanes( m_wndTree, NULL);
m_wndVertSplit.SetSplitterPos( 200);
这个你会看到在你的主窗口中看到一个分割窗口,左边是一个你初始的树,右边为空白

热点排行