透明窗口问题

转载 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);
}

举报

相关文章推荐

VC实现顶层窗口的透明与实现子窗口的透明【重点:子窗口透明处理】

本人在vc开发过程中,多次因窗口透明而煞费苦心,在本人的前一文章《UpdateLayeredWindow与SetLayeredWindowAttributes》中已经指明实现窗口的透明方法,在过往实际...

QT窗口透明几种方式

1.窗口整体透明,但是窗体上的控件不透明。    通过设置窗体的背景色来实现,将背景色设置为全透。 QPalette pal = palette();  pal.setColor(Q...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

win32API实现透明字幕窗口

每周一记! 接上一篇内容 使用GDI实现视频字幕及特效,在实现了写入字幕功能后,添加一个透明的添加字幕窗口。

C# 透明窗体制作方法

制作透明窗体办法有好几种,各有优缺点. 我们先来看看C#本身提供的办法 1:通过设置窗体的 TransparencyKey实现      例:窗体中的白色会变成透明 this...

MFC设置透明窗口

在MFC中,通过设置透明窗口,可以得到有对应透明度的窗口: 如果是对话框,则在OnInitDialog中加上以下代码: SetWindowLong(this->GetSafeHwnd(),GWL_...

VC 窗口透明

原创文章,转载注明出处: 方法一://会闪烁,会刷新窗口; 网上有很多窗口透明的方法,大多都差不多,不过还是有很多人没有完全会用,这里我整理一下,写了一个函数: 窗口透明有两种情况,一种是鼠标可...

c#窗体透明问题

最近一直做flash+不规则窗体,碰到的问题不少。到凌晨了,试了试窗体的属性之一,TransparencyKey,想让他设置为BackColor,可是他不听话,说不是Int32的值,- -,不晓得什么...
  • lllljz
  • lllljz
  • 2012-05-13 23:49
  • 1965

JavaFX透明窗口

今天在写自己的桌面小工具时,做了一个后台运行的周期性任务,想着每次任务完成时在桌面右下角显示一个文字提示。最终做出来Demo效果如下图,点击"显示提示"按钮,桌面右下角用绿色透明显示"显示提示信息成功...

directx 透明窗口

第一步 添加类 class CUImageDC { public:  CUImageDC();  virtual ~CUImageDC();  void Delete();  void...

win32实现两个透明窗口联动

win32实现两个透明窗口联动 在上一篇博客中,我已经完成了一个对某个颜色值透明的win32窗口,存在一个很大的缺陷:透明部分是无法响应鼠标消息的,这就导致窗口无法拖动。在查阅了大量资料也没有发现详...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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