用下面的方法添加了一个右键菜单:#define ID_MENUITEM_STOP   0
#define ID_MENUITEM_PLAY   1
#define ID_MENUITEM_MAX   2void 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);
}
发现电击右键弹出菜单后,就算不选中菜单,在窗口上任意位置电击,都触发了菜单的第一个选项,也就是点击了第一个菜单。也就是说只要我弹出菜单,总是会触发一个点击事件,而不能放弃选择。
任务比较紧,所以没仔细的去看各个选项参数,拜托大家了。