并在Menu上面填上相应的响应的子菜单。
如图:
填好相应的ID值:
Caption -> ID
Menu -> IDR_MENU_BATCH_RCLICK
Edit Song -> ID_BATCH_MENU_EDIT_SONG
Delete Song -> ID_BATCH_MENU_DEL_SONG
2.在List控件的事件响应函数中,加入对"NM_RCLICK"消息的响应。
void KodBatchSongDlg::OnNMRclickListBactsong(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: 在此添加控件通知处理程序代码
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->iItem != -1)
{
DWORD dwPos = GetMessagePos();
CPoint point( LOWORD(dwPos), HIWORD(dwPos) );
CMenu menu;
VERIFY( menu.LoadMenu( IDR_MENU_BATCH_RCLICK ) );
CMenu* popup = menu.GetSubMenu(0);
ASSERT( popup != NULL );
popup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this );
}
}
其中,IDR_MENU_BATCH_RCLICK 为在资源文件中新添加的右键菜单弹出的Menu的ID.
3.添加子菜单的响应函数:
A.点击子菜单的某一项 -> "添加事件处理程序..." 。
B.在弹出的"事件处理程序向导"对话框中的类列表中选中List控件所在的类,
然后在消息类型中选择"COMMAND",函数处理程序名称可以自己编辑一下,
然后点击"添加编辑"。 这样就生成了一个子菜单点击响应的函数。
【此次界面操作,编译器会自动在响应的CPP文件中加入如下代码:
BEGIN_MESSAGE_MAP(KodBatchSongDlg, CDialog)
ON_COMMAND(ID_BATCH_MENU_EDIT_SONG, &KodBatchSongDlg::OnBatchMenuEditSong)
END_MESSAGE_MAP()
void KodBatchSongDlg::OnBatchMenuEditSong()
{
// TODO: 在此添加命令处理程序代码
}
并把OnBatchMenuEditSong()函数在类里面做一个声明。
】
4.填充OnBatchMenuEditSong函数,添加响应的程序代码即可。