列印預覽控制項 (PrintPreviewControl) 內容超出可視區域時,預設僅能透過捲軸拖曳瀏覽。使用者習慣如看圖軟體般,**直接按住滑鼠左鍵拖曳頁面內容** 瀏覽。控制項未提供此功能,需自行實現。
透過程式碼控制捲軸位置,間接達到拖曳內容效果。因控制項未公開捲軸屬性/方法,必須呼叫 Windows API (user32.dll)。
| API | 用途 |
|---|---|
SetScrollPos | 設定指定捲軸滑塊位置 |
GetScrollPos | 取得指定捲軸滑塊當前位置 |
GetScrollRange | 取得捲軸最小/最大位置範圍 |
PostMessage | 關鍵:發送捲動訊息 (WM_HSCROLL/WM_VSCROLL) 觸發控制項實際重繪內容 |
const int SB_HORZ = 0x0; // 水平捲軸
const int SB_VERT = 0x1; // 垂直捲軸
const int WM_HSCROLL = 0x114; // 水平捲動訊息
const int WM_VSCROLL = 0x115; // 垂直捲動訊息
const int SB_THUMBPOSITION = 4; // 滑塊定位動作 (wParam 高字組合位置)
SB_THUMBPOSITION 表示使用者拖曳滑塊到特定位置;wParam 組合方式:SB_THUMBPOSITION | (pos << 16)。
下一篇將實作滑鼠事件處理、位移計算、邊界檢查與完整程式碼整合。