在CView类中创建树形控件

steed_jet 2005-08-09 02:31:19
本人刚刚学习VC++不久,属于后学末进。遇到一个问题请各位高人指教。在一个CView派生类中创建树形控件,编译没有问题,跟踪显示创建成功,但是就是没有显示出树。部分代码如下:
int CNavigBar::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

//
m_imageList.Create (IDB_IL_CLASS, 16, 1, RGB(0,255,0));
//variable declear
CRect Rect(255,300,255,300);
//function body
this->GetClientRect( &Rect );

DWORD dwStyle = TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT|
WS_CHILD|TVS_SHOWSELALWAYS|WS_VISIBLE;

m_wndTree.Create(dwStyle,Rect,this,IDC_TREE_CTRL);//IDC_TREE_CTRL在资源管理其
//中创建
m_wndTree.SetImageList (&m_imageList, TVSIL_NORMAL);//m_imageList资源没有问题
m_htmParent = m_wndTree.InsertItem("树根");
m_wndTree.SetItemState( m_htmParent, TVIS_BOLD, TVIS_BOLD );
m_wndTree.ShowWindow(SW_SHOW);
m_wndTree.UpdateWindow();

return 0;
}
其中
m_wndTree,
m_imageList在头文件声明如下:
public:
CNavTreeCtrl m_wndTree;
CImageList m_imageList;
其中
CNavTreeCtrl是自定义类
部分声明如下:
class CNavTreeCtrl : public CTreeCtrl
{
// Construction
public:
CNavTreeCtrl();

// Attributes
public:
.........

}

愁煞人。费了九牛二虎之力,终于程序没有了错误,可是就是无法正常的显示,希望高手指点迷津。
...全文
139 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
steed_jet 2005-08-10
多谢二位的热心帮助,在下终于解决了这个问题。解决办法大概是这样的:
首先,映射了WM_SIZE消息,重载了OnSize(UINT nType, int cx, int cy)函数,在这个函数里调用了m_wndTree.SetWindowPos(/*参数列表忽略*/)函数,当然此前要对SetWindowPos函数各个参数提前设置一下,在这里不用详述。最后问题终于解决,可以显示出这个树!
感谢上帝,感谢两位指点。
回复
linur 2005-08-09
检查你向导生成的DoDataExchange函数里有没有
DDX_Control(pDX, IDC_TREE_CTRL, m_wndTree);
回复
caocheng8230 2005-08-09
要设置该TREE控件的属性为子窗体,不然会出错,你试试看看
回复
发帖
界面
创建于2007-09-28

1.5w+

社区成员

VC/MFC 界面
申请成为版主
帖子事件
创建了帖子
2005-08-09 02:31
社区公告
暂无公告