向上/向下滑动窗口在底部闪烁

时间:2015-10-21 05:29:28

标签: c++ winapi

尝试上下滑动窗口。 但是试图让它同时调整大小以使底部停留在同一个位置。 问题是当窗户向上滑动时,底部闪烁5个左右。 窗户滑下来没有任何问题。

这是代码的一部分 我正在使用一个资源对话框。

int w       = 500;
int h       = 150;
int Speed   = 10;

bool StartSlide()
{
    m_pDlg->GetWindowRect(&m_MyPos);

    for (int i = 0; i <= h; i += 5)
    {
        Sleep(Speed);
        SetWindowPos(m_pDlg, m_MyPos.left, m_MyPos.top - i, w, i, SWP_SHOWWINDOW | SWP_NOOWNERZORDER | SWP_NOACTIVATE);
    }

    return true;
}

bool Close()
{
    RECT thisWindow;
    GetWindowRect(&thisWindow);

    for (int i = 0; i <= h; i += 5)
    {
        Sleep(Speed);
        SetWindowPos(m_pDlg, thisWindow.left, thisWindow.top + i, w, h - i, SWP_SHOWWINDOW | SWP_NOOWNERZORDER | SWP_NOACTIVATE | SWP_NOREPOSITION);
    }

    return true;
}

1 个答案:

答案 0 :(得分:0)

此问题实际上是基于处理能力,与您的程序关系不大。闪烁发生的原因是因为你正在实施两个操作;您正在看到一个发生(移动或调整窗口大小 - 以先到者为准 - 约5px)然后另一个至少一帧以后,当窗口移动/调整匹配时的第一个更改。尝试使用int Speed变量进行游戏,看看是否可以使它变得更加平滑。

如果这不起作用,可能是一种优化代码的方法,可以让它更快地执行 - 但我会将讨论留给那些在该领域更有经验的人。

修改: This questionthis question可能有助于您解决困境。

相关问题