代码太多,论坛限制太大,强烈投诉。那有人限制发表文章字数的做法的?!
通过我的多次实践,在编写了许多软件的基础上,我自编和整合了许多较实用的函数。
注意,以下代码前半部分为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 '最大化按钮
......................................................................
完整的代码这里