自己动手写类似酷狗播放器(4)_鼠标右键菜单的添加

本文详细介绍了如何在播放器的Listbox中添加鼠标右键菜单,包括创建菜单、获取鼠标位置、弹出菜单及响应操作的完整过程。通过使用Windows API函数如CreatePopupMenu、GetCursorPos和TrackPopupMenu等,实现播放、上一首、下一首、停止、删除等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     在播放器中,我们希望在播放列表中,可以右键有菜单选择,比如播放,上一首,下一首,停止删除什么的。那是如何达到这个效果的呢?
    目标:在Listbox中增加鼠标右键菜单功能

 步骤:

       a.用CreatePopupMenu()函数创建一个空菜单句柄,以后所有要添加的菜单条都是往这个句柄添加
       b.获得子菜单项的句柄(这样就可以整体插入)或者选择自己要插入的菜单条插入GetSubMenu,AppendMenu这两个函数。
       c. 获取当前鼠标的位置,就是点击哪里右键就在哪里显示菜单GetCursorPos()函数来获取。
       d.弹出菜单TrackPopupMenu(hpopupmenu,TPM_RIGHTBUTTON,point.x,point.y,0,hDlg_main,NULL);这个函数中hDlg_main是菜单所在的主对话框句柄,当用户点击弹出的菜单后,就向该窗口发送WM_COMMAND命令来响应菜单的操作。
下面的代码显示,如何右键弹出菜单:
	case WM_RBUTTONDOWN:  //右键按下
		{	
			POINT point; 
			GetCursorPos(&point);	//获取当前鼠标的位置
			HMENU hpopupmenu=CreatePopupMenu(); //创建一个弹出菜单
			HMENU hmenu_playmode=GetSubMenu(GetSubMenu(hmenu,0),2); //获取控制条目子菜单句柄
			AppendMenu(hpopupmenu,MF_STRING,IDM_PLAY,TEXT("播放"));
			AppendMenu(hpopupmenu,MF_STRING,IDM_PAUSEORSTART,TEXT("暂停/继续"));
			AppendMenu(hpopupmenu,MF_STRING,IDM_STOP,TEXT("停止"));
			AppendMenu(hpopupmenu,MF_SEPARATOR,NULL,NULL); //添加下划线
			AppendMenu(hpopupmenu,MF_POPUP,(UINT)hmenu_playmode,TEXT("播放模式"));
			AppendMenu(hpopupmenu,MF_SEPARATOR,NULL,NULL); //添加下划线
			AppendMenu(hpopupmenu,MF_STRING,IDM_DELE,TEXT("删除"));
			AppendMenu(hpopupmenu,MF_STRING,IDM_CLEARALL,TEXT("清空列表"));
			TrackPopupMenu(hpopupmenu,TPM_RIGHTBUTTON,point.x,point.y,0,hDlg_main,NULL);//弹出菜单
			return TRUE;
		}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值