请教诸位高手一个关于动态创建CTreeCtrl控件后,如何使该控件来响应消息的问题
请教诸位高手一个问题,是关于动态创建CTreeCtrl控件后,如何使该控件来响应消息的。
我建立了一个MDI窗体,为了能够获取类似VC界面的效果,就按照一些网络资源的方法,使用了
一个被称之为CSizingControlBar的类(派生自CControlBar).同时,我在MainFrm的创建过程中
动态创建了CTreeCtrl控件。下面是相关的一些代码:
if (!m_wndCoolBar.Create(_T("命令导航栏"), this, 123))
{
TRACE0("Failed to create mybar\n");
return -1; // fail to create
}
//创建树状控件
if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE|
TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
CRect(0, 0, 0, 0), &m_wndCoolBar, ID_Tree_View))
{
TRACE0("Failed to create instant bar child\n");
return -1;
}
m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
上面分别是创建命令导航栏和CTreeCtrl控件的代码。命令导航栏所属窗体是MainFrm。
现在,我想让CtreeCtrl控件能够响应鼠标单击事件。
一种方法是定义CTreeCtrl控件的派生类,在派生类中些OnClick事件。然而,如果把Click事件
在派生类中写死的话,该派生类将不能适用其他情况,因此我不愿意使用。
另外,也听人说过子类化、或者直接在手工写消息映射的函数,或者处理PreTranslateMessage()
可是,这些方法我就不会了。如何让动态创建的CTreeCtrl控件响应消息呢?
希望能得到大家的帮助,越详细越好。这个问题不解决,小弟我很难睡着觉了……
CTreeCtrl的ID在创建时候指定为ID_Tree_View(100).谢谢。