2009-07-28 9 views
5

Tôi đang làm việc trong MFC và tôi đang cố gắng chụp một bmp của máy tính để bàn. Tôi đang sử dụng GetDC (NULL) để làm điều này nhưng có vẻ như nó bỏ qua cửa sổ da đặc biệt. Dường như bỏ qua các cửa sổ được vẽ bằng UpdateLayeredWindow. Hành vi này dường như chỉ xảy ra trên Vista x64 và XP. Tôi cũng đã cố gắng GetWindowDC với HWND máy tính để bàn nhưng kết quả là như nhau.Chụp màn hình bỏ qua một số cửa sổ

GHI CHÚ: 1) Công việc in màn hình. 2) Trên Vista nếu tôi bật Aero, ảnh chụp màn hình là ok, các cửa sổ "đặc biệt" xuất hiện. Vì vậy, trên Vista nó chỉ xảy ra khi Aero bị vô hiệu hóa.

Một ý tưởng?

Cảm ơn bạn.

+0

đối với tôi nó didnt chụp video –

+0

Thú vị ... Có cách nhấn Print Screen thực hiện giống nhau không? – sharptooth

+0

@Umair Ahmed: Tôi nghĩ bản thân Màn hình in không chụp được video –

Trả lời

6

Khi gọi bitblt(), thêm lá cờ CAPTUREBLT để "chụp" lớp cửa sổ

+0

Cảm ơn bạn. Điều này làm việc. – Nemok

+1

IMO loại kiến ​​thức tối nghĩa này chính xác là trang web này là gì. Cảm ơn (ngay cả khi tôi có lẽ sẽ không bao giờ sử dụng nó :)) – Roel

+0

Thật thú vị, nếu tôi bao gồm 'CAPTUREBLT', thì tôi không nhận được khung cửa sổ, chỉ là khu vực khách hàng. Có vẻ như một catch-22. –

1

Điều này có thể là do bố cục máy tính để bàn. Tắt thành phần Aero desktop trong Vista và thử lại.

+0

Aero bị tắt, còn XP không có ... Tôi có thể xảy ra sự cố này khi Aero tắt. Sẽ kiểm tra với Aero trên. – Nemok

+0

Thực tế đã thực hiện một số kiểm tra và có vẻ như khi tôi vô hiệu hóa Aero trong Vista, các cửa sổ "đặc biệt" không xuất hiện. Với nó cho phép họ làm. Trong XP, không có tùy chọn Aero để cho phép sự cố xảy ra mọi lúc. Ý tưởng nào? – Nemok