我在VS2005的对话框模式中, 放一个list control控件, 想增加鼠标在该控件上时候, 单击右键弹出一个菜单。
现在我在该对话筐中增加了.void page2::OnRButtonDown(UINT nFlags, CPoint point) 右键响应消息。
现在是当我鼠标不在control list上单击右键回进入该响应函数,一滑到list control控件上就不响应该函数。
求教
现在我在该对话筐中增加了.void page2::OnRButtonDown(UINT nFlags, CPoint point) 右键响应消息。
现在是当我鼠标不在control list上单击右键回进入该响应函数,一滑到list control控件上就不响应该函数。
求教
需要派生:
class CMyListCtrl : public CListCtrl
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
另外WM_NCRBUTTONDBCLK没有看到有NM_RCLICK消息啊
VS2008 就是控件属性框最上面选择事件,然后在下面去找就好了。
然后就是在响应函数内面添加你想干的事。还一个想法,或者说是思路,我没有去验证。说下,LZ看着自己实际情况考虑用不用吧就是在VM_RCLICK的响应函数:(void page2::OnRButtonDown(UINT nFlags, CPoint point))
中添加一个过滤就好了, 条件判断下,
可以是你的控件ID。
可以是你鼠标点击的point的区域,if(m_rcBtn.PtInRect(point))
也可以自己认为一个合适的条件。 这样应该就不会在控件外面右键也弹出响应对话框
这个新的类(称为派生自CListCtrl的类,具有CListCtrl的全部功能),你给它附加或改变(重载)一些东西1、添加一些与菜单创建相关的变量(项目,可能是一个字符串数组:CStringArray m_astrMenuItem;)
2、重载OnRButtonDown,在其中写上菜单创建与显示相关的代码,当用户选择菜单项后,发送一个消息给list的父窗口(page2),这个消息由你自定义,当然父窗口(page2)需要有一个响应该消息的函数3、你在page2建立的listCtrl,做一个关联的控件变量(m_list),在page2的头文件中,手工将变量类型改为(CListCtrl -> CMyListCtrl),在page2的初始化中,为m_list添加菜单的属性及项目定义瞧、MFC写界面,做一丁点事,就得费一老鼻子劲,这也是VC的乐趣所在:)