2

ボーダーレスフォームを作成しました。次を使用してシステムメニューをそれに割り当てることができました。

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams param = base.CreateParams;
            param.Style |= (WS_SYSMENU);

            return param;
        }
    }

しかし、実行すると、次のように WMNCHITTEST で設定したカスタム サイズ変更ゾーンが表示されなくなりました。

    protected override void WndProc(ref Message m)
    {
        const int wmNcHitTest = 0x84;
        const int htBottomLeft = 16;
        const int htBottomRight = 17;
        if (m.Msg == wmNcHitTest)
        {
            int x = (int)(m.LParam.ToInt64() & 0xFFFF);
            int y = (int)((m.LParam.ToInt64() & 0xFFFF0000) >> 16);
            Point pt = PointToClient(new Point(x, y));
            Size clientSize = ClientSize;
            if (pt.X >= clientSize.Width - 40 && pt.Y >= clientSize.Height - 40 && clientSize.Height >= 40)
            {
                m.Result = (IntPtr)(htBottomRight);
                return;
            }
        }
        base.WndProc(ref m);

    }

では、これを克服するにはどうすればよいでしょうか。WMNCHITTEST も尊重するシステム メニューでボーダレス フォームを作成することはできますか?

4

1 に答える 1