2014-10-06 67 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