2013-03-11 75 views
0

試圖在我的MFC C++應用程序的Windows7中使用CScrollBar從CScrollBar獲取所有位置值

我收到的所有消息就好了,有一個處理程序,它看起來是這樣的:

void Dialog::OnHScroll(UINT nSBCode, UINT apos, CScrollBar* pScrollBar) 
{  
    SCROLLINFO si; 
    si.cbSize = sizeof(si); 
    si.fMask = SIF_TRACKPOS; 
    m_slider.GetScrollInfo(&si,SIF_TRACKPOS|SIF_POS|SIF_PAGE); 
    int nTrackPos = si.nTrackPos; //0 except on TB_THUMBTRACK 
    int nPos = si.nPos; //0 except on TB_THUMBTRACK 
    UINT nPage = si.nPage; //seems correct always but I dont need it 

我之所以嘗試使用GetScrollInfo是因爲他們可能會比16位的無功裏面有什麼適合做大提取位置,因此我不能使用傳遞的pos作爲參數。

但是,我的問題是,當拖動欄和接收TB_THUMBTRACK以及結束TB_ENDTRACK拖動操作時,我只得到一個有效的位置。如果我點擊滾動條或者在每一端使用箭頭,所有的位置(參數pos,以及SCROLLINFO結構中除頁面之外的所有內容)將爲0.

有沒有人知道如何獲得所有消息的正確位置?即TB_LINEUP, TB_LINEDOWN

回答

1

看看這是一個在MSDN中所示的WM_HSCROLL事件處理程序的示例代碼:

MSDN Documentation

+0

謝謝,我是完全錯誤的軌道上,通過CScrollBar文檔挖在那裏我不能」找到有用的東西。 – Vanvid 2013-03-12 08:31:43