WM_NCHITTEST メッセージを使用する SizableUserControl クラスと、RightToLeft のミラー用に WS_EX_LAYOUTRTL および WS_EX_NOINHERITLAYOUT を使用する CustomUserControl クラスがあります。両方を使用している場合、実行時のサイズ変更が逆になります。どうすれば修正できますか?
助けてくれてありがとう。
WM_NCHITTEST メッセージを使用する SizableUserControl クラスと、RightToLeft のミラー用に WS_EX_LAYOUTRTL および WS_EX_NOINHERITLAYOUT を使用する CustomUserControl クラスがあります。両方を使用している場合、実行時のサイズ変更が逆になります。どうすれば修正できますか?
助けてくれてありがとう。
このコードを 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;
}
}