gpt4 book ai didi

c++ - 从 CScrollBar 获取所有位置值

转载 作者:行者123 更新时间:2023-11-28 07:43:29 26 4
gpt4 key购买 nike

尝试在我的 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 提取位置的原因是它们可能比适合 16 位变量的内容大,因此我不能使用传递的位置作为参数。

但是,我的问题是,只有在拖动栏并接收 TB_THUMBTRACK 以及拖动操作的结尾 TB_ENDTRACK 时,我才能获得有效位置。如果我在滚动条中单击或使用两端的箭头,则所有位置(参数 pos,以及 SCROLLINFO 结构中除 page 之外的所有内容)都将为 0。

有谁知道如何获得所有消息的正确位置?即 TB_LINEUP、TB_LINEDOWN

最佳答案

查看 MSDN 中显示的 WM_HSCROLL 事件处理程序的示例代码:

MSDN Documentation

关于c++ - 从 CScrollBar 获取所有位置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15342203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com