CListCtrl的响应鼠标右键单击的问题 在CListCtrl中的一项的子项上单击鼠标右键,为何直接用WM_RBUTTONUP消息,确不响应此事件,而按住鼠标右键拖动项确可以响应此事件呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 右键点击CListCtrl的item弹出菜单添加CListCtrl控件的NM_RCLICK消息相应函数void CMyDlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult){NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;if(pNMListView->iItem!=-1){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;}你看看这个吧 CListCtrl从CWnd继承,那么消息处理过程就按照CWnd方式,在CWnd::OnWndMsg中。CWnd处理消息的顺序是:第一步判断这个消息是不是WM_COMMAND,如果是,则调用OnCommand,然后退出CWnd::OnWndMsg。如果不是,则判断是不是WM_NOTIFY,如果是,则调用OnNotify,然后退出CWnd::OnWndMsg.之后才会去判断例如WM_RBUTTONUP这样的消息。当你右键点击列表的时候,实际发送了一个通知消息WM_NOTIFY,跳过了WM_RBUTTONUP。而当拖动的时候,发送的不是WM_NOTIFY。 此帖如能若泡泡,一直往上面窜,便好 求vc++6.0保存excel的问题 Frame类不能响应WM_CHAR消息 VC++6.0中MFC 单文档下的窗口分割问题? Activex,参数传入的汉字在英文系统下为乱码 ★★xdjm帮忙解决Ctrl+F4的问题★★ 同时对同一数据库的多张表添加记录 怎么在对话框上加一个这样的按钮? 那里有这些组件 CMainFrame与CView之间如何共享变量? 怎样给单文档里的任务栏加上背景图片?高手进之,在线等之 FreeImage_AppendPage 的用法
添加CListCtrl控件的NM_RCLICK消息相应函数
void CMyDlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;
if(pNMListView->iItem!=-1)
{
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;}你看看这个吧
CListCtrl从CWnd继承,那么消息处理过程就按照CWnd方式,在CWnd::OnWndMsg中。
CWnd处理消息的顺序是:
第一步判断这个消息是不是WM_COMMAND,如果是,则调用OnCommand,然后退出CWnd::OnWndMsg。
如果不是,则判断是不是WM_NOTIFY,如果是,则调用OnNotify,然后退出CWnd::OnWndMsg.
之后才会去判断例如WM_RBUTTONUP这样的消息。当你右键点击列表的时候,实际发送了一个通知消息WM_NOTIFY,跳过了WM_RBUTTONUP。
而当拖动的时候,发送的不是WM_NOTIFY。