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