在以往的论坛上发现有许多人对“透明窗体”有所讨论,但除了使用 Win2K 的新 API 外,都没有什么新的、或者说是比较完美的解决方案。    自己在编程中也遇到了类似的问题,于是作了一点研究。但也有无法逾越的地方,颇感头疼,想借此宝地再次邀请大家来共同探讨这个老掉牙的话题!代码如下请下载试用(VC + API):http://www.cfan.com.cn/ipb/index.php?showtopic=58901&view=findpost&p=434179    在资源文件中设置窗口的“WS_EX_TRANSPARENT”属性后,再将“WM_ERASEBKGND”的返回值置为“true”。当窗体移动(点住窗体任意处拖拽)时,系统会动态“更新”其下方的图象,但有较剧烈的闪烁,不知具体原因,请大家想办法消除闪烁,并给出相关的技术原理。 

解决方案 »

  1.   

    我记得SafeClean Utilities很早的版本就使用过这种技术,是向窗体下面的窗口发送消息做成的,不过当时没关注界面方面的技术,所以没仔细去看,我再找找,要找到那篇文章我转过来。
      

  2.   

    看来他使用的技术也不适合做这个。你可以看看,他是做混合效果用的。http://home.ncust.edu.cn/~xqkz/softlife/tumingct.htm给了我一点启示,可以向后面的窗体(被覆盖的)发送WM_PAINT,并传递一个HDC参数过去,这样可以画在位图上了,然后显示出来。不过怎么获得窗体背后的窗体列表?并按Z-Order顺序绘制,我还没研究过这些,你先看看此种方法是否可行。