- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LabVIEW实现窗口置顶与透明显示
LabVIEW?实现窗口置顶与透明显示
laiping? 2008-8-10
摘要:
本文介绍了如何在LabVIEW?实现窗口置顶与透明显示。
?
关键字:
LabVIEW、API、窗口置顶、透明显示
?
1.窗口置顶与透明显示功能简单介绍
窗口置顶是指运行程序窗口处于屏幕的最前端显示,即屏幕Z序的顶层窗口,位于其它窗口之上。
透明显示是指窗口以一定的透明度显示,可以查看被窗口覆盖下的内容。
?
2.相关API
Labview的VI属性节点Is Frontmostf无法实现窗口置顶功能,无相关VI直接控制窗口置顶与透明显示,所以要实现此功能得调用相关Windows API。主要使用到以下二个API:
SetLayeredWindowAttribute?、SetWindowPos。
2.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]
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扩展属性。(旧的sdk没有定义这个属性,所以可以直接指定为0x80000)。
2.2
Declare Function SetWindowPos Lib user32 Alias SetWindowPos (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。返回值:Long,非零表示成功,零表示失败。
参数说明:
hwnd:欲定位的窗口
hWndInsertAfter:窗口句柄。在窗口列表中,窗口hwnd会置于这个窗口句柄的后面。也可能选用下述值之一:
0:将窗口置于Z序列的顶部;Z序列代表在分级结构中,窗口针对一个给定级别的窗口显示的顺序
-1:将窗口置于列表顶部,并位于任何最顶部窗口的前面
-2:将窗口置于列表顶部,并位于任何最顶部窗口的后面
x:窗口新的x坐标。如hwnd是一个子窗口,则x用父窗口的客户区坐标表示
y:窗口新的y坐标。如hwnd是一个子窗口,则y用父窗口的客户区坐标表示
cx:指定新的窗口宽度
cy:指定新的窗口高度
wFlags:可以是下面一个值或几个数值的和:
H1:不改变大小
H2:不改变位置
H4:不改变Z序列(忽略?hWndInsertAfter?参数)
H10:不激活窗体
H40:显示窗体
H80:隐藏窗体
注解:窗口成为最顶级窗口后,它下属的所有窗口也会进入最顶级。一旦将其设为非最顶级,则它的所有下属和物主窗口也会转为非最顶级。Z序列用垂直于屏幕的一根假想Z轴量化这种从顶部到底部排列的窗口顺序。
?
3.在LabVIEW实现窗口置顶与透明显示步骤
3.1获取当前窗口句柄
要使窗口置顶与透明显示,首先得获取当前窗口句柄,方法是调用Windows API函数FindWindowA,其原型为
HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName)
IpClassName?:指向一个指定了类名的空结束字符串,或一个标识类名字符串的成员的指针。如果该参数为一个成员,则它必须为前次调用theGlobafAddAtom函数产生的全局成员。该成员为16位,必须位于IpClassName的低?16位,高位必须为?0。IpWindowName:指向一个指定了窗口名(窗口标题)的空结束字符串。如果该参数为空,则为所有窗口全匹配。
返回值:如果函数成功,返回值为具有指定类名和窗口名的窗
文档评论(0)