2014-10-06 139 views
0

我发现了一些有趣的捕捉程序。 它非常简单,首先它创建了覆盖整个桌面的透明窗口。 然后,您可以选择区域进行捕捉并保存到图像文件。在MFC中创建透明窗口

我只是想知道这个程序如何创建这种透明窗口。其实,我搜索了各种方式使窗口成为透明窗口。大约有3〜4种方式来创建。 --- WS_TRANSPARENT,分层风格的OnColor消息处理,等等。

但是,根据我对这个方案的分析,它不使用这些工艺...

我也看了成资源,但覆盖整个桌面窗口的对话框仅具有WS_VISIBLE和WS_POPUP样式。 如果我添加WS_BORDER或WS_DLGFRAME样式,那么它不能创建透明窗口。 因此,我试图用一个对话框制作我自己的程序,该对话框具有捕获程序的相同对话模板。但它失败了。

最后,我通过API监视器监视程序。 但是,每当程序创建一个对话框createDialogIndirectParam API, 对话框创建并保持创建时刻的透明状态。

有谁有关于这个节目的一些想法?? ...

您可以从链接(FastCapture)

HTTPS下载的抓捕方案://www.mediafire.com/?rssbh9bz9wvmybw

+4

张贴的链接是一个没有给出源的二进制文件。它可能是病毒,也可能是版权侵权。 – 2014-10-06 15:19:58

+0

见https://stackoverflow.com/questions/3970066/creating-a-transparent-window-in-c-win32 – sashoalm 2014-10-06 15:54:44

回答

0

只需创建一个没有边框的窗口,并使用不起任何作用的函数处理WM_PAINT和WM_ERASEBKGND消息。由于没有任何东西能够描绘窗户,所以它将被隐藏起来。

请注意,WS_TRANSPARENT不会做你期望的。它所做的只是影响其他窗口绘制窗口的顺序。

+0

哎!我试过WM_PAINT,但我想不起WM_ERASEBKGND。非常感谢! – 2014-10-06 17:10:40

+0

顺便说一下,由于该窗口并未在其客户区域绘制或执行任何操作,因此我们无法将其命名为“透明”窗口...对吗? – 2014-10-06 17:17:05

+0

@HyunChanPark我不确定你的意思是这个问题。 – 2014-10-06 17:18:02