尝试上下滑动窗口。 但是试图让它同时调整大小以使底部停留在同一个位置。 问题是当窗户向上滑动时,底部闪烁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;
}
答案 0 :(得分:0)
此问题实际上是基于处理能力,与您的程序关系不大。闪烁发生的原因是因为你正在实施两个操作;您正在看到一个发生(移动或调整窗口大小 - 以先到者为准 - 约5px)然后另一个至少一帧以后,当窗口移动/调整匹配时的第一个更改。尝试使用int Speed
变量进行游戏,看看是否可以使它变得更加平滑。
如果这不起作用,可能是一种优化代码的方法,可以让它更快地执行 - 但我会将讨论留给那些在该领域更有经验的人。
修改: This question和this question可能有助于您解决困境。