假设您有一个
WS_OVERLAPPEDWINDOW
窗口,并且您第一次显示它:
::ShowWindow(hwnd, SW_SHOW);
窗口出现并带有预期的淡入动画(在 Windows 10.0.18363 上测试)。
如果您随后隐藏窗口:
::ShowWindow(hwnd, SW_HIDE);
并尝试再次重新显示它,通过上面的
SW_SHOW
调用,它会立即出现,没有淡入过渡。
问题是:如何让
::ShowWindow()
在第二次显示窗口时使用淡入过渡?
请注意,第一个和后续
SW_HIDE
调用都使用淡出过渡。
有一个悬而未决的 5 年前的问题,它对 QT 提出了基本相同的问题,但由于这是一个 Win32 问题,而不是 QT 特有的问题,所以我决定以更一般的方式重新提出它。
根据西藏海岸的评论,我为一个名为FormPreview的表单做了这个:
FormPreview.Perform(CM_RECREATEWND, 0, 0);
FormPreview.ShowModal;
解决了我显示和重新显示表单的问题。