首先我们要用到的API函数有SetWindowLong,GetWindowLong,SetLayeredWindowAttributes。
SetWindowLong函数原型:
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) _
As Long
函数功能:
该函数用来改变指定窗口的属性
参数:
hwnd: Long //窗口的句柄
nIndex:Long //大于等于0的偏移值。可以是以下指定的值:
常量
| 常量值 |
意义
|
---|---|---|
GWL_EXSTYLE
|
-20 |
设定一个新的扩展风格。
|
GWL_HINSTANCE
|
-6 |
设置一个新的应用程序实例句柄。
|
GWL_ID
|
-12 |
设置一个新的窗口标识符。
|
GWL_STYLE
|
-16 |
设定一个新的窗口风格。
|
GWL_USERDATA
|
-21 |
设置与窗口有关的32位值。每个窗口均有一个由创建该窗口的应用程序使用的32位值。
|
GWL_WNDPROC
|
-4 |
为窗口过程设定一个新的地址。
|
GWL_HWNDPARENT | -8 | 改变子窗口的父窗口,应使用SetParent函数。 |
常量
| 常量值 |
意义
|
---|---|---|
DWL_DLGPROC
|
DWLP_MSGRESULT + sizeof(LRESULT) |
设置对话框过程的新地址。
|
DWL_MSGRESULT
|
0 |
设置在对话框过程中处理的消息的返回值。
|
DWL_USER
|
DWLP_DLGPROC + sizeof(DLGPROC) |
设置的应用程序私有的新的额外信息,例如一个句柄或指针。
|
dwNewLong
dwNewLong中可以使用以下一些列表控件的专用风格:
LVS_ICON LVS_SMALLICON LVS_LIST LVS_REPORT
这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:
大图标显示,小图标显示,列表显示,详细报表显示
LVS_EDITLABELS 结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。
LVS_SHOWSELALWAYS 在失去焦点时也显示当前选中的结点
返回值:成功返回一个32位整数的值,失败为0.
GetWindowLong函数原型
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) _
As Long
函数功能:
该函数获得指定窗口的有关信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。
参数:
hWnd :Long //窗口的句柄
nIndex:Long //大于等于0的偏移值。可以是以下值:
一:
值 | 意义 |
---|---|
GWL_EXSTYLE
(-20)
|
获得扩展窗口风格。 |
GWL_HINSTANCE
(-6)
|
获得应用实例的句柄。 |
GWL_HWNDPARENT
(-8)
|
如果父窗口存在,获得父窗口句柄。 |
GWL_ID
(-12)
|
获得窗口标识。 |
GWL_STYLE
(-16)
|
获得窗口风格。 |
GWL_USERDATA
(-21)
|
获得与窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。 |
GWL_WNDPROC
(-4)
|
获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用CallWindowProc函数调用窗口过程。 |
hWnd参数为对话框句柄时,还可用下列值:
值 | 意义 |
---|---|
DWL_DLGPROC
(4)
|
获得对话框过程的地址,或一个代表对话框过程的地址的句柄。必须使用函数CallWindowProc来调用对话框过程。 |
DWL_MSGRESULT
(0)
|
获得在对话框过程中一个消息处理的返回值。 |
DWL_USER
(8)
|
获得应用程序私有的额外信息,例如一个句柄或指针。 |