MFC滾動條實現要點
1、鼠標拖動滾動條從而滾動窗口,需要實現CDialog::OnVScroll()函數。根據傳入參數nPos,計算滾動距離。最后再調用ScrollWindow()和SetScrollPos()分別滾動窗口和設置滾動條位置。
2、鼠標滾輪滾動從而滾動窗口,需要實現OnMouseWheel()函數。根據參數zDelta來計算滾動距離。需要注意的是zDelta是滾輪滾動的距離,它一定是120的倍數,如果鼠標一次滾動達不到120,則會進行累計。只有達到120或以上才會觸發OnMouseWheel()。這邊還有一個問題需要注意,就是滾輪滾到底部或頂部的時候需要進行特殊處理。
3、滾動條的滑塊大小需要通過SCROLLINFO.nPage進行設置。不過一旦nPage的值大於0,它就會自動影響的最大滑動范圍,需要將原先的最大范圍nMax加上nPage-1。如果還有問題,請參照MSDN的SCROLLINFO關於nPage的說明。
4、鼠標滾輪滾動窗口一般需要考慮到系統的鼠標設定選項中的滾輪選項。就是滾輪滾動一次滾多少行的問題。這就需要實時監測系統設置是否改變,當然MFC有提供相應的消息WM_SETTINGCHANGE,我們只要實現這個消息的響應函數。在系統設置改變的時候,根據滾輪選項的值從新設置滾輪滾動行數就行了。