void CMyTreeCtrl::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值 CMenu menu;
CMenu* pMenu; menu.LoadMenu(IDR_POPUP);
pMenu = menu.GetSubMenu(0); POINT pt;
GetCursorPos(&pt); pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL | TPM_NONOTIFY | TPM_RETURNCMD, pt.x, pt.y, this);
menu.DestroyMenu(); CTreeCtrl::OnRButtonDown(nFlags, point);
}void CMyTreeCtrl::OnPopupAdd()
{
// TODO: 在此添加命令处理程序代码
AfxMessageBox("dkfjk");
}为什么不响应呢?

解决方案 »

  1.   

    如下:pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL | TPM_NONOTIFY | TPM_RETURNCMD, pt.x, pt.y, this/*这里错了,应是Frame窗口的指针*/);
      

  2.   

    在Frame中映射菜单消息
    然后把this改为Frame的指针
      

  3.   

    我把TPM_NONOTIFY | TPM_RETURNCMD这两个属性去除就好了。原来是这样啊。
      

  4.   

    还有个问题。我把菜单处理放在OnRButtonDown里,它又不响应了,很奇怪,双击右键的时候响应,好像先处理了一个别的什么消息。这是怎么回事呢?