透明窗口问题

转载 2007年10月05日 10:01:00

如何让一个窗口实现淡入淡出效果或者半透明效果呢?
codeproject的这边文章挺不错的,转链在这里。

http://www.codeproject.com/w2k/QDWndTransparency.asp


/**************************************************************
 * MakeWindowTrasparent(window, factor)
 *
 * A function that will try to make a window transparent
 * (layered) under versions of Windows that support that kind
 * of thing. Gracefully fails on versions of Windows that
 * don't.
 *
 * Returns FALSE if the operation fails.
 */

typedef DWORD (WINAPI *PSLWA)(HWND, DWORD, BYTE, DWORD);

static PSLWA pSetLayeredWindowAttributes = NULL;
static BOOL initialized = FALSE;


BOOL MakeWindowTransparent(HWND hWnd, unsigned char factor)
{
   /* First, see if we can get the API call we need. If we've tried
    * once, we don't need to try again. */
   if (!initialized)
   {
      HMODULE hDLL = LoadLibrary ("user32");

      pSetLayeredWindowAttributes =
         (PSLWA) GetProcAddress(hDLL, "SetLayeredWindowAttributes");

      initialized = TRUE;
   }

   if (pSetLayeredWindowAttributes == NULL)
      return FALSE;

   /* Windows need to be layered to be made transparent. This is done
    * by modifying the extended style bits to contain WS_EX_LAYARED. */
   SetLastError(0);

   SetWindowLong(hWnd,
                 GWL_EXSTYLE ,
                 GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);

   if (GetLastError())
      return FALSE;

   /* Now, we need to set the 'layered window attributes'. This
    * is where the alpha values get set. */
   return pSetLayeredWindowAttributes (hWnd,
                                       RGB(255,255,255),
                                       factor,
                                       LWA_COLORKEY|LWA_ALPHA);
}

相关文章推荐

与大家讨论一下在视频上叠加透明窗口后闪烁的问题,求指导!

公司作了限制,代码和图片都发不出来,请大家耐心往下看。       RT,当视频处于播放状态时,在视频上画一些图案,如多边形,矩形等,对画出的图形还要实现拖动操作。所以需要响应BUTTONUP,B...

GDI+ 为了阴影和透明,使用双层窗口遇到的一些问题

在wnidows C++ 客户端开发中,使用GDI+和png透明或者异形图片,结合UpdateLayeredWindow 双层窗口,可以实现透明,阴影,异形的效果。 其原理便是背景窗口使用Update...

CentOS下Qt窗口透明效果失效,成黑色背景的问题

一、问题        Linux系统下Qt窗口的透明效果成了黑色,但同样的代码在windows机子上有透明效果,主要是修改系统的配置,仅在centos6.3及其以上版本实验过。其他系统可以...

桌面窗口透明调节工具

  • 2015年02月03日 08:59
  • 24KB
  • 下载

设置窗口透明小工具

  • 2015年11月12日 15:40
  • 32KB
  • 下载

qt 窗口置顶/真透明/背景模糊/非矩形/跳过任务栏分页器/无边框/无焦点点击/焦点穿透

新博客地址:http://gorthon.sinaapp.com/ 【本文转载自http://shuizhuyuanluo.blog.163.com/blog/static/778181201222...
  • bh20077
  • bh20077
  • 2012年06月22日 21:34
  • 1901

afl窗口背景透明化

  • 2014年10月14日 23:02
  • 986B
  • 下载

透明圆形窗口源码20121101

  • 2013年02月22日 16:09
  • 245KB
  • 下载

ubuntu美化--透明化窗口栏

ubuntu美化–透明化窗口栏为了改这玩意,我竟然花费了半天 :( ,再加上更换垃圾桶的图标及制作foxitReader的图标,花费了整整一天。透明化窗口栏 这所以费劲要弄窗口透明,是因为经常用终端...
  • scylhy
  • scylhy
  • 2016年09月15日 16:27
  • 3203

易语言窗口透明源码

  • 2013年02月23日 23:26
  • 73KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:透明窗口问题
举报原因:
原因补充:

(最多只允许输入30个字)