我有以下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?
解决方法
使用WP_SMALLCLOSEBUTTON,它似乎适用于具有正确主题的Windows 7和Windows 8.