外壳扩展 - NSE:最小化和恢复窗口后,我得到“WM_WINDOWPOSCHANGING”而不是“WM_WINDOWP



如果我最小化我的shell扩展文件夹,然后尝试通过单击任务栏中的时间来恢复它,我会收到错误哔哔声,并且什么也没做。

使用Microsoft Spy++,我查看了尝试还原文件夹的事件,并得到了以下内容:

<00001> 0019013C S WM_WINDOWPOSCHANGING lpwp:021DEC48
<00002> 0019013C R WM_WINDOWPOSCHANGING
<00003> 0019013C S message:0x0422 [User-defined:WM_USER+34] wParam:00200001 lParam:00000000
<00004> 0019013C R message:0x0422 [User-defined:WM_USER+34] lResult:00000001
<00005> 0019013C P message:0xC18C [Registered:"CMBActivate"] wParam:00200001 lParam:00000000

而对于常规窗口,我得到以下内容:

<00001> 00190114 S WM_WINDOWPOSCHANGING lpwp:0DFCE920
<00002> 00190114 R WM_WINDOWPOSCHANGING
<00003> 00190114 S message:0x0422 [User-defined:WM_USER+34] wParam:00200001 lParam:00000000
<00004> 00190114 R message:0x0422 [User-defined:WM_USER+34] lResult:00000001
<00005> 00190114 P message:0xC18C [Registered:"CMBActivate"] wParam:00200001 lParam:00000000
<00006> 00190114 S message:0x0425 [User-defined:WM_USER+37] wParam:00000000 lParam:00000033
<00007> 00190114 R message:0x0425 [User-defined:WM_USER+37] lResult:00000000
<00008> 00190114 S WM_WINDOWPOSCHANGING lpwp:0DFCE610
<00009> 00190114 R WM_WINDOWPOSCHANGING
<00010> 00190114 S WM_NCCALCSIZE fCalcValidRects:True lpncsp:0DFCE5B0
<00011> 00190114 R WM_NCCALCSIZE fuValidRect:0000 lpncsp:0DFCE6D4
<00012> 00190114 S WM_WINDOWPOSCHANGED lpwp:0DFCE610
<00013> 00190114 S WM_SIZE fwSizeType:SIZE_RESTORED nWidth:1034 nHeight:563
<00014> 00190114 R WM_SIZE
<00015> 00190114 R WM_WINDOWPOSCHANGED

该问题仅在Windows 8.1上为我复制,而不是在此之前的任何版本。

WM_WINDOWPOSCHANGING没有被调用并且根本不调用WM_WINDOWPOSCHANGED的原因是什么?据我了解,必须在操作完成后调用它,也许这就是我的窗口无法恢复的原因,并且我收到错误哔哔声。

显然,问题出在我的IExtractIconW.GetIconLocation实现下的服务器通信上。

解决这个问题的方法是记住在给定时间最小化哪些窗口,并让它们返回一些默认图标位置。

相关内容

  • 没有找到相关文章

最新更新