首先介绍,有两种方式来实现。
方法1:通过自己编写代码来实现。
步骤:
1,添加一个菜单Menu,其中,由于是右键菜单,所以只能有一列其作用,经过我的实践,如果有多列的话,只能够第一列起作用,而后面的几列都不能显示,那么,如果要实现多个菜单怎么办?需要添加多级目录,具体来说就是在第一列中添加多行,每一行在添加子菜单,可以设计多级菜单,利用ID来区分。注意,要新建下一级菜单的话,需要选中“Pop Up”选项。
2,实现代码的编写。在Classwizard中,在View(特别注意是这个类下面,而不是CMainFrame下面)实现WM_RBUTTONDOW的消息的函数。
添加下面的这个代码:
void CTest7_3View::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *pPopup = menu.GetSubMenu(0);
ClientToScreen(&point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
CView::OnRButtonDown(nFlags, point);
}
上面loadMenu中的参数就是新建的那个菜单的ID。
3.添加想要的消息函数。每选中一个菜单项,都要由对应的函数,这个就是我们个性化的设计,需要在View下面找到这些消息,然后对应的ID的消息,产生对应的函数,然后在函数中添加相应的响应。比如这里仅仅是一个输出的Message。
void CTest7_3View::OnMenu11()
{
// TODO: Add your command handler code here
MessageBox("菜单1");
}
至此,就完成了全部的步骤。。。。
===============================================================================================================================
下面讲解第二种方法,利用现有的工具生成。
Project-----Add to Project ------Compenents and Controls-----Visual C+ Compenents----Pop Up Menu-----
选中后insert后,就会出现相应的代码。然后运行,就会出现对应的菜单了。
要修改的话,只需要添加ID,然后添加ID对应的消息就可以了。而实现那个右键菜单的函数代码,根本不需要你来编写。
此种方法,减轻了工作量,仅仅需要你编写菜单对应的代码而已,标记简单,而且不容易出错。在自己编写右键菜单的时候,很容易出现错误,造成右键不出菜单或者出错的情况。而一旦右键出了菜单,编写菜单项代码就是比较容易的事情了。。。
posted on 2010-02-10 17:21
deercoder 阅读(334)
评论(0) 编辑 收藏 引用