vb.net:W7 Snap功能不适用于formborderstyle = none

时间:2012-10-15 13:23:14

标签: vb.net formborderstyle

我制作了一个带有面板的自定义表单,用自定义控件框表示顶部栏,并将FormBorderStyle设置为无。

现在我注意到W7 Snap功能在我的表单上不起作用。 我不知道如何解决这个问题,谷歌此时并没有真正帮到你。

1 个答案:

答案 0 :(得分:0)

您应该能够通过使表单的某些部分像标题栏一样来解决此问题。

为此,请处理WM_NCHITTEST message并返回HTCAPTION

protected override void WndProc(ref Message m) {
    base.WndProc(ref m);
    switch (m.Msg) {
        case 0x84: //WM_NCHITTEST
            var point = new Point(m.LParam.ToInt32());
            if (point is somewhere)
                m.Result = new IntPtr((int)HitTest.Caption);

            break;
    }
}

enum HitTest {
    Caption = 2,
    Transparent = -1,
    Nowhere = 0,
    Client = 1,
    Left = 10,
    Right = 11,
    Top = 12,
    TopLeft = 13,
    TopRight = 14,
    Bottom = 15,
    BottomLeft = 16,
    BottomRight = 17,
    Border = 18
}