滚动窗口降至100px

时间:2011-06-23 12:16:34

标签: winapi scroll

我有外部应用程序窗口的HWND。 从我的应用程序我需要发送消息(或发布)到 滚动窗口在100px向下,我的意思是滚动偏移必须是100px。

怎么办呢? 我尝试用SB_LINEDOWN发送WN_VSCROLL,但是如何设置100px?多么糊涂 像素由SB_LINEDOWN向下滚动?

UPD2:

我试试

        SCROLLINFO si;
    ZeroMemory(&si, sizeof(si));
    si.cbSize = sizeof(si);
    si.fMask = SIF_ALL;

    if (GetScrollInfo(h, SB_VERT, &si))
    {
        si.nPos += 123;

        SetScrollInfo(h, SB_VERT, &si, TRUE);
        SendMessage(h, WM_VSCROLL, MAKEWPARAM(SB_THUMBTRACK, si.nPos), 0);
    }
    else
    {
        printf("no GetScrollInfo! %d", ::GetLastError());
    }

并收到printf“没有GetScrollInfo!1447”(1447是ERROR_NO_SCROLLBARS又名“窗口没有滚动条”),但“Internet Explorer_Server”有滚动条!

1 个答案:

答案 0 :(得分:0)

WM_VSCROLL缺乏执行您想要的精确度。但是,您应该可以使用SetScrollPos()执行所需操作。您需要使用GetScrollInfo()并计算移动拇指的距离。

我认为使用上述方法使其准确无误仍然很棘手。你想要达到的目标是什么?可能有更好的方法来实现它,而不是模拟滚动。