TREELIST上怎么做右键的弹出菜单?

zdkjob 2005-09-13 10:57:35
我的代码如下,老是非法,咋整?

void CTreeDataDlg::OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NM_TREEVIEW* pNMListView = (NM_TREEVIEW*)pNMHDR;

DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );

CMenu menu;
VERIFY( menu.LoadMenu( IDR_MENU1 ) );
CMenu* popup = menu.GetSubMenu(0);
ASSERT( popup != NULL );
popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );

*pResult = 0;
}
...全文
243 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐鹦鹉 2005-09-13
  • 打赏
  • 举报
回复
那只有一个可能,你的菜单有问题。
你的菜单资源是什么样的?
zdkjob 2005-09-13
  • 打赏
  • 举报
回复
?照它例子做的,还是一样..
phoenix96_2000 2005-09-13
  • 打赏
  • 举报
回复
看着个kb:
How To Display a Context Menu for CTreeCtrl:

http://support.microsoft.com/default.aspx?scid=kb;en-us;222905
zdkjob 2005-09-13
  • 打赏
  • 举报
回复
popup的值是空的
zdkjob 2005-09-13
  • 打赏
  • 举报
回复
我跟踪过,point这里没问题,程序到了ASSERT( popup != NULL );才非法
快乐鹦鹉 2005-09-13
  • 打赏
  • 举报
回复
The GetMessagePos function retrieves the cursor position for the last message retrieved by the GetMessage function.

To determine the current position of the cursor, use the GetCursorPos function.
用GetCursorPos吧
zdkjob 2005-09-13
  • 打赏
  • 举报
回复
高手果然是高手

已经解决了,是我的菜单有问题,代码无误

zdkjob 2005-09-13
  • 打赏
  • 举报
回复
欲哭无泪
teli_eurydice 2005-09-13
  • 打赏
  • 举报
回复
重载 OnContextMenu
zdkjob 2005-09-13
  • 打赏
  • 举报
回复
菜单在VC图形界面中做的啊,简单的几项,当然,没有忘记选view as popup

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧