4

我有以下 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?

4

1 回答 1

3

Use WP_SMALLCLOSEBUTTON which appears to work on both Windows 7 and Windows 8 with the correct theme.

于 2014-09-03T14:25:19.903 回答