我正在尝试在 c# 中更改窗口的窗口样式。
我有窗户的把手。如何向窗口发送消息以更改其窗口样式?
我的目的是使窗口无边框。
您真的需要更改现有窗口的样式,还是需要从一开始就使用给定的样式创建它?如果它是前者(听起来像,根据你的问题的其余部分),那么你只需覆盖CreateParams
你的Form
(或任何它)上的属性并更改返回值上的ClassStyle
,Style
和ExStyle
属性:
protected override CreateParams CreateParams
{
get
{
CreateParams createParams = base.CreateParams;
createParams.Style |= WS_...;
return createParams;
}
}
要更改现有窗口的样式,您必须使用 P/Invoke 调用GetWindowLong
来检索窗口的当前值GWL_STYLE
(或GWL_EXSTYLE
,无论您需要什么),根据需要翻转位,然后调用SetWindowLong
将其设置回来。您可以在此处找到这两个函数的 P/Invoke 签名,以及将它们与 一起使用的GWL_EXSTYLE
示例。