【发布时间】:2016-03-04 10:56:25
【问题描述】:
要绘制主题按钮,我使用以下代码:
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 7 主题,即使在 Windows 8 或 10 上也是如此。这可以使用 Windows 10 或 8 主题绘制关闭按钮吗?
【问题讨论】:
-
你用的是什么版本的Delphi?
-
添加标签delphi-xe7,这对这个不重要(我认为),而且,我是在Window 8下开发的,但是这个画得像在Windows 7下
-
不是很清楚你的问题是什么。按照我的理解,您正在尝试绘制与 Windows 版本匹配的主题。这应该默认发生,无需任何编码。听起来您使用的是非常旧的 Delphi 版本,没有运行时主题。你能提供你所期望的和你看到的截图吗?
-
我认为不可能做你想做的事。我觉得你需要自己画。
-
我不认为有用于此的 api。我也认为这个问题的标签很糟糕。正如你所知,尽管@Jerry 说这不是德尔福问题。如果我是你,我会删除 Delphi 标记并仅使用
winapi重新标记。
标签: winapi windows-themes