vc動態新增彈出選單和響應函式

2021-04-16 06:53:12 字數 854 閱讀 2982

備忘:mfc中利用cmenu類動態新增彈出選單和響應函式

步驟:1 宣告乙個選單:

cmenu menu;

2 生成選單物件:  

menu.createpopupmenu();

3 給選單新增上內容:

4 新增子彈出選單:

cmenu submenu;

submenu.createpopupmenu();

5 設定當失去焦點時選單自動消失

setforegroundwindow();

6 設定選單的位置:

menu.trackpopupmenu();

以上各步連線起來就是乙個完整的動態生成選單的步驟,當動態生成的選單很多且選單又不固定的時候,預先

為每個選單都定義乙個訊息和訊息處理函式是很麻煩且不現實的,現在介紹一種方法來動態響應動態生成的選單。

其原理就是利用oncommand函式。

首先,要為每乙個動態生成的選單指定乙個id,方式如下

其中引數id為乙個唯一的整數,可以由你自己指定,當滑鼠單擊此選單的時候,系統傳送乙個訊息,此訊息優先

被oncommand函式接收,oncommand函式的原形為:

bool oncommand(wparam wparam, lparam lparam);

假如你指定選單的id為10001,響應函式的具體寫法為:

bool oncommand(wparam wparam, lparam lparam)

int menuid = loword(wparam);

if(menuid > 10000)

//新增你自己的處理**

如果是使用對話方塊的mfc,自己過載oncommand函式即可

VC中動態新增選單及其命令響應函式

在對話方塊程式中動態新增選單及其命令響應函式,其實很簡單,只要重寫oncommand函式就可以實現了。下面是具體的實現。在主對話方塊類中的oninitdialog函式中新增如下的 建立子選單 cmenu menuclick menuclick.createmenu 把建立的子選單新增到主選單中 ge...

VC 中新增訊息響應函式

我們舉乙個實際的例子來說明該段過程.例如在對話方塊中設定乙個按鈕,每隔3秒鐘會自動的彈出message對話方塊 1 首先在標頭檔案或cpp檔案中定義乙個訊息 define click message box wm user 100 2 然後在訊息對映巨集裡面新增函式宣告 afx msg declar...

VC中自定義訊息響應函式

這是從新對windows的自定義訊息響應函式進行整理。因為我發現自定義訊息響應函式還是非常有用的,尤其是在windows多程式設計中,用的類越多,有時候就比較有用。windows訊息用 wm 這個字首,自定義的訊息一般用 um 這個字首 1.建立響應函式的原型 在vs2005中,對於響應函式有了個比...