自己動手寫類似酷狗播放器(4)_滑鼠右鍵選單的新增

YunShell發表於2013-08-11
     在播放器中,我們希望在播放列表中,可以右鍵有選單選擇,比如播放,上一首,下一首,停止刪除什麼的。那是如何達到這個效果的呢?
    目標:在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;
		}

相關文章