各位老铁大家好,本篇文章主要针对上一篇文章《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需要我们手动修改下。

本章就到此结束,喜欢的朋友请为小编点赞❤❤

相关文章