これでウィンドウをドラッグしようとすると、ウィンドウがジャンプしてちらつきます。
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_MOVE)
{
int x = (m.LParam.ToInt32() & 0xffff);
int y = ((m.LParam.ToInt32() >> 16) & 0xffff);
if (x < 500)
Location = new Point(0, y);
else
base.WndProc(ref m);
}
else
base.WndProc(ref m);
}
- ジャンプをやめなければならない
WM_MOVE
、WM_MOVING
、WM_WINDOWPOSCHANGING
またはその他の移動イベントは、すべての新しい位置をチェックする必要があるため、ウィンドウをドラッグしている間も発生し続ける必要があります。- 別の問題は
Location = new Point(0, y);
、別の移動イベントを発生させることです (これは無視する必要があります)。
助けてください!