-1

WM_NCHITTEST メッセージを使用する SizableUserControl クラスと、RightToLeft のミラー用に WS_EX_LAYOUTRTL および WS_EX_NOINHERITLAYOUT を使用する CustomUserControl クラスがあります。両方を使用している場合、実行時のサイズ変更が逆になります。どうすれば修正できますか?

助けてくれてありがとう。

4

1 に答える 1

-1

このコードを CustomUserControl クラスに追加して修正しました。

protected override void WndProc(ref Message m)
{
    base.WndProc(ref m);
    if (m.Msg == 0x84) // WM_NCHITTEST
        if (this.RightToLeft == RightToLeft.Yes && this.RightToLeftLayout)
            switch ((int)m.Result)
            {
                case 10: // HTLEFT
                    m.Result = (IntPtr)11; // HTRIGHT
                    break;
                case 11: // HTRIGHT
                    m.Result = (IntPtr)10; // HTLEFT
                    break;
                case 13: // HTTOPLEFT
                    m.Result = (IntPtr)14; // HTTOPRIGHT
                    break;
                case 14: // HTTOPRIGHT
                    m.Result = (IntPtr)13; // HTTOPLEFT
                    break;
                case 16: // HTBOTTOMLEFT
                    m.Result = (IntPtr)17; // HTBOTTOMRIGHT
                    break;
                case 17: // HTBOTTOMRIGHT
                    m.Result = (IntPtr)16; // HTBOTTOMLEFT
                    break;
                default:
                    break;
            }
}
于 2016-11-16T23:35:20.913 に答える