我继承了一个大型 MFC 应用程序,其中包含一个CComboBox
覆盖OnPaint
. 目前,它的所有绘图都是手工完成的(使用线条和矩形),并呈现一个看起来明显是 Windows 98 风格的组合框。但是,它在其他方面工作得很好,并提供了许多我们所依赖的有用的自定义功能,并且重写整个控件可能不是一种选择。
我想对其进行现代化改造,以便OnPaint
在可用的地方以 Aero 风格绘制(当现代主题不可用时回退到旧代码)。我已经使用我们拥有的其他一些自定义控件(例如按钮)完成了此操作,它非常适合我们的目的。我知道有一些微小的行为是不正确的,比如鼠标悬停时的柔和高光,但这对这个应用程序来说没什么大不了的。
我可以访问CVisualStylesXP
ckass,所以我已经有了基础设施来拨打电话OpenThemeData
,GetThemeColor
或者DrawThemeBackground
很容易(通过LoadLibrary
所以我们不强制 Vista 作为最小系统)。不幸的是,我不知道正确的调用顺序来获得带有主题适当边框和下拉按钮的漂亮组合框。
有人知道在这里做什么吗?