显示窗口第二次以上并带有淡入过渡

问题描述 投票:0回答:1

假设您有一个

WS_OVERLAPPEDWINDOW
窗口,并且您第一次显示它:

::ShowWindow(hwnd, SW_SHOW);

窗口出现并带有预期的淡入动画(在 Windows 10.0.18363 上测试)。

如果您随后隐藏窗口:

::ShowWindow(hwnd, SW_HIDE);

并尝试再次重新显示它,通过上面的

SW_SHOW
调用,它会立即出现,没有淡入过渡。

问题是:如何让

::ShowWindow()
在第二次显示窗口时使用淡入过渡?

请注意,第一个和后续

SW_HIDE
调用都使用淡出过渡。


有一个悬而未决的 5 年前的问题,它对 QT 提出了基本相同的问题,但由于这是一个 Win32 问题,而不是 QT 特有的问题,所以我决定以更一般的方式重新提出它。

winapi dwm
1个回答
0
投票

根据西藏海岸的评论,我为一个名为FormPreview的表单做了这个:

  FormPreview.Perform(CM_RECREATEWND, 0, 0);
  FormPreview.ShowModal;

解决了我显示和重新显示表单的问题。

© www.soinside.com 2019 - 2024. All rights reserved.