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'項被按下"));

}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM