我們有一些內置的應用程序,內置在MFC中,帶有OpenGL繪圖程序。它們都使用相同的代碼在屏幕上繪製並打印屏幕或將其保存爲JPEG文件。在Windows XP中一切正常,我需要找到一種方法讓它們在Vista上運行。Vista中的MFC應用程序無法使用屏幕截圖
在我們的三個應用程序中,一切正常。在剩下的一箇中,我可以獲得窗口邊框,標題欄,菜單和任務欄,但內部從不顯示。正如我所說的,這些應用程序使用完全相同的代碼寫入屏幕並捕獲窗口圖像,我看到的唯一區別看起來可能相關的是,問題應用程序使用MFC多文檔界面,而使用MFC該工作使用單個文檔界面。
答案不是在網上,或者我在Google上比在想象中更糟。我問MSDN論壇,我得到的唯一實際建議是使用GDI +而不是GDI,而且沒有任何不同。我已經嘗試了與捕獲和打印或保存代碼的每個部分不同的東西,只要給出一個指向窗口的指針,顯然這是窗口本身的問題。我還沒有使用SDI重建違規應用程序,而且我真的沒有任何其他想法。
有沒有人看過類似的東西?
我得到的是四個應用程序。他們使用了大量的通用代碼,並共享實際的.h和.cpp文件,因此我知道繪圖和屏幕捕獲代碼是相同的。
有一個WindowtoDIB()例程,它接受一個* pWnd和一個源矩形和目標大小。它看起來像微軟的微代碼很適應,並且我在Microsoft網站上的這個文件中發現了其他功能。在我的四個應用程序中,三個處理這個很好,但一個沒有。最明顯的區別是問題一是MDI。
它看起來像我* * pWnd是問題。我不是一個長期的MFC大師,在我看來,問題可能是我們在SDI中有一個窗口設置,在MDI中有一個以上的窗口設置。我可能會將錯誤* pWnd傳遞給函數。
與此同時,它已開始在64位Vista測試機器上正常工作,但它仍不能在32位Vista機器上工作。我不知道爲什麼。自從上次測試以來,我沒有改變任何東西,我也沒有想到其他人有過。 (在32位版本中,「打印屏幕」按鍵按預期工作,但不會將屏幕保存爲JPEG格式。)
我很抱歉不清楚。我想讓WindowToDIB()工作。我並不關心打印屏幕。通過「按預期工作」,我的意思是,alt-Print Screen和粘貼到Word(作品,並方便調出)顯示窗口,因爲我看到它。您對兒童窗戶的評論Roel看起來很可能就是我要找的。但是,調用來自* View類,它是CView的子類,它是cWnd的子類。因此,在我看來,我應該已經擁有了正確的cWnd。 – 2008-09-18 17:18:20