攔截水平/垂直捲動訊息 (WM_HSCROLL=0x0114, WM_VSCROLL=0x0115),統一 ThumbTrack 與 ThumbPosition 行為:
protected override void WndProc(ref Message m) {
if (bolFixedBackground && m.HWnd == this.Handle) {
if (m.Msg == 0x0114 || m.Msg == 0x0115) {
int v = m.WParam.ToInt32();
if ((v & 0xf) == 5) { // ThumbTrack
base.WndProc(ref m);
if (!bolDragFullWindows) {
v = v - 1; // 改為 ThumbPosition
m.WParam = new IntPtr(v);
base.WndProc(ref m);
}
} else {
base.WndProc(ref m);
}
return;
}
}
base.WndProc(ref m);
}
protected override void OnMouseWheel(MouseEventArgs e) {
if (bolFixedBackground) {
LockWindowUpdate(this.Handle);
base.OnMouseWheel(e);
LockWindowUpdate(IntPtr.Zero);
this.Invalidate();
} else {
base.OnMouseWheel(e);
}
}
滾輪不觸發 Scroll 事件,需自行鎖定更新、重繪以維持背景固定。