Как показать SWF и установить прозрачный фон с помощью ActiveX? - PullRequest
1 голос
/ 15 марта 2012

Мой код выглядит следующим образом, но фон также не прозрачен. Что мне делать?

QAxWidget *flash = new QAxWidget(0,0);      
flash->resize(200,200); 
flash->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));
flash->dynamicCall("LoadMovie(long,string)",0,"D:/test.swf"); 
flash->dynamicCall("WMode", "transparent");
flash->show();

enter image description here

Кстати, в Qt есть ли другой способ показать swf? Спасибо ....

Ответы [ 2 ]

0 голосов
/ 24 апреля 2014

попробуйте этот код

    QAxWidget *flash = new QAxWidget(0, 0);
flash->resize(500, 400); 

HWND hWnd = (HWND)flash->winId(); 
LONG lStyle = ::GetWindowLong(hWnd, GWL_STYLE);
lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU);
::SetWindowLong(hWnd, GWL_STYLE, lStyle); 
LONG lExStyle = ::GetWindowLong(hWnd, GWL_EXSTYLE);
::SetWindowLong(hWnd, GWL_EXSTYLE, lExStyle|WS_EX_LAYERED|WS_EX_TOPMOST|WS_EX_TRANSPARENT); 
typedef int (WINAPI* LPFUNC)(HWND, COLORREF , BYTE, DWORD);
HINSTANCE hins = ::LoadLibraryW(L"User32.DLL");
if(!hins)
    return ;
LPFUNC func2 = (LPFUNC)GetProcAddress(hins,"SetLayeredWindowAttributes");
if(!func2)
    return ;
COLORREF clrMask = RGB(255,255,255);    
func2(hWnd, clrMask, 0, LWA_COLORKEY);          
FreeLibrary(hins);

flash->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));
flash->dynamicCall("LoadMovie(long,string)", 0, "d:/9023.swf"); 
flash->dynamicCall("WMode", "transparent");
flash->show(); 

показать activex с прозрачным фоном.

0 голосов
/ 15 марта 2012

добавить

flash->setAutoFillBackground(true)

если фильм имеет прозрачный фон, вы должны увидеть исходный фоновый виджет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...