MFC操作 右鍵彈出選單事件

2021-06-10 05:25:28 字數 1312 閱讀 9298

一、在資源編輯器中建立乙個選單資源 

新建乙個選單資源,比如把選單的id號為idc_popmenu。此選單有一項兩層,即有乙個可彈出的選單項,而此選單項的彈出內容即為將要建立的彈出式選單的內容。至於每乙個選單項的訊息對映,與一般的選單相同。 

二、使用cmenu類物件 

cmenu類的成員函式較多,但建立彈出式選單只需用到其中幾個成員函式。

1、loadmenu函式 

功能:從應用程式的可執行檔案中載入選單資源 

原型:bool loadmenu(uint nidresource); 

其中nidresource是選單資源的id號,這裡用的是剛建立的idc_popmenu。 

2、getsubmenu函式 

功能:此函式用於得到子選單的指標。 

原型:cmenu* getsubmenu(int npos)const; 

npos為層數,0為第一層子選單……以此類推。 

由於我們需要的是「可彈出項」的第一層子選單,因此用getsubmenu(0)來得到第一層子選單的類指標。 

3、trackpopupmenu函式

功能:在指定位置顯示彈出選單,並跟蹤所選擇的項 

原型:bool 

trackpopupmenu(uint nflags,int x,int y,cwnd* pwnd,lpcrect lprect=null); 

其中: 

nflags為螢幕座標屬性和滑鼠座標屬性 

螢幕座標屬性: 

tpm_centeralign 

橫向將選單以x居中 

tpm_leftalign 

橫向將選單以x左對齊 

tpm_rightalign 

橫向將選單以x右對齊 

滑鼠按鍵屬性(只在響應wm_contextmenu訊息時有效): 

tpm_leftbutton 

連續按? 

右鍵不會連續彈出選單,滑鼠右鍵不可用於選定選單項 

tpm_rightbutton 

連續按滑鼠右鍵會連續彈出選單,滑鼠右鍵可用於選定選單項 

x,y均為螢幕座標 

lprect 

選單所佔的區域。如果為null,當使用者在選單以外的區域按滑鼠鍵時,選單會消失

對話方塊右鍵選單

void clistrightbuttonmenudlg::oncontextmenu(cwnd* , cpoint point)

list 控制項右鍵選單

void clistrightbuttonmenudlg::onnmrclicklist1(nmhdr *pnmhdr, lresult *presult)

右鍵彈出選單

演算法 第一步 增加元件 元件和控制項 project add to project components and controls 選擇 vc components 裡面的pop up menu 選擇 cmenuview 下面的 cg idr popup menu view 這個是id號,你可以修...

製作右鍵彈出選單

1.新建乙個選單資源 idr menu pop 2.新增選單項 3.彈出右鍵選單 cmenu menu menu.loadmenu idr menu pop cmenu psubmenu menu.getsubmenu 0 0表示是載入idr menu pop的第一列選單 cpoint pt get...

QT 右鍵彈出選單

qwidget及其子類都可有右鍵選單 1.設定標誌 在widget初始化的時候 setcontextmenupolicy qt customcontextmenu 設定為自定義選單模式 2.在需要的地方進行訊號關聯 connect mbrowserview,civdatasourcetreeview...