2013-07-04 24 views
11

Bây giờ, QPixmap :: toWinHBITMAP() đã không được chấp nhận, tôi không thể tìm cách lấy HBITMAP từ QPixmap (hoặc QImage).Lấy HBITMAP từ QPixmap trong QT5 (Windows)

Googling, tôi thấy có một hàm gọi là qt_pixmapToWinHBITMAP() có vẻ như sẽ làm những gì tôi cần, nhưng tôi không thể tìm thấy mô-đun nào tôi nên bật -if any- trong tệp .pro của mình hoặc tiêu đề tôi nên đưa vào sử dụng nó, hoặc có lẽ cái gì khác.

Lý do tôi cần HBITMAP là tạo video bằng VFW. Tất nhiên, tôi rất muốn có thể làm điều đó chỉ bằng cách sử dụng Qt. Có mô-đun QtMultimedia, nhưng theo như tôi có thể nói nó không xuất video, vì vậy tôi đoán tôi đang mắc kẹt với việc sử dụng các cửa sổ api trực tiếp.

Mọi trợ giúp sẽ được đánh giá cao.

+0

Xin chào, bạn có tìm thấy giải pháp thay thế nào không? Tôi vừa nâng cấp lên Qt5 và đối mặt với cùng một vấn đề với các cuộc gọi 'fromWinHICON' và 'fromWinHBITMAP' của tôi .. – Dalamber

Trả lời

10

Tôi đã tìm thấy nó!

Tất cả tôi cần là QtWinExtras

http://qt.gitorious.org/qt/qtwinextras

Mã của tôi bây giờ trông như thế này:

#define WIN32_LEAN_AND_MEAN 
#include <windows.h> 
#include <qt_windows.h> 
#include <QtWinExtras/QWinFunctions> 


... 
QPixmap pix(QSize(w,h)); 
... 
HBITMAP hbm = QWinExtras::toHBITMAP(pix); 
... 
::DeleteObject(hbm); 

Tôi không biết nếu tôi cần phải bao gồm tất cả những tiêu đề, nhưng nó hoạt động cho tôi.

4

QtWinExtras là không cần thiết. Chỉ cần sử dụng qt_pixmapToWinHBITMAP(), như QtWinExtras.

Khai báo nó ngay sau khi bao gồm bạn:

và chỉ sử dụng nó. Ví dụ: Ví dụ: nếu bạn muốn truy xuất từ ​​tài nguyên QRC:

QPixmap pixmap(":/image.bmp"); 
HBITMAP hBitmap = qt_pixmapToWinHBITMAP(pixmap); 
Các vấn đề liên quan