我有以下 C++ 代码(本机桌面应用程序),它使用 Microsoft 的Visual Styles API 来绘制关闭按钮。
RECT r = DetermineButtonRect();
HANDLE h = OpenThemeData(Handle, L"WINDOW");
DrawThemeBackground(h, hdc, WP_CLOSEBUTTON, CBS_NORMAL, &rect, NULL);
CloseThemeData(h);
这在早期版本的 Windows 中运行良好,但在 Windows 8 中,它坚持以 Windows 7 样式进行绘制。这并不可怕,但不让应用程序的所有部分都使用相同的视觉风格仍然令人沮丧。这是一个截图:
从上到下:
- 标准的 Windows 8 关闭按钮,采用 Windows 8 的极简非玻璃外观。
- 标准的 Windows 8 MDI 关闭按钮(WP_MDICLOSEBUTTON,由于其更明显的渐变看起来有点不合适,但这是微软的决定。
- 我自己绘制的关闭按钮,使用成熟的 Aero Glass 样式(外观与 Windows 7 相同),因此看起来相当不合适。
有什么方法可以让 Visual Styles API 绘制 Windows 8 样式(非玻璃)按钮?还是我应该使用不同的 API?