【高手指教】请教qq魔法表情的实现原理的delphi实现~  分不够再加~偶只再网络上找到vb的,难道delphi就不能实现么? :(vb的例子的下载地址:
http://www.cnblogs.com/kylixinfo/archive/2004/11/18/65450.html另外,这个vb做的qq魔法表情例子,和现在的最新版本的qq的魔法表情还有差距。
现在的qq魔法表情可以拖动,而且背景变换后还是可以背景透明~ 请高手指点思路。谢谢!!!

解决方案 »

  1.   

    倒~ 楼上的兄弟,你去下载最新的qq版本,然后表情里面会有魔法一栏,就是魔法表情了
    运行后,会在屏幕上出现一个透明、异型的窗口播放flash,可以移动,背景透明、窗口异型
    实现原理和vb做的qq魔法表情例子感觉不同,更牛~  不知道哪位大侠指教一下~
      

  2.   

    Step 1.把下面的代码另存为qqTrans.html文件.
    -----------------------------------------------------------------------
    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    </head><body border= "0"> <SCRIPT LANGUAGE="JavaScript">function ID1_DoFSCommand(command, args) {

    if(command=="window" && args=="closeResult close") {

    document.getElementById('V1').innerHTML = '';

    }}</SCRIPT><SCRIPT LANGUAGE="VBScript">On Error Resume Next
    Sub ID1_FSCommand(ByVal command, ByVal args)
      
      Call ID1_DoFSCommand(command, args)End Sub </SCRIPT> 
    <DIV ID="V1"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" id="ID1" width="400" height="400" align="middle">
    <param name="movie" value="C:\Documents and Settings\Administrator\桌面\qqalpha2\QQ透明动态图标原理\target151.swf" />
    <param name="quality" value="high" />
    <param name="wmode" value="transparent" />
    <param name="bgcolor" value="#ffffff" />
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="scale" value="showall" />
    </object>
    </DIV>
    </body>
    </html>-----------------------------------------------------------------------step 2.打开Delphi新建一个工程.
    在窗体上加一个TWebBrowser组件.然后加入下面的代码..生成EXE.把刚才的qqTrans.html文件放在和EXE相同的目录.运行就可以了..
    没在窗体里加退出代码.楼主自已想办法吧.
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      self.Color := clwhite;
      Self.TransparentColor := True;
      self.TransparentColorValue := clwhite;
      Self.WebBrowser1.Align := alnone;
      Self.BorderStyle := bsnone;
      self.ClientWidth := 400;
      self.ClientHeight := 400;
      self.WebBrowser1.Width := 400;
      self.WebBrowser1.Height := 400;
      self.WebBrowser1.Left := -5;
      self.WebBrowser1.Top := -5;
    end;procedure TForm1.FormActivate(Sender: TObject);
    begin
      Self.WebBrowser1.Navigate(ExtractFilePath(ParamStr(0)) + 'qqTrans.html')
    end;
      

  3.   

    其实楼主应该看看VB的代码的..Delphi本身就提供窗体透明的功能,不用我们截DC的图.当然这么做也有缺点..会把Flash中的一部分也做透明处理.还有别的办法.就是用原来VB源码里带的Html文件..然后在程序中用GetDC(0)得到桌面的DC..再把桌面DC的一部分(窗体所在区域).存到mt4F.tmp文件里.再用WebBorwser组件读那个Html文件.就OK了.
      

  4.   

    To 10975037(猩猩) :你的代码我看了,和那个vb的是同样的思路和实现,但是现在最新版本的qq不同了,我感觉不是这样实现的,因为现在2004 || 正式版的的qq魔法表情可以随意移动,而且你试试,当你去点击拖动的时候,这个魔法表情是个异型窗体~~(也就是说并不是一个四四方方的webbrowser!)请大侠继续~  非常感谢,找到思路偶就利马揭帖~ 在线等待~
      

  5.   

    To 10975037(猩猩) :不好意思哈,猩猩兄^_^   我犯了个错误,我刚才没试你的方法就信口说你的方法不行。
    刚才测试了一下,你的方法确实不错!  谢谢! 揭帖^_^
    有兴趣的朋友可以继续探讨更好的解决办法
    [email protected]