1

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

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

4

1 回答 1

0

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

为此,请处理WM_NCHITTEST消息并返回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
}
于 2012-10-15T13:26:29.203 回答