私はWndProcでヒットテストを使用して、実行時にマウスでサイズを変更できるようにする.NETでユーザーコントロールを使用しています。コントロールがZオーダーを変更しないようにするには?
問題は、ヒットテストが成功した後(マウスを押し、ドラッグしてサイズを変更し、マウスを離した場合)、コントロールがZ順に上方向にジャンプし、フォームの位置を破棄することです。
非常にカスタマイズされたコントロールなのでヒットテストが必要です。
コントロールがZオーダーの変更を止める方法はありますか?
ありがとうございました。
ヒットテストコード:無回答
protected override void WndProc(ref Message m) {
if (!DesignMode && Sizeable && (m.Msg == Win32Wrapper.WM_NCHITTEST)) {
Point Hit = new Point((int)m.LParam & 0xFFFF, (int)m.LParam >> 16);
Hit = this.PointToClient(Hit);
int DistToBorder = 5;
if (Hit.X < DistToBorder) {
if (Hit.Y < DistToBorder) {
m.Result = (IntPtr)Win32Wrapper.HTTOPLEFT;
return;
}
if (Hit.Y > this.ClientRectangle.Bottom - DistToBorder) {
m.Result = (IntPtr)Win32Wrapper.HTBOTTOMLEFT;
return;
}
m.Result = (IntPtr)Win32Wrapper.HTLEFT;
return;
}
else if (Hit.X > ClientRectangle.Right - DistToBorder) {
if (Hit.Y < DistToBorder) {
m.Result = (IntPtr)Win32Wrapper.HTTOPRIGHT;
return;
}
else if (Hit.Y > this.ClientRectangle.Bottom - DistToBorder) {
m.Result = (IntPtr)Win32Wrapper.HTBOTTOMRIGHT;
return;
}
m.Result = (IntPtr)Win32Wrapper.HTRIGHT;
return;
}
else if (Hit.Y < DistToBorder) {
m.Result = (IntPtr)Win32Wrapper.HTTOP;
return;
}
else if (Hit.Y > this.ClientRectangle.Bottom - DistToBorder) {
m.Result = (IntPtr)Win32Wrapper.HTBOTTOM;
return;
}
}