当窗口从隐藏变为可见时,如何阻止其在最后一个可见位置短暂重新出现
How can I stop a window from briefly reappearing at its last visible position when going from hidden to visible?
我有一个显示视频的非全屏DirectX窗口,出于应用程序的目的,我需要在其中移动,有时还需要通过编程方式从隐藏/可见更改。当窗口从隐藏变为可见时,有时可能需要将其移动到新位置才能显示。
我用ShowWindow(hWnd, SW_HIDE)
隐藏窗口。当我想在新的位置再次显示窗口时,我首先使用新的坐标和SWP_NOREDRAW
和SWP_NOZORDER
标志用SetWindowPos
移动它(我不想打乱Z顺序)。
然后我调用ShowWindow(hWnd, SW_SHOW)
以使窗口出现在新位置。除了窗口在其新的正确位置出现之前短暂出现在最后一次可见的位置之外,此操作效果良好。
我尝试过将备选方案MoveWindow
(重新绘制选项设置为false)和GetWindowPlacement
与SetWindowPlacement
(具有适当的标志)一起使用,但它们给出了相同的结果。
从隐藏变为可见时,如何强制窗口显示在正确的位置?
发现问题不是Windows API或DirectX的错误,而是解码器处理方式中的一个棘手错误。窗口的位置及其可见性状态基于通过视频解码器的帧用户数据中的值。当解码器停止接收输入数据时,即与编码器的网络连接断开时,它也将停止对解码帧进行回调,数据仍在其"管道"中。当输入数据再次到达解码器时,它会吐出一些"卡住"的帧,其中包含不再有效的用户数据。
相关文章:
- lower_bound()返回最后一个元素
- 获取向量C++中第一个值和最后一个值的和
- 获取用C/C++打印的最后一个字符串
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- 为什么这个程序返回最后一个单词而不是最长的单词?
- 为什么我的最后一个 ELSE 条件无法正确执行
- Lower_bound不适用于具有 3 个元素的向量的最后一个元素
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 将所有 URL 组织在类中的一个位置
- 仅显示链表的最后一个元素
- 为什么要指向数组或向量中最后一个元素之后的内存位置
- C++的最后一个位置是否有计算单元的标准功能
- 如何在下一次函数调用中使用 STL 映射擦除从最后一个位置
- 排序为最后一个位置的元素提供错误的输出
- TinyXML在最后一个位置插入
- 当窗口从隐藏变为可见时,如何阻止其在最后一个可见位置短暂重新出现
- 如何从最后一个光标位置读取文件
- 在不知道最后一个元素的位置的情况下,向后比较两个数组
- 每5、10和最后一个位置打印唯一的字符串
- 当插入符号在最后一个位置时,EM_POSFROMCHAR没有返回正确的值