labwindows panel设置透明度方法

labwindows中只有设置panel颜色的方法,没有提供设置透明度的方法。但是在labwindows中可以调用Windows API函数来通过设置窗口透明度的方法来实现panel透明度的设置。

设置panel透明度需要经过一下几个步骤:

(1)需要设置窗口扩展风格。先获取窗口默认的窗口风格,然后再在原有风格基础上添加透明风格。

获取窗口窗口风格函数原型如下:

LONG_PTR GetWindowLongPtr(

HWND hWnd,

int nIndex

);

该函数可获取指定窗口的有关信息,也可用于获取窗口内存中指定偏移的32位度整型值。

index 为欲获取的信息指定值。可以是以下其中之一。

GWL_EXSTYLE  获取扩展窗口样式。更多信息,查阅CreateWindowEx.

GWL_STYLE  获取窗口样式(window styles)

GWLP_WNDPROC   获取窗口程序指示器,或描述指示器的句柄 。如果使用此参数,必须使用CallWindowProc回调函数

GWLP_HINSTANCE     获取一个应用程序实例的句柄 。

GWLP_HWNDPARENT    如果只有一个父窗口,获取父窗口的句柄 。

GWLP_ID    获取窗口标识符。

GWLP_USERDATA    获取窗口关联的数据,是应用程序创建窗口时留给用户的数据。初始值是0。

DWLP_DLGPROC    获取一个对话框的指示器,或描述指示器的句柄 。如果使用此参数,必须使用CallWindowProc回调函数。 DWLP_MSGRESULT  获取一个对话框中的被处理的信息的值。

DWLP_USER 作为指示器或句柄来获取私有应用程序的额外的信息。

设置窗口风格函数如下:

LONG SetWindowLongPtr(

    HWND hWnd,               // handle to window

    int nlndex,              // offset of value to set

    LONG dwNewLong           // new value

);

nlndex:指定将设定的大于等于0的偏移值。有效值的范围从0到额外类的存储空间的字节数减去一个整型的大小(-sizeof(int))。要设置其他任何值,可以指定下面值之一: [1] 

nlndex说明
GWL_EXSTYLE

设定一个新的扩展风格。更多信息,请见CreateWindowEx

GWL_STYLE设定一个新的窗口风格。
GWL_WNDPROC为窗口过程设置一个新的地址。
GWL_HINSTANCE设置一个新的应用程序实例句柄。
GWL_ID设置一个新的窗口标识符。
GWL_USERDATA

设置与该窗口相关的用户数据。这些用户数据可以在程序创建该窗口时被使用。用户数据的初始值为0。

当hWnd参数标识了一个对话框时,也可使用下列值:
DWL_DLGPROC设置对话框过程的新地址。
DWL_MSGRESULT设置对话框中的消息处理程序的返回值。
DWL_USER设置的应用程序所私有的新的额外信息,例如句柄或指针。

dwNewLong:指定的替换值。

(2)设置窗口透明度

函数原型为:

BOOL SetLayeredWindowAttributes(
  HWND     hwnd,
  COLORREF crKey,
  BYTE     bAlpha,
  DWORD    dwFlags
);

其中,dwFlags参数可取以下值:

LWA_ALPHA时:crKey参数无效,bAlpha参数有效;

LWA_COLORKEY:窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。其常量值为1。

LWA_ALPHA | LWA_COLORKEY:crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度

int hwnd,index;
index=GetWindowLongPtr((HWND)hwnd,GWL_EXSTYLE);
SetwindowLongPtr((HWND)hwnd,GWL_EXSTYLE,index|WS_EX_LAYERED);
SetLayeredWindowAttributes((HWND)hwnd,0,125,LWA_ALPHA): //125为透明度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值