首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 開發固定背景圖片可捲動控件:WndProc 處理與滑鼠滾輪事件

     編輯:關於C語言

WndProc 訊息處理

攔截水平/垂直捲動訊息 (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 事件,需自行鎖定更新、重繪以維持背景固定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved