设置窗口背景透明 .

新建一个MFC Wizard项目,基于对话框。

我们来看看下面这段代码:

[cpp] view plaincopyprint?

  1. SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)^0x80000);  
  2. //加载dll   
  3. HINSTANCE hInst=LoadLibrary("User32.dll");  
  4. if(hInst)  
  5. {  
  6.     typedef BOOL (WINAPI *Fun)(HWND,COLORREF,BYTE,DWORD);  
  7.     Fun fun=NULL;  
  8.     //找到dll中的SetLayeredWindowAttributes函数首地址   
  9.     fun=(Fun)GetProcAddress(hInst,"SetLayeredWindowAttributes");  
  10.     if(fun)  
  11.     {  
  12.          //调用SetLayeredWindowAttributes函数   
  13.          fun(this->GetSafeHwnd(),0,200,2);  
  14.     }  
  15.     //释放dll   
  16.     FreeLibrary(hInst);  
  17. }  

SetWindowLong(GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
//加载dll
HINSTANCE hInst=LoadLibrary("User32.dll");
if(hInst)
{
typedef BOOL (WINAPI *Fun)(HWND,COLORREF,BYTE,DWORD);
Fun fun=NULL;
//找到dll中的SetLayeredWindowAttributes函数首地址
fun=(Fun)GetProcAddress(hInst,"SetLayeredWindowAttributes");
if(fun)
{
//调用SetLayeredWindowAttributes函数
fun(this->GetSafeHwnd(),0,200,2);
}
//释放dll
FreeLibrary(hInst);
}

 

把上面的这段代码放在需要更改对话框背景透明度的地方,例如响应OK按钮函数OnOK里面或者OnInitDialog函数里。

然后点击试试什么效果:

SetLayeredWindowAttributes函数用来设置窗口透明度,看看解析:

http://baike.baidu.com/view/1329156.htm?fr=ala0_1

 

Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

  hWnd是透明窗体的句柄,

  crKey为掩码的颜色,可以用RGB(r,g,b)来指定。

  bAlpha是不透明度,取值范围是(0,255),其中0代表全透明,255代表不透明。

  dwFlags是透明方式,可以取两个值:

  当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;

  当取值为LWA_COLORKEY时,窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。

  LWA_ALPHA = 0x2

  LWA_COLORKEY=0x1

  也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。

  要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性,方法:

  先声明GetWindowLongSetWindowLong

      Dim rtn As Long

  rtn = GetWindowLong(Me.hWnd, -20)

  rtn = rtn Or WS_EX_LAYERED

  SetWindowLong (Me.hWnd, -20, rtn)

  (旧的sdk没有定义WS_EX_LAYERED,所以可以直接指定为&H80000).

  WS_EX_LAYERED = &H80000

 

 

 

from:http://blog.csdn.net/sllins/article/details/5557353

时间: 2024-09-08 18:12:06

设置窗口背景透明 .的相关文章

qt-Qt中设置窗口背景透明

问题描述 Qt中设置窗口背景透明 我用Qt5, 新建工程自动生成的dialog窗口. 在dialog.cpp中加了 setWindowFlags(Qt::FramelessWindowHint); 再在ui界面中设置qss,加入带透明部分的背景图片,就是用的background-image 这样的话背景透明部分就是白的. 如果加上background-color:transparent; 背景透明部分就是黑的了 然后我上网查了一下加了两句 setWindowOpacity(1); setAttr

Word2013怎么设置图片背景透明

  Word2013设置图片背景透明的方法: ①插入所需要处理的图片. ②选中图片,选择"格式"选项,单击"颜色"选项,在"颜色"面板中选择"设置透明色"(word2013在插入图片之后,工具栏会自动调出图片格式的面板). ③在图片单色背景上点击一下,即可将图片单色背景调整成透明了.

qt-如何在Qt5.上设置.窗口整体透明,但是窗体上的控件不透明。

问题描述 如何在Qt5.上设置.窗口整体透明,但是窗体上的控件不透明. 代码: HelloWord::HelloWord(QWidget *parent) : QMainWindow(parent), ui(new Ui::HelloWord) { ui->setupUi(this); QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal)

framebuffer-怎么设置qws背景透明和Framebuffer透明

问题描述 怎么设置qws背景透明和Framebuffer透明 怎么设置qws背景透明和Framebuffer透明!!!!!!!!!!!!!!!!!!! 解决方案 http://blog.chinaunix.net/uid-14966892-id-2780391.html 解决方案二: 求大神出现啊!!!!!!!!一直在线苦等!!!!!!!!!!!!!

Android编程实现设置按钮背景透明与半透明及图片背景透明的方法_Android

本文实例讲述了Android编程实现设置按钮背景透明与半透明及图片背景透明的方法.分享给大家供大家参考,具体如下: Button或者ImageButton的背景设为透明或者半透明: 半透明 复制代码 代码如下: <Button android:background="#e0000000" ... /> 透明 复制代码 代码如下: <Button android:background="#00000000" ... /> 颜色和不透明度 (al

如何设置iframe背景透明

IE5.5开始支持浮动框架的内容透明.如果想要为浮动框架定义透明内容,则必须满足下列条件. 1.与 iframe 元素一起使用的 allowTransparency 标签属性必须设置为 true. 2.在 iframe 内容源文档,background-color 或 body 元素的 bgColor 标签属性必须设置为 transparent  代码如下 复制代码 <iframe src="./ads_top_tian.html" allowtransparency="

javaGUI的JFrame设置窗口背景

设置网页背景透明代码

提示:您可以先修改部分代码再运行 提示:您可以先修改部分代码再运行

win10设置窗口背景

点击放大镜那个搜索图标,搜索regedit,打开注册表编辑器 找到关于颜色的值,路径如图 在『Windows』那里右击,选择修改 将数据改成图中的值(豆沙绿) 重启即可