各位老鐵大家好,本篇文章主要針對上一篇文章《MFC/VC++軟件開發系列——List表格實現隨意編輯,combobox內置》中提到的使用消息的形式動態加載combo-box的item,上一篇文章部分代碼模糊,本文有重新截取,需要List庫源碼的可私信小編,喜歡的朋友可關注小編爲小編點贊哦!

先上一張List表格動態加載combo-box控件的圖片:

如何手動添加自定義消息,文章末尾講解自動添加消息方法,此處以List庫源碼作爲講解:

第一、在要發送消息的類的頭文件中定義消息,ID建議WM_USER+1000起,因爲有些引用的庫可能會佔用,此處爲List庫中源碼定義的消息ID

第二、在要響應消息的類頭文件中手動定義一個消息處理函數,處理函數要放在DECLARE_MESSAGE_MAP()之前,且消息的定義要以afx_msg LRESULT開頭

第三、在響應消息的類的實現文件中的BEGIN_MESSAGE_MAP和END_MESSAGE_MAP之間手動添加映射,如圖中所示

第四、在響應消息的類的實現文件中實現前面定義的消息響應函數,消息響應函數中我們可以做多個判斷以便實現不同的列加載不同的combo-box的item,其次lParam傳遞了一個指針,wParam傳遞了List的列數值,使用這兩個參數前要使用強制轉換

第五、所有的消息都定義好了,接下來就是發送消息,,此處使用的SendMessage而不是PostMessage,因爲SendMessage是BLOCK(阻塞)型消息,需要等待消息處理完成才能返回在向下執行,PostMessage是立即返回,所以我們無法判斷Item是否加載完,所以此處選用SendMessage,此段程序是List庫中自帶的程序段

前面講的手動添加消息,這裏講下MFC如何自動生成自定義消息,請看下圖:

類嚮導中左下腳有個添加自定義消息,填上名字系統會自動完成我們上面手動完成的事情,唯一有點就是消息的ID需要我們手動修改下。

本章就到此結束,喜歡的朋友請爲小編點贊❤❤

相關文章