嘎蹦豆 发表于 2016-1-7 13:50:11

关于滚动条GetScrollInfo问题??!!

.....................
case WM_VSCROLL:
                si.cbSize = sizeof(si);
                si.fMask = SIF_ALL;
                GetScrollInfo(hWnd, SB_VERT, &si);
                TempPos = si.nPos;
                switch (LOWORD(wParam))
                {
                case SB_LINEDOWN:
                        si.nPos += 1;
                        break;
                }
                si.fMask = SIF_POS;
                SetScrollInfo(hWnd, SB_VERT, &si, TRUE);
                //GetScrollInfo(hWnd, SB_VERT, &si);    这句不要行不行????!!!
                if (si.nPos != TempPos)
                {
                       
                }
                return 0;
................

其中有一句GetScrollInfo能不要吗??!这句的注释看不懂什么意思。

小甲鱼 发表于 2016-1-7 14:38:29

这一句要的,因为下边要用到:

                // 设置改变后的滚动条滑块位置
                si.fMask = SIF_POS;
                SetScrollInfo(hwnd, SB_VERT, &si, TRUE);

                // 获得滚动条滑块的位置,由于窗口调整,它可能不是同一个值
                GetScrollInfo(hwnd, SB_VERT, &si);

                // 与此前的保存的值进行比较,如果不同则滚动窗口
                if (si.nPos != iVertPos)
                {
                        ScrollWindow(hwnd, 0, cyChar * (iVertPos - si.nPos), NULL, NULL);
                        UpdateWindow(hwnd);
                }

嘎蹦豆 发表于 2016-1-7 14:49:30

小甲鱼 发表于 2016-1-7 14:38
这一句要的,因为下边要用到:

SetScrollInfo不是以经设置好si.nPos的值了吗?!
难道只有GetScrollInfo以后,si.nPos的值才可以用??
页: [1]
查看完整版本: 关于滚动条GetScrollInfo问题??!!