2

我在 Delphi 中编写了一个程序,它监视一个窗口并在创建时使其不可见。窗口正确地变得不可见,但它的阴影永远保留在桌面上(直到下次重新启动)。我要隐藏的窗口是在 Windows 7 和 8 系统托盘中按住鼠标时间时可以看到的今天工具提示。如何隐藏阴影?

这是代码:

h := FindWindow('ClockTooltipWindow', nil);
if (IsWindow(h)) then ShowWindow(h, SW_HIDE);

这是剩余阴影的图片:
在此处输入图像描述

4

1 回答 1

5

这是一个有趣/非常粘人的伪影,可能阴影会从视频驱动程序中得到一些特殊处理。我不知道它为什么/如何发生,也许工具提示只是不在乎在隐藏后即将被销毁时移除它的阴影。

作为一种解决方法,您可以在隐藏到不会绘制阴影的大小之前调整工具提示的大小,例如:

h := FindWindow('ClockTooltipWindow', nil);
if (IsWindow(h)) then begin
  SetWindowPos(h, 0, 0, 0, 1, 1, SWP_NOMOVE or SWP_NOACTIVATE);
  ShowWindow(h, SW_HIDE);
end;

但是,我认为更好的方法是很好地要求它消失:

h := FindWindow('ClockTooltipWindow', nil);
if (IsWindow(h)) then 
  PostMessage(h, WM_SYSCOMMAND, SC_CLOSE, 0);
于 2013-04-14T13:59:10.657 回答