解决windows 11月14日更新KB5032190补丁导致IFolderView::SelectAndPositionItems无法移动的问题

windows更新KB5032190补丁后,使用IFolderView::SelectAndPositionItems实现桌面图标移动的方式会变的异常的卡顿,这似乎与其堆栈更新策略有关。只有移动帧率在1-5针时才缓慢移动。

为了解决这一问题,翻阅windows源码,找到的解决方案如下:

CComPtr<IShellView2> ifView2;
CComPtr<IFolderView2> ifView3;
ifView3->SetRedraw(false);
for (int i = 0; i < redrawPoint.size(); i++) {
	ifView2->SelectAndPositionItem(apidl2[i], SVSI_POSITIONITEM | SVSI_NOSTATECHANGE | SVSI_NOTAKEFOCUS, &pts[i]);
}
ifView3->SetRedraw(true);

IFolderView::SelectAndPositionItems不能用了

使用IShellView2::SelectAndPositionItem逐个移动单个图标,但是这会导致频繁刷新而严重卡顿。因此使用IFolderView2::SetRedraw控制桌面刷新,在逐个移动图标时禁止桌面刷新,移动完成后在开启刷新。其原理类似于双缓冲技术。

视频介绍地址

文章作者: Lulu6432
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Lulu6432技术漫步
硬核知识点 知识
喜欢就支持一下吧