1. 程式人生 > >讓你動態建立的控制元件響應訊息!

讓你動態建立的控制元件響應訊息!

今天專案做到一半,發現程式碼已經很多了,總想著能不能在某些地方省略一些.於是發現到自己從控制元件派生出的幾個類.我用他們動態創建出DIALOG中的元素.這樣做是很麻煩,但沒辦法,因為希望自己的作品能夠更出色,於是就這麼做了.因為我實在沒有找到一個更好的解決辦法,也許是有,只是我不會.

但隨之而來的並不是定義時引數的煩瑣,而是想要獲取他們自己的通知時間.例如從CLISTCTRL中派生的空間,想要響應它自己的LVN_ITEMCHANGED訊息怎麼搞定哪,最後終於成功了.其實很簡單.就是在要捕獲訊息的類中的標頭檔案中的新增一個訊息響應函式原型例如 AFX_MSG VOID ONLISTCTRL();

在實現檔案中用ON_NOTIFY(LVN_ITEMCHANGED , 動態建立時分配的ID , 函式名)

在把響應函式的實現加上就OK了

如果是一個按鈕,同樣,.H中加上宣告

.CPP中用ON_BN_CLICKED(ID , 函式名)

其實和為靜態控制元件新增的程式碼相同. 

因為我還是不會響應各工件的WM訊息,所以我還是決定用繼承,在類中定義WM訊息,函式中傳送一個自定義訊息到要要處理訊息的視窗,然後在該視窗在定義響應該自定義訊息的函式.然後通過上邊的方法來建立出一個功能豐富的DIALOG