1. 程式人生 > >VC++實現生成右鍵選單及新增圖示

VC++實現生成右鍵選單及新增圖示

用VC++實現彈出選單比較簡單,這裡介紹其中的一種來實現一個滑鼠右鍵彈出選單,效果如下圖所示:

 

 

步驟:

一、新建一個基於對話方塊的MFC應用程式-----PopMenu

二、新增一個選單資源------IDR_MENU1,並加幾個子項,如下

 

三、新增一個Bitmap資源------IDB_BITMAP1(可以自己繪製圖標,也可以匯入圖示)

      完成後專案的資源檢視如下

四、編寫程式碼

1、在對話方塊的標頭檔案CPopMenuDlg.h中新增宣告一個CMenu物件m_Menu

在OnInitDialog方法中呼叫LoadMenu方法,程式碼如下:

m_Menu.LoadMenu(IDR_MENU1);    //載入選單資源

2、為對話方塊 IDD_POPMENU_DIALOG 新增滑鼠右鍵單擊的訊息(WM_RBUTTONUP) 的處理函式---OnRButtonUp

3、編寫如下程式碼

複製程式碼

void CPopMenuDlg::OnRButtonUp(UINT nFlags, CPoint point)

{

 // TODO: 在此新增訊息處理程式程式碼和/或呼叫預設值

CMenu*pMenu=m_Menu.GetSubMenu(0);

CBitmap m_bitmap1;

CBitmap m_bitmap2;

m_bitmap1.LoadBitmapW(IDB_BITMAP1);

m_bitmap2.LoadBitmapW(IDB_BITMAP2);

pMenu->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap1,&m_bitmap1);

pMenu->SetMenuItemBitmaps(1,MF_BYPOSITION,&m_bitmap2,&m_bitmap2);

CRect rect;

ClientToScreen(&point);//將滑鼠單擊處的座標轉換為螢幕座標 rect.top=point.x;//將滑鼠當前橫座標作為彈出選單的左上角座標

rect.left=point.y;//將滑鼠當前縱座標作為彈出選單的左上角座標

pMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_VERTICAL,rect.top,rect.left,this,&rect);//顯示彈出選單

CDialogEx::OnRButtonUp(nFlags, point);

}

複製程式碼

 

4、在類嚮導中為每一個選單項的每一個”選單項”如”新增檔案”處理單擊事件。程式碼如下:

複製程式碼

void CPopMenuDlg::OnMenuHello()

{

MessageBox(_T("'hello'項被按下"));

}

 

 

void CPopMenuDlg::OnMenuWorld()

{

MessageBox(_T("'world'項被按下"));

}

複製程式碼