You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.Net中如何创建无边框、可调整大小且无标题栏的窗口

问题描述

我曾在XP系统中流畅实现窗口拖拽调整功能,但Windows 10下实现难度提升。

在Win10中,我可通过以下代码拖动窗口右边缘实现实时流畅调整,锚定在右侧的控件也会同步移动:

SendMessage(f.Handle, WM_NCLBUTTONDOWN, HTRIGHT, 0)

但要移除窗口边框,需通过如下代码关闭WS_SIZEBOX(同WS_THICKFRAME):

SetWindowLong(me.Handle, GWL_STYLE, GetWindowLong(me.Handle, GWL_STYLE) And Not WS_BORDER And Not WS_SIZEBOX And Not WS_DLGFRAME)
SetWindowPos(me.Handle, HWND_TOP, me.Left, me.Top, me.Width, me.Height, SWP_FRAMECHANGED)

遗憾的是,关闭WS_SIZEBOX会导致上述拖拽调整功能失效,SendMessage/WM_NCLBUTTONDOWN代码不再工作。

自行实现的困境

我尝试过捕获鼠标事件、操控窗口位置和大小来编写自定义调整逻辑,但拖拽边框时会出现难看的黑块——调整过程中窗体无法及时重绘,且锚定控件也不会随拖拽边缘移动。

求助需求

能否指点解决方案?为保证流畅性,我希望尽可能使用Windows 10原生调整逻辑。有没有办法绕过WS_SIZEBOX的限制,更直接或更低层级地调用原生逻辑?

补充说明:我希望整个窗体都可用于放置控件,因此即使WS_SIZEBOX开启时出现的细标题栏也不想要。


内容的提问来源于stack exchange,提问作者wade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:22:52