• 3317阅读
  • 0回复

[原创]Qt显示透明flash [复制链接]

上一主题 下一主题
离线lingdhox
 

只看楼主 倒序阅读 楼主  发表于: 2014-04-25

通过IE显示flash 是通常做法. QAxWidget提供很方便的嵌入, 只是IE对页面的支持可能不是很好
但是QAxWidget有个最大的问题, 不支持透明的flash
解决方法如下
  1. HWND hWnd = (HWND)flash->winId();
  2. LONG lStyle = ::GetWindowLong(hWnd, GWL_STYLE);
  3. lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU);
  4. ::SetWindowLong(hWnd, GWL_STYLE, lStyle);
  5. LONG lExStyle = ::GetWindowLong(hWnd, GWL_EXSTYLE);
  6. ::SetWindowLong(hWnd, GWL_EXSTYLE, lExStyle|WS_EX_LAYERED|WS_EX_TOPMOST|WS_EX_TRANSPARENT);
  7. typedef int (WINAPI* LPFUNC)(HWND, COLORREF , BYTE, DWORD);
  8. HINSTANCE hins = ::LoadLibraryW(L"User32.DLL");
  9. if(!hins)
  10.     return ;
  11. LPFUNC func2 = (LPFUNC)GetProcAddress(hins,"SetLayeredWindowAttributes");
  12. if(!func2)
  13.     return ;
  14. COLORREF clrMask = RGB(255,255,255);    
  15. func2(hWnd, clrMask, 0, LWA_COLORKEY);          
  16. FreeLibrary(hins);
  17. flash->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}"));
  18. //connect(flash,SIGNAL(FSCommand(QString,QString)),this,SLOT(flashAction(QString,QString))); //用于处理FLASH传来的字符串
  19. flash->dynamicCall("LoadMovie(long,string)", 0, "d:/9023.swf"); //调用方法
  20. flash->dynamicCall("WMode", "transparent");

更多写在博客里
http://www.cnblogs.com/lingdhox/p/3666072.html
快速回复
限100 字节
 
上一个 下一个