右键菜单 如何将浮动的弹出式菜单限制在某一范围内弹出,例如某个对话框中的listctrl(列表控件)的内容区域(非列头)。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BOOL TrackPopupMenu ( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = 0 ); m_pListCtrl->GetClientRect( rect ),利用rect的位置控制x, y就可以了 BOOL TrackPopupMenuEx( HMENU hmenu, UINT fuFlags, int x, int y, HWND hwnd, LPTPMPARAMS lptpm );hwnd是谁的就在谁的里面弹出 使用函数:TrackPopupMenu 可以控制菜单显示的位置 新手上路,请多关照。fang_jb能否说的更详细点,hwnd如何获得,比如一个listctrl控件 CWnd::GetSafeHwnd()CListCtrl是从CWnd派生的,这样说总详细了吧 感谢fang_jb不厌其烦的回答。试了一下还不行,GetSafeHwnd()会出现运行错误(提示非法访问)。 CListCtrl m_list;CWnd *wnd;HWND hWnd=m_list.GetSafeHwnd();wnd=m_list.GetOwner();//GetWindow(GW_OWNER)CRect rect;m_list.GetWindowRect(&rect);CPoint point;CMenu menu;CMenu *ptrMenu;ptrMenu=new CMenu;menu.LoadMenu(IDR_MENU1);ptrMenu=menu.GetSubMenu(0);ptrMenu->EnableMenuItem(ID_MENU1,MF_BYCOMMAND|MF_GRAYED);ptrMenu->EnableMenuItem(ID_MENU2,MF_BYCOMMAND|MF_ENABLED);ptrMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, rect.left ,rect.top ,wnd,&rect);TrackPopupMenu函数的参数可以自己看看MSDN上面的解释 HWND hWnd=m_list.GetSafeHwnd();是多余的,你可以删除不要 bingbing所说的只能将右键菜单固定在m_list的左上脚,我要的是右键菜单跟着鼠标跑,但在超出listctrl控件的范围外不弹出。 我的问题已经解决,Add to project->components and controls->Visual c++ component->pop up menu,再在TrackPopupMenu的参数x 和y中限制菜单弹出的位置。 CSDN积分140分怎么就不能下载CSDN的资料??? 求:VC++下的调试指南!文章或书都行,或者电子文档,帮帮忙!谢谢 问一个继承的问题 ocx中怎么处理录音事件? 如何实现遥感图像的几何精校正? 安装VC出现的问题 望各位大虾出手相助,谢谢!! 如何禁止一个程序的运行?100分!!!! Win32应用程序怎样与*.sys交互 vc中的一个奇怪问题 动态创建FormView的问题! vc++6.0中,debug .cpp文件时,quick watch 里看不以static变量,有谁碰到过这个问题吗?
UINT nFlags,
int x,
int y,
CWnd* pWnd,
LPCRECT lpRect = 0 ); m_pListCtrl->GetClientRect( rect ),利用rect的位置控制x, y就可以了
HMENU hmenu,
UINT fuFlags,
int x,
int y,
HWND hwnd,
LPTPMPARAMS lptpm
);hwnd是谁的就在谁的里面弹出
fang_jb能否说的更详细点,hwnd如何获得,比如一个listctrl控件
CWnd *wnd;
HWND hWnd=m_list.GetSafeHwnd();
wnd=m_list.GetOwner();//GetWindow(GW_OWNER)
CRect rect;
m_list.GetWindowRect(&rect);
CPoint point;
CMenu menu;
CMenu *ptrMenu;
ptrMenu=new CMenu;
menu.LoadMenu(IDR_MENU1);
ptrMenu=menu.GetSubMenu(0);
ptrMenu->EnableMenuItem(ID_MENU1,MF_BYCOMMAND|MF_GRAYED);
ptrMenu->EnableMenuItem(ID_MENU2,MF_BYCOMMAND|MF_ENABLED);
ptrMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, rect.left ,rect.top ,wnd,&rect);
TrackPopupMenu函数的参数可以自己看看MSDN上面的解释
是多余的,你可以删除不要