VC编程之MFC窗口透明
小标 2018-12-14 来源 : 阅读 1221 评论 0

摘要:本文主要向大家介绍了VC编程之MFC窗口透明,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

本文主要向大家介绍了VC编程之MFC窗口透明,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。

VC编程之MFC窗口透明

[cpp] view plain copy
1.// 在OnCreate()或OnInitDialog()加入以下代码  
2.    SetWindowLong(this->GetSafeHwnd()  
3.                , GWL_EXSTYLE, GetWindowLong(this->GetSafeHwnd()  
4.                , GWL_EXSTYLE)|WS_EX_LAYERED);   
5.    SetLayeredWindowAttributes(RGB(0, 0, 0), 125, 0x2/*0x1 | 0x2*/);  
6.  
7.// SetWindowLong是一个Windows API函数。该函数用来改变指定窗口的属性。  
8.  
9.LONG SetWindowLong(  
10.HWND hWnd,               // handle to window  
11.int nlndex,                    // offset of value to set  
12.LONG dwNewLong      // new value  
13.);  
14.  
15./* 
16.hWnd 
17.窗口句柄及间接给出的窗口所属的类。 
18.nlndex 
19.指定将设定的大于等于0的偏移值。有效值的范围从0到额外类的存储空间的字节数减4:例如若指定了12或多于12个字节的额外类存储空间,则应设索引位8来访问第三个4字节,同样设置0访问第一个4字节,4访问第二个4字节。要设置其他任何值,可以指定下面值之一: 
20.值                                                          意义  
21.GWL_EXSTYLE       设定一个新的扩展风格。  
22.GWL_HINSTANCE 设置一个新的应用程序实例句柄。  
23.GWL_ID                    设置一个新的窗口标识符。  
24.GWL_STYLE            设定一个新的窗口风格。  
25.GWL_USERDATA   设置与窗口有关的32位值。每个窗口均有一个由创建该窗口的应用程序使用的32位值。  
26.GWL_WNDPROC   为窗口过程设定一个新的地址。  
27. 
28.当hWnd参数标识了一个对话框时,也可使用下列值: 
29.值                                                    意义  
30.DWL_DLGPROC      设置对话框过程的新地址。  
31.DWL_MSGRESULT 设置在对话框过程中处理的消息的返回值。  
32.DWL_USER              设置的应用程序私有的新的额外信息,例如一个句柄或指针。  
33. 
34.dwNewLong 
35.指定的替换值。 
36.返回值 
37.如果函数成功,返回值是指定的32位整数的原来的值。如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数。 
38.如果指定32位整数的原来的值为0,并且函数成功,则返回值为0,但是函数并不清除最后的错误信息,这就很难判断函数是否成功。这时,就应在调用SetWindowLong之前调用callingSetLastError(0)函数来清除最后的错误信息。这样,如果函数失败就会返回0,并且GetLastError。也返回一个非零值。 
39. 
40.如果由hWnd参数指定的窗口与调用线程不属于同一进程,将导致SetWindowLong函数失败。 
41.*/  
42.BOOL SetLayeredWindowAttributes(  
43.HWND hwnd, // handle to the layered window  
44.COLORREF crKey, // specifies the color key  
45.BYTE bAlpha, // value for the blend function  
46.DWORD dwFlags // action  
47.);  
48.  
49./* 
50.hWnd是透明窗体的句柄, 
51.crKey为掩码的颜色,可以用RGB(r,g,b)来指定。 
52.bAlpha是不透明度,取值范围是(0,255),其中0代表全透明,255代表不透明。 
53.dwFlags是透明方式,可以取两个值: 
54.当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效; 
55.当取值为LWA_COLORKEY时,窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。 
56.LWA_ALPHA = 0x2 
57.LWA_COLORKEY=0x1 
58.也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。 
59.要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性,方法: 
60.先声明GetWindowLong和SetWindowLong 
61.*/  
   

以上就介绍了VC/MFC的学习,希望对VC/MFC有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言VC/MFC频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程