MFC动态创建控件并响应事件代码实现过程
1.創建對象
??? 用new進行動態創建一個對象。然后調用Create函數創建窗口,在函數的父窗口參數中傳入this或者用AfxGetMainWnd()獲取的父窗口對象指針。最后一個窗口ID先自定義一個ID名。
2.定義ID宏
??? 在cpp文件中,定一個創建對象時自定義的ID的宏,給予一個數字,不要和系統資源的ID值重復。如#define ID_DY_OK 10000
3.消息映射
??? 在VS2010中的cpp文件中的BEGIN_MESSAGE_MAP之間寫上映射語句??梢詤⒄侦o態生成的消息映射寫。括號內第一個寫上自定義的ID名,后面寫上響應的函數地址,以&取地址,&后面緊跟函數名,函數名需要寫清楚所屬類。因此,一個類中的消息可以在另外一個類中進行處理,只要消息映射寫上要處理消息的類名以及函數名,并在處理消息的類中進行消息處理函數的聲明。
??? 而在VC6.0中,在//{{AFX_MSG_MAP()中間是類向導自動生成的,里面的消息處理都是靜態的控件的消息處理。如果要進行動態控件的消息處理,則要將消息映射寫在END_MESSAGE_MAP()之間的//}}AFX_MSG_MAP之后的中間區域。消息映射的括號內的第二個參數只寫函數名即可。當然,此時的函數是本類中的,這是默認的情況。不需要寫&取址符,函數名就表示函數地址。如果要用其他類中的函數進行處理,則只需要加上類名作用域解析操作符和響應的函數名即可。
4.消息聲明
??? 在頭文件中,聲明消息處理函數。函數的聲明和普通的函數聲明一樣,此外,還要在聲明前面加上afx_msg作為消息響應函數的聲明標志。
5.消息處理
??? 在cpp文件中,和普通函數一樣處理函數定義,函數可以有參數也可以沒有參數,如果有參數,參考靜態控件消息處理函數的參數樣式寫和處理。
??? 當然,有一個比較快速的方法就是,動態創建好控件后,然后用向導創建靜態的控件的消息處理,然后將動態創建的控件ID值和靜態的設置成一樣的,然后刪掉靜態控件。如果是VC6.0則要將消息映射拿到//{{AFX_MSG_MAP()之外END_MESSAGE_MAP()之前即可。但是建議用上面的手動添加,靈活且能夠深刻理解消息處理機制。MFC動態創建控件以及響應動態創建的控件的事件的實現方法和原理。MFC動態創建控件以及響應動態創建的控件的事件的實現方法和原理。MFC動態創建控件以及響應動態創建的控件的事件的實現方法和原理。MFC動態創建控件以及響應動態創建的控件的事件的實現方法和原理。MFC動態創建控件以及響應動態創建的控件的事件的實現方法和原理。MFC動態創建控件以及響應動態創建的控件的事件的實現方法和原理。
總結
以上是生活随笔為你收集整理的MFC动态创建控件并响应事件代码实现过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux shell 执行目录,bas
- 下一篇: MFC BEGIN_MESSAGE_MA