首页 >后端开发 >C++ >如何使Windows形式的无边界形式可移动?

如何使Windows形式的无边界形式可移动?

DDD
DDD原创
2025-01-24 15:41:09995浏览

How Can I Make a Borderless Form Movable in Windows Forms?

>创建一个可拖动的,无边界的窗口

>在Windows形式中设计无边界的形式提供时尚,现代的美学。 但是,这通常会带来一个挑战:如何在没有通常的标题栏或边界的情况下使表格可移动?本文提供了使用Windows API的解决方案。

关键是使用SendMessage>和ReleaseCapture>函数模拟单击标题栏。 这些API调用有效地欺骗了窗口管理器,即使在没有可见边框的情况下,也可以触发拖放操作。

这是代码实现:

<code class="language-csharp">public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool ReleaseCapture();

private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        ReleaseCapture();
        SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
    }
}</code>
>将此代码添加到表单的

事件处理程序中,您可以通过单击和拖动表单客户端区域中的任何地方来拖动和重新定位无边界的表单。 这提供了所需的功能,而不会损害干净,无边界的设计。

以上是如何使Windows形式的无边界形式可移动?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn