根据设计,当应用程序最小化时,Vista 上的工具栏应用程序缩略图不会更新,因为最小化的窗口本身不会重新绘制。对于我拥有的监控应用程序,在应用程序保持最小化的同时更新应用程序缩略图会很有用。我使用的是Delphi 2009。谁能为此建议一个好的解决方法?

HMcG

有帮助吗?

解决方案

这是一个有趣的一个我想有可能以某种方式与Windows API,我不是一个Vista计算机上的时刻,但我认为Windows媒体播放器仍显示视频最小化时播放。

我想一劈将覆盖最小化按钮和移动窗体关闭屏幕,然后检测形式再次变得活跃并移动它回到原来的位置。这将意味着形式超出视图,但没有最小化。

其他提示

我发现 微软开发论坛上的东西 解决这个主题。问题是关于提供自定义缩略图的方法,微软的 莱昂纳多·布兰科 回应如下:

我们没有计划为应用程序创建自定义替代缩略图表示形式提供一种手段,但是我们将提供一个API以选择退出正常的缩略图图像。

从 MSDN 中存在的功能来看,这些计划可能同时发生了变化 DwmSetIconicLivePreviewBitmapDwmSetIconicThumbnail 对于 Windows 7。目前这些条目并没有真正包含任何解释,但它们的名字看起来很有希望。

有人指出,即使窗口最小化,Windows Media Player 的缩略图也会显示移动视频。布兰科的解释:

WMP使用新的视频管道,该管道直接与[桌面窗口管理器]进行对话,以实现更流畅的播放体验。该管道依赖于[DirectX],并且不依赖窗口可见性信息,因此,只要应用程序继续提交框架,即使窗口被最小化,缩略图也可以保持生命。但是,您可能会注意到,视频周围的UI不再存在了(这很难观察,因为视频周围的UI通常不会更新)。有关此方法的更多信息,请参阅 DwmSetPresentParameters API。

恐怕我找不到更多关于此的信息。DWM 函数的文档很少。

考虑到您的应用程序的性质,也许值得考虑 小工具 位于 Windows 边栏上。

我不知道是否此变通仍然工作在2009年德尔福:覆盖的CreateParams到设置GetDesktopWindow作为WndParent。

我已经改变了以往Application.Title显示在任务栏按钮的一些信息。我不假设这导致图标的重绘?

在2007年德尔福的主要形式是在任务栏上,如果你设置

  Application.MainFormOnTaskbar := True;

要保持它的更新,那么你需要阻止应用程序最小化,而是仅仅将其移动到后面。您可以通过将窗体上的 TApplicationEvents 并分配一个事件处理程序的 OnMinimize 事件做到这一点,然后调用 Application.Restore 在那里。您将要跟踪自己的最小化状态,并确保你隐藏所有其他形式的(如果有的话),并只能有你的主要形式可见,但在最低的Z-订单时,它是“最小化”。

我不认为Windows Vista中,您可以移动的形式离开屏幕,或者你可以只做到这一点。也许有周围的黑客攻击。

祝你好运!

去你的开源项目,并更改Application.MainFormOnTaskbar为false: Application.MainFormOnTaskbar:= FALSE;

此致 毛

http://sourceforge.net/projects/tcycomponents/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top