2012-03-08 85 views
0

我有一个窗口是100x100,但我只想绘制50x100并保留右侧透明而不使用WS_EX_LAYERED。当启用自动隐藏功能时,Windows任务栏似乎会执行此操作。根据GetWindowRect,任务栏高度为40px,但只有2px可见。如何让窗口大于屏幕上显示的窗口而不将其设为分层窗口?裁剪窗口渲染到一个区域

回答

3

SetWindowRgn使您的窗口小于其GetWindowRect

+0

它显示Windows任务栏不使用SetWindowRgn,可以有另一种方式吗? – 2012-03-08 18:08:14

+0

使用此工具:http://www.rohitab.com/apimonitor,它看起来像Windows任务栏在自动隐藏时在开始按钮上使用SetWindowRgn,但不在任务栏上。 – 2012-03-08 18:11:42

0

如果仔细观察,您会看到任务栏高度为40像素,但其中38个像素不在屏幕上。

+0

这就是我想问的问题,在多显示器设置上,这些额外的38像素在第二个屏幕上不可见。 – 2012-03-08 18:49:02

+0

在这种情况下,有一个窗口区域。尝试一下:调用'GetWindowRgn',看它是否会返回一个矩形,用于剪出第二个监视器。 – 2012-03-08 18:58:44

+0

在我的窗口中调用SetWindowRgn强制DWMWA_NCRENDERING_ENABLED被禁用,并且在删除该区域之前我无法重新启用它。有没有办法解决这个问题? – 2012-03-08 19:46:47