MFC重绘系统ComboBox
软件环境
- Windows 10 1809 64bit
- VS2017 Enterprise
- MFC
实现功能
- 重绘ComboBox
- 添加删除按钮
- 自适应下拉List的宽度
- 记录最后一次ComboBox的窗口文本
实现原理
ComboBox属性设置
- 重载ComboBox CompareItem/DrawItem
- Owner Draw 设置为 Fixed
- Has Strings 设置为 True
- Type 设置为 DropDown/DropList
技术要点
- PreSubclassWindow: 设置ListBox的GWLP_WNDPROC
获取ListBox上的鼠标信息 - OnCbnDropdown: 自适度下拉宽度
- OnPaint: ComboBox自绘
- DrawItem: 绘制下拉选项,删除图标
效果
DropDown

DropList

Disable Window

MFC重绘ComboBox技巧

本文详细介绍如何使用MFC在Windows环境下重绘ComboBox,包括添加删除按钮、自适应下拉List宽度及记录最后一次窗口文本等功能。通过重载CompareItem和DrawItem函数,设置OwnerDraw为Fixed,HasStrings为True,Type为DropDown或DropList,实现ComboBox的自定义绘制。
3303





