在我的C++應用程序,我有以下代碼:的ShowWindow()SW_HIDE窗口即刻,不影響
ShowWindow(hDlg, SW_HIDE);
MakeScreenshot();
ShowWindow(hDlg, SW_SHOW);
這應該捕獲屏幕截圖沒有當前應用程序窗口。但是有一個問題。 SW_HIDE需要一些時間,因爲我的Windows 8.1被配置爲使用動畫效果。所以窗口的隱藏大約需要400毫秒,如果在這個時間間隔(它是)捕獲屏幕截圖,它也將包含應用程序本身的窗口,這是我不喜歡的。
有沒有什麼辦法可以立即隱藏當前窗口,所以它不會被包含在創建截圖函數中,這個函數在它之後立即被調用?如果沒有,有沒有其他的首選方式如何截取Windows桌面的截圖,不包括應用程序本身?在MakeScreenshot之前添加延遲並不是一個好的解決方案。謝謝。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa969524%28v=vs.85%29.aspx –
@HansPassant:你在想的'DWMWA_CLOAK'屬性? –
@Tomas:嘗試使用SystemParametersInfo()在隱藏窗口之前禁用動畫,並在顯示窗口後重新啓用動畫。或者在窗口上啓用'WS_EX_LAYERED'樣式,然後將其不透明度設置爲0,然後返回到255.或者,將窗口移出屏幕然後將其移回。 –