尝试向上和向下滑动窗口。 但试图让它在同一时间调整大小,使底部保持在同一个地方。 问题是,当窗口向上滑动时,底部闪烁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;
}
当窗口变大5个像素时,新的区域必须被绘制。这是一个调整大小的问题,如果您手动调整大小,则会出现同样的问题。尝试'WM_CLIPCHILDREN',尝试覆盖'WM_ERASEBKGND'等。 –
已经尝试过所有似乎还在做它 – mutotu
当窗口正在经历这个阶段时,只需禁用绘画/更新。当窗口准备就绪时,启用绘画和后台更新。否则,你应该开始一个不同的问题,看看你是否可以通过闪烁缩小问题范围。顺便说一句,“睡眠”的使用存在问题,但并不准确。 –