您的位置:首页 > 其它

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

2013-01-08 15:00 232 查看
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函数,添加响应的程序代码即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: