MFC對話框彈出上下文菜單並響應命令


主菜單在App里創建,主菜單響應函數不能在普通類中響應。
對話框中的右鍵菜單,如果把對話框指針傳進去。
則右鍵菜單命令可以在對話框類中實現。
1.新建sdi程序。
添加對話框資源IDD_DIALOG1
關聯類CDlg
添加菜單資源IDR_MENU1
2.主菜單的命令無法在對話框類中響應。
雖然可以添加響應函數,但是無法響應。
誰知道請告訴我,謝謝。
因為主菜單在App中創建,如圖:
如果有需求,可以用通吃的方法,向對話框發自定義消息。
3.對話框中的右鍵菜單(上下文菜單)的命令響應函數,
可以寫在對話框類中,條件是創建菜單的時候把對話框類指針傳進去。
4.以對話框類為父窗口創建的菜單,命令響應函數可以寫在對話框類中,
也可以寫在其他如MainFrame,App,View類中。
新手需要源碼,留下郵箱索取。
void CDlg::OnContextMenu(CWnd*  /* pWnd */, CPoint  /* point */)
{
     //  TODO: 在此處添加消息處理程序代碼
    CMenu   menu;    // 定義下面要用到的cmenu對象
    menu.LoadMenu(MAKEINTRESOURCE(IDR_MENU1)); // 裝載自定義的右鍵菜單 
    CMenu   *pContextMenu=menu.GetSubMenu( 0);  // 獲取第一個彈出菜單,所以第一個菜單必須有子菜單 
    CPoint point1; // 定義一個用於確定光標位置的位置  
    GetCursorPos(&point1); // 獲取當前光標的位置,以便使得菜單可以跟隨光標  
    pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point1.x,point1.y,
         this);  // 把對話框類指針傳進去
}

void CDlg::OnDlg()
{
     //  TODO: 在此添加命令處理程序代碼
    AfxMessageBox( " menu dlg ");
    Invalidate(); //  這是我最終的目標,右擊菜單執行完后刷新。
}
url: http://greatverve.cnblogs.com/archive/2012/11/21/mfc-dlg-menu-cmd.html


免責聲明!

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



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