嘗試向上和向下滑動窗口。 但試圖讓它在同一時間調整大小,使底部保持在同一個地方。 問題是,當窗口向上滑動時,底部閃爍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
當窗口正在經歷這個階段時,只需禁用繪畫/更新。當窗口準備就緒時,啓用繪畫和後臺更新。否則,你應該開始一個不同的問題,看看你是否可以通過閃爍縮小問題範圍。順便說一句,「睡眠」的使用存在問題,但並不準確。 –