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