关于ListBox右键菜单问题

suxiaolsx 2011-06-15 07:04:11
对话框里有多个ListBox控件,要实现每个ListBox控件右击都能弹出菜单,但怎样判断到底是哪个ListBox控件响应的右击弹出菜单操作呢???
...全文
170 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
suxiaolsx 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 visualeleven 的回复:]

引用 3 楼 suxiaolsx 的回复:
引用 1 楼 visualeleven 的回复:

你重写CListCtrl类,添加处理WM_CONTEXTMENU消息,::GetDlgCtrlID(HWND_LISTBOX);根据ID号区分

这样写的确解决了ID判断问题,但是又应该怎样把这个ID与主对话框类关联起来呢,在主对话框里实现对这个ID控件的操作。想过主对话框调用这个类的OnC……
[/Quote]
恩,果然有用,实现了,大神
johnroot 2011-06-16
  • 打赏
  • 举报
回复

BOOL CMdialog::PreTranslateMessage(MSG* pMsg)//重载PreTranslateMessage
{
switch(pMsg->message)
{
case WM_RBUTTONDOWN:
CWnd* pWnd = GetDlgItem(IDC_LISTBOX1);
if( pWnd && pWnd->GetSafeHwnd() == pMsg->hwnd)
{
...........
}
CWnd* pWnd = GetDlgItem(IDC_LISTBOX2);
if( pWnd && pWnd->GetSafeHwnd() == pMsg->hwnd)
{
...........
}
}
}
向立天 2011-06-16
  • 打赏
  • 举报
回复
获取listbox的rect
判断鼠标是否在其内
Eleven 2011-06-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 suxiaolsx 的回复:]
引用 1 楼 visualeleven 的回复:

你重写CListCtrl类,添加处理WM_CONTEXTMENU消息,::GetDlgCtrlID(HWND_LISTBOX);根据ID号区分

这样写的确解决了ID判断问题,但是又应该怎样把这个ID与主对话框类关联起来呢,在主对话框里实现对这个ID控件的操作。想过主对话框调用这个类的OnContextMenu函数,但是函数的参数不知道该……
[/Quote]
你是想在主对话框类中添加CListBox的右键弹出菜单吧...

BOOL CADlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(WM_RBUTTONDOWN == pMsg->message)
{
HWND hWnd = pMsg->hwnd;
int nId = ::GetDlgCtrlID(hWnd);
switch(nId)
{
case IDC_LISTBOX1:
{
...
TrackPopupMenu(....);
}
break;

case IDC_LISTBOX2:
{
...
TrackPopupMenu(....);
}
break;

....
default:
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}

suxiaolsx 2011-06-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 visualeleven 的回复:]

你重写CListCtrl类,添加处理WM_CONTEXTMENU消息,::GetDlgCtrlID(HWND_LISTBOX);根据ID号区分
[/Quote]
这样写的确解决了ID判断问题,但是又应该怎样把这个ID与主对话框类关联起来呢,在主对话框里实现对这个ID控件的操作。想过主对话框调用这个类的OnContextMenu函数,但是函数的参数不知道该怎么写。
yjueqtd 2011-06-15
  • 打赏
  • 举报
回复
GetDlgItem(ID_LISTBOX);来判断
Eleven 2011-06-15
  • 打赏
  • 举报
回复
你重写CListCtrl类,添加处理WM_CONTEXTMENU消息,::GetDlgCtrlID(HWND_LISTBOX);根据ID号区分

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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