我用BCG Wizard在6.0下面自动生成一个类似于visual stduio的界面,左面有一个树状结构,CTreeCtrl,但是如何让它响应鼠标呢?用哪一个函数.
class CWorkspaceBar : public CBCGPDockingControlBar
{
public:
CWorkspaceBar();// Attributes
protected:
CTreeCtrl m_wndTree;// Operations
public:
如上所示,它的基类是一个控件,如果用OnLButton只能响应它的bar,不能响应内部

解决方案 »

  1.   

    void CWorkspaceBar::OnContextMenu(CWnd* pWnd, CPoint point) 
    {
    CTreeCtrl* pWndTree = (CTreeCtrl*)m_wndTree;
    ASSERT_VALID (pWndTree);
    CMenu menu;
    if (point != CPoint (-1, -1))
    {
    //---------------------
    // Select clicked item:
    //---------------------
    CPoint ptTree = point;
    pWndTree->ScreenToClient (&ptTree); HTREEITEM hTreeItem = pWndTree->HitTest (ptTree);
    if (hTreeItem != NULL)
    {
    pWndTree->SelectItem (hTreeItem);
           pWndTree->SetFocus ();
    return;
    }
    }
    }
      

  2.   

    的确是OnContextMenu.
    不过楼上的代码没用。
    因为BCG屏蔽了这些代码,如果你这样写的话,会同时弹出两个Menu的。具体的代码楼主去参考OutlookDemo的代码,里面有如何屏蔽BCG的底层默认的Context Menu.:)
      

  3.   

    同意alvachien(苦心人) 
    :)
      

  4.   

    相应CTree的ONCLICK消息就可以了