尝试在我的用于Windows7的MFC C ++应用程序中使用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
提取位置的原因是因为它们可能大于16bit var中的位置,因此我不能使用作为参数传递的pos。
我的问题是,我只是在拖动栏并接收TB_THUMBTRACK
以及结尾TB_ENDTRACK
进行拖动操作时才获得有效位置。如果我单击滚动条或使用每一端的箭头所有位置(参数pos,以及SCROLLINFO
结构中除页面之外的所有内容)将为0.
有谁知道如何获得所有邮件的正确位置?即TB_LINEUP, TB_LINEDOWN
等。