首先介紹,有兩種方式來(lái)實(shí)現(xiàn)。
方法1:通過(guò)自己編寫代碼來(lái)實(shí)現(xiàn)。
步驟:
1,添加一個(gè)菜單Menu,其中,由于是右鍵菜單,所以只能有一列其作用,經(jīng)過(guò)我的實(shí)踐,如果有多列的話,只能夠第一列起作用,而后面的幾列都不能顯示,那么,如果要實(shí)現(xiàn)多個(gè)菜單怎么辦?需要添加多級(jí)目錄,具體來(lái)說(shuō)就是在第一列中添加多行,每一行在添加子菜單,可以設(shè)計(jì)多級(jí)菜單,利用ID來(lái)區(qū)分。注意,要新建下一級(jí)菜單的話,需要選中“Pop Up”選項(xiàng)。
2,實(shí)現(xiàn)代碼的編寫。在Classwizard中,在View(特別注意是這個(gè)類下面,而不是CMainFrame下面)實(shí)現(xiàn)WM_RBUTTONDOW的消息的函數(shù)。
添加下面的這個(gè)代碼:
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中的參數(shù)就是新建的那個(gè)菜單的ID。
3.添加想要的消息函數(shù)。每選中一個(gè)菜單項(xiàng),都要由對(duì)應(yīng)的函數(shù),這個(gè)就是我們個(gè)性化的設(shè)計(jì),需要在View下面找到這些消息,然后對(duì)應(yīng)的ID的消息,產(chǎn)生對(duì)應(yīng)的函數(shù),然后在函數(shù)中添加相應(yīng)的響應(yīng)。比如這里僅僅是一個(gè)輸出的Message。
void CTest7_3View::OnMenu11()
{
// TODO: Add your command handler code here
MessageBox("菜單1");
}
至此,就完成了全部的步驟。。。。
===============================================================================================================================
下面講解第二種方法,利用現(xiàn)有的工具生成。
Project-----Add to Project ------Compenents and Controls-----Visual C+ Compenents----Pop Up Menu-----
選中后insert后,就會(huì)出現(xiàn)相應(yīng)的代碼。然后運(yùn)行,就會(huì)出現(xiàn)對(duì)應(yīng)的菜單了。
要修改的話,只需要添加ID,然后添加ID對(duì)應(yīng)的消息就可以了。而實(shí)現(xiàn)那個(gè)右鍵菜單的函數(shù)代碼,根本不需要你來(lái)編寫。
此種方法,減輕了工作量,僅僅需要你編寫菜單對(duì)應(yīng)的代碼而已,標(biāo)記簡(jiǎn)單,而且不容易出錯(cuò)。在自己編寫右鍵菜單的時(shí)候,很容易出現(xiàn)錯(cuò)誤,造成右鍵不出菜單或者出錯(cuò)的情況。而一旦右鍵出了菜單,編寫菜單項(xiàng)代碼就是比較容易的事情了。。。
posted on 2010-02-10 17:21
deercoder 閱讀(353)
評(píng)論(0) 編輯 收藏 引用