SetWindowPos hwnd, 0, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME Or SWP_NOREDRAW给窗口画边框时顶部的白边要怎么去掉·1
时间: 2024-05-06 16:18:09 浏览: 163
你可以使用 `SetWindowLong` 函数来修改窗口的样式,去掉窗口的边框。
具体来说,你需要将窗口样式中的 `WS_BORDER` 标志位清除,并设置 `WS_EX_CLIENTEDGE` 标志位,以便在窗口的客户区周围绘制一个三维边框。可以使用以下代码:
```vb
Const GWL_STYLE = (-16)
Const GWL_EXSTYLE = (-20)
Const WS_BORDER = &H800000
Const WS_EX_CLIENTEDGE = &H200&
' 获取窗口的样式和扩展样式
Dim lStyle As Long
Dim lExStyle As Long
lStyle = GetWindowLong(hwnd, GWL_STYLE)
lExStyle = GetWindowLong(hwnd, GWL_EXSTYLE)
' 修改样式和扩展样式
lStyle = lStyle And Not WS_BORDER
lExStyle = lExStyle Or WS_EX_CLIENTEDGE
SetWindowLong hwnd, GWL_STYLE, lStyle
SetWindowLong hwnd, GWL_EXSTYLE, lExStyle
' 重绘窗口
SetWindowPos hwnd, 0, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME Or SWP_NOREDRAW
```
这应该会去掉窗口顶部的白边并绘制一个三维边框。
阅读全文