VC添加鼠标右键菜单
用下面的方法添加了一个右键菜单:
#define ID_MENUITEM_STOP 0
#define ID_MENUITEM_PLAY 1
#define ID_MENUITEM_MAX 2
void CrightmenuDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
GetCursorPos( & point );
CMenu menuPopup;
menuPopup.CreatePopupMenu();
if(m_playStatus == PLAY)
{
menuPopup.AppendMenu( MF_STRING, ID_MENUITEM_STOP, _T( "Stop" ) );
menuPopup.AppendMenu( MF_SEPARATOR );
menuPopup.AppendMenu( MF_STRING, ID_MENUITEM_MAX, _T( "暂停" ) );
menuPopup.AppendMenu( MF_SEPARATOR );
}
else
{
menuPopup.AppendMenu( MF_STRING, ID_MENUITEM_PLAY, _T( "Play" ) );
menuPopup.AppendMenu( MF_SEPARATOR );
}
int ncmd = ( int ) menuPopup.TrackPopupMenu(
TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_RETURNCMD,
point.x, point.y,
this);
switch( ncmd )
{
case ID_MENUITEM_STOP:
{
m_playStatus = STOP;
MessageBox("STOP");
}
break;
case ID_MENUITEM_PLAY:
{
m_playStatus = PLAY;
MessageBox("PLAY");
}
break;
case ID_MENUITEM_MAX:
{
m_playStatus = PLAY;
MessageBox("MAX");
}
break;
default:
break;
}
menuPopup.DestroyMenu();
CDialog::OnRButtonDown(nFlags, point);
}
发现电击右键弹出菜单后,就算不选中菜单,在窗口上任意位置电击,都触发了菜单的第一个选项,也就是点击了第一个菜单。也就是说只要我弹出菜单,总是会触发一个点击事件,而不能放弃选择。
任务比较紧,所以没仔细的去看各个选项参数,拜托大家了。
[解决办法]
TrackPopupMenu默认不选择的时候返回FALSE,与你的ID_MENUITEM_STOP冲突了。
改成下面的ID。
#define ID_MENUITEM_STOP 1#define ID_MENUITEM_PLAY 2#define ID_MENUITEM_MAX 3