尝试CScrollBar
在我的 Windows7 的 MFC C++ 应用程序中使用。
我收到所有消息都很好,并且有一个看起来像这样的处理程序:
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 位 var 的更大,因此我不能使用传递的 pos 作为参数。
然而,我的问题是,我只有在拖动栏并接收到拖动操作TB_THUMBTRACK
的结尾时才获得有效位置。TB_ENDTRACK
如果我单击滚动条或在每一端使用箭头,则所有位置(参数 pos 和SCROLLINFO
结构中除 page 之外的所有内容)都将为 0。
有谁知道如何获得所有消息的正确位置?即TB_LINEUP, TB_LINEDOWN
等。