windows - Sådan viser du en swf og sæt baggrunden gennemsigtig af ActiveX?

Indlæg af Hanne Mølgaard Plasc

Problem



Min kode følger som følger, men baggrunden er ikke gennemsigtig også .. Hvad skal jeg gøre?


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();


Indtast billedbeskrivelse her


Forresten ,, I Qt er der en anden måde at vise swf på? Tak skal du have....

Bedste reference


tilføje


flash->setAutoFillBackground(true)


hvis filmen har en gennemsigtig baggrund, bør du se widgetens originale backgorund

Andre referencer 1


Prøv denne kode


    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(); 


vis aktivx med gennemsigtig baggrund