備忘: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中,對於響應函式有了個比...