自编的VB6.0调用WinAPI的模块(整合了许多函数和过程)
通过我的多次实践,在编写了许多软件的基础上,我自编和整合了许多较实用的函数。
注意,以下代码前半部分为WinAPI函数的声明,后半部分为自编函数和过程。
Option
Explicit On
'-----------------------------------------------------------------------------------
' FileName: modCommon.bas
' Function:
通用的变量、常量声明,自编函数、过程以及API函数声明
'-----------------------------------------------------------------------------------
'----------------------- 常量声明 -----------------------
Public
Const User_Pi = 3.1415926 'PI
Public
Const User_Golden = 0.618 '
黄金分割比例
'----------------------- WindowAPI 函数声明 -----------------------
'
设置一个窗口的位置和状态
Public
Declare Function SetWindowPos Lib "user32" (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
'{
'hwnd
欲定位的窗口
'hWndInsertAfter
窗口句柄。在窗口列表中,窗口hwnd会置于这个窗口句柄的后面
Public
Const HWND_BOTTOM = 1 '
将窗口置于窗口列表底部
Public
Const HWND_TOP = 0 '
将窗口置于Z序列的顶部;Z序列代表在分级结构中,窗口针对一个给定级别的窗口显示的顺序
Public
Const HWND_TOPMOST = -1 '
将窗口置于列表顶部,并位于任何最顶部窗口的前面
Public
Const HWND_NOTOPMOST = -2 '
将窗口置于列表顶部,并位于任何最顶部窗口的后面
'x,y
窗口新的x,y坐标
'cx,cy
指定新的窗口宽度和高度
'wFlags
包含了旗标的一个整数,是下列之一,返回值Long,非零表示成功,零表示失败
Public
Const SWP_DRAWFRAME = &H20 '
围绕窗口画一个框
Public
Const SWP_HIDEWINDOW = &H80 '
隐藏窗口
Public
Const SWP_NOACTIVATE = &H10 '
不激活窗口
Public
Const SWP_NOMOVE = &H2 '
保持当前位置(x和y设定将被忽略)
Public
Const SWP_NOREDRAW = &H8 '
窗口不自动重画
Public
Const SWP_NOSIZE = &H1 '
保持当前大小(cx和cy会被忽略)
Public
Const SWP_NOZORDER = &H4 '
保持窗口在列表的当前位置(hWndInsertAfter将被忽略)
Public
Const SWP_SHOWWINDOW = &H40 '
显示窗口
Public
Const SWP_FRAMECHANGED = &H20 '
强迫一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有改变
'}
'
从指定窗口的结构中取得信息
Public
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
'{
'hwnd
欲为其获取信息的窗口的句柄
'nIndex
欲取回的信息,可以是下述任何一个常数:
Public
Const GWL_EXSTYLE = (-20) '
扩展窗口样式
Public
Const GWL_STYLE = (-16) '
窗口样式
Public
Const GWL_WNDPROC = (-4) '
该窗口的窗口函数的地址
Public
Const GWL_HINSTANCE = (-6) '
拥有窗口的实例的句柄
Public
Const GWL_HWNDPARENT = (-8) '
该窗口之父的句柄?不要用SetWindowWord来改变这个值
Public
Const GWL_ID = (-12) '
对话框中一个子窗口的标识符
Public
Const GWL_USERDATA = (-21) '
含义由应用程序规定
Public
Const DWL_DLGPROC = 4 '
这个窗口的对话框函数地址
Public
Const DWL_MSGRESULT = 0 '
在对话框函数中处理的一条消息返回的值
Public
Const DWL_USER = 8 '
含义由应用程序规定
Public
Const WS_MINIMIZEBOX = &H20000 '
最小化按钮
Public
Const WS_MAXIMIZEBOX = &H10000 '
最大化按钮
'}
'
在窗口结构中为指定的窗口设置信息
Public
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'{
'
返回值Long,指定数据的前一个值
'hwnd
欲为其取得信息的窗口的句柄
'nIndex
请参考GetWindowLong函数的nIndex参数的说明
'dwNewLong
由nIndex指定的窗口信息的新值
'}
'
设置窗体的层次属性
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
窗口手柄。当使用CreateWindowEx函数创建窗口时,窗口由WS_EX_LAYERED指定的值创建;
'
或者窗口已经创建后,由SetWindowLong根据WS_EX_LAYERED指定的值改变。
Public
Const WS_EX_LAYERED = &H80000
'crKey
指定颜色值。指向一个COLOR值,该值指定一个透明颜色值,当创建窗口时,窗口将使用该值。
'bAlpha
混合函数值该值。用于描述窗口的不透明度。当bAlpha 值为时,窗口完全透明,
'
当bAlpha值为时,窗口完全不透明。
'dwFlags
动作。这个参数可以取一个或多个值。用它我们可以创建一个不规则的窗体。
Public
Const LWA_ALPHA = &H2
Public
Const LWA_COLORKEY = &H1
'}