gpt4 book ai didi

c# - 可以使用 WM_NCPAINT 并仍然在 Aero 上获得窗口后面的阴影吗?

转载 作者:行者123 更新时间:2023-11-30 18:39:26 36 4
gpt4 key购买 nike

目前,我正在尝试在 Windows 窗体中创建一个带有自定义框架的顶级窗口(使用 DevExpress' SkinManager.EnableFormSkins function )并且仍然在窗口周围有一个阴影,当运行Windows 7 Aero。

当前窗口看起来像这样:

enter image description here

我希望它看起来像这样:

enter image description here

(即在窗口周围有柔和的阴影)。

我做了很多研究和试错,包括使用 CS_DROPSHADOWasking the DevExpress support , reading on SO , other blogsMSDN documentation .

仍然,没有什么能给我的 window 带来阴影。

虽然我觉得我的要求根本不可能实现,但我还是想趁机在这里问一下。

(我什至想通过在我的实际窗口后面放置一个 native Aero 窗口来伪造它,但未能实现...)

我的问题是:

是否有可能有一个带有自定义绘制的非客户 (NC) 区域的窗口,并且当 Aero 处于事件状态时该窗口周围仍然有阴影?

最佳答案

你能尝试像这样自定义 win 表单阴影吗:

/// <summary>
/// Base class for drop shadows forms.
/// </summary>
public partial class DropShadowForm : Form
{
private const int CS_DROPSHADOW = 0x00020000;

/// <summary>
/// Creates new instance of DropShadowForm.
/// </summary>
public DropShadowForm()
{
InitializeComponent();
}

/// <summary>
/// Overrides from base class.
/// </summary>
protected override CreateParams CreateParams
{
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
get
{
CreateParams parameters = base.CreateParams;

if (DropShadowSupported)
{
parameters.ClassStyle = (parameters.ClassStyle | CS_DROPSHADOW);
}

return parameters;
}
}

/// <summary>
/// Gets indicator if drop shadow is supported
/// </summary>
public static bool DropShadowSupported
{
get
{
OperatingSystem system = Environment.OSVersion;
bool runningNT = system.Platform == PlatformID.Win32NT;

return runningNT && system.Version.CompareTo(new Version(5, 1, 0, 0)) >= 0;
}
}
}

关于c# - 可以使用 WM_NCPAINT 并仍然在 Aero 上获得窗口后面的阴影吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775185/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com