下面这个问题问了两遍了,居然无人可以解决,CSDN真的没有高手了吗???问题:著名DVD播放器WinDVD有这样一个功能:视频桌面,就是把DVD的播放视频窗口作为windows的桌面背景,像WallPaper(但是并不影响桌面图标和用户的操作),用户可以一边工作,一边欣赏DVD。这是个很棒的技术,我想弄清楚是怎样实现的,有哪位大侠能够给点思路?要说明的是,窗口透明或者直接桌面输出都是不行的。

解决方案 »

  1.   

    你前面的帖子,fim(镇江)有回答不适合吗?
      

  2.   

    inherited CreateWnd;
      SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or
        WS_EX_LTRREADING or
        WS_EX_TRANSPARENT or
        WS_EX_TOPMOST or
        WS_EX_TOOLWINDOW or
        WS_EX_LAYERED);
      SetLayeredWindowAttributes(Handle, Color, 100, LWA_ALPHA or LWA_COLORKEY);
     这不是搞定了吗? 那前面的帖子不是有人回答了吗!~上面的代码是可以实现的嘛!~
      

  3.   

    真正象你說的實現, 應該比較難!可能得到桌面的dc, 在上面直接paint 吧, 但不效果會如何???如果將自己form透明處理的, 還要處理將對應消息傳到下層的其它程序的form上, 應該也可以
      

  4.   

    直接将DVD的播放视频窗口做为DeskTop窗口的子应该可以实现你所说的功能。具体步骤如下:
    先获取桌面Rect尺寸
    然后创建新的Rgn GDI对象大小为桌面Rect尺寸大小
    接着设置DVD视频窗口的输出Rgn为刚才创建的新的Rgn
    最后设置DVD Parent为HWND—DESKTOP,最后使用MoveWindow移动DVD Window具体代码可参考我的Blog上的一个Post:framesniper.mblogger.cn
      

  5.   

    FrameSniper(§无形的质§) :你的代碼在那兒撒,我笨,我看不到!
      

  6.   

    好像不难啊.先用FindWindow找出桌面的Handle,然后用控件的SetParentHandle方法把播放控件的ParentHandle设为桌面就行了.
      

  7.   

    把SCREEN.CANVAS作为每帧画面输出的幕布OK!
      

  8.   

    在下说明一下:
    1、直接在Desktop上Paint会破坏桌面的图标,重画图标会影响性能,肯定不行;
    2、YOHOYOHO(月光下的军鸽)的方法只是一个窗口透明的实现,与本问题根本不搭界;
    3、希望大家把思路向ActiveDesktop偏移,可能是个方案。
      

  9.   

    这种小问题,为什么一定要用复杂的办法解决呢?Active DeskTop支持不是支持HTML吗?嵌个Realplay进去,设为桌面不就行了?