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到额外类的存储空间的字节数减去一个整型的大小-sizeofint))。要设置其他任何值,可以指定下面值之一: [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=GetWindowLongPtrHWND)hwnd,GWL_EXSTYLE);
SetwindowLongPtrHWND)hwnd,GWL_EXSTYLE,index|WS_EX_LAYERED);
SetLayeredWindowAttributesHWND)hwnd,0,125,LWA_ALPHA): //125为透明度

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注