绘制主题按钮,我使用以下代码:
var
h: HTHEME;
begin
if UseThemes then begin
SetWindowTheme(Handle, 'explorer', nil);
h := OpenThemeData(Handle, 'WINDOW');
if h <> 0 then
try
DrawThemeBackground(h, Canvas.Handle, WP_CLOSEBUTTON, GetAeroState, ClientRect, nil);
finally
CloseThemeData(h);
end;
end
else
DrawFrameControl(Canvas.Handle, ClientRect, DFC_CAPTION, DFCS_CAPTIONCLOSE or GetClassicState)
end;
该代码可以正常工作,但是即使在Windows 8或10上,绘制按钮的外观也与Windows 7主题类似。可以使用Windows 10或8主题绘制“关闭”按钮吗?
从主题获取位图的可行解决方案:
var
h: HTHEME;
Rect: TRect;
BufSize: Cardinal;
h := OpenThemeData(Handle, 'DWMWINDOW');
if h <> 0 then
try
GetThemeRect(h, WP_MINCAPTION, MNCS_ACTIVE, TMT_ATLASRECT, Rect);
...
GetThemeStream(...);
finally
CloseThemeData(h);
end;
以及如何使用GetThemeStream的方法在此处描述:GetThemeStream的用法,非常感谢Vista Style Builder程序的作者Andreas Verhoeven
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句