VC 给列表框添加【右键按键菜单】功能

1.在项目资源文件中加入一个新的Menu资源,作为右键点击弹出的菜单。
并在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函数,添加响应的程序代码即可。

你可能感兴趣的:(VC 给列表框添加【右键按键菜单】功能)