Windows 8中的视觉样式

我有以下C ++代码(本地桌面应用程序),它使用Microsoft的Visual Styles API来绘制closuresbutton。

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 8closuresbutton,使用Windows 8极简主义的非Glass外观。
  • 标准的Windows 8 MDIclosuresbutton(WP_MDICLOSEBUTTON,由于其更明显的渐变,看起来有点不合适,但这是微软的决定。
  • 我正在用自己的closuresbutton,使用全面的Aero Glass风格(与Windows 7相同的外观),看起来相当不合适。

有没有什么办法让Visual Styles API绘制Windows 8样式(非玻璃)button? 还是有一个不同的API我应该使用?

使用WP_SMALLCLOSEBUTTON ,它看起来可以在Windows 7和Windows 8上使用正确的主题。