📄 mbase.bas
字号:
Attribute VB_Name = "mBase"
Option Explicit
'项目:基本模块
'作者:zyl910
'版本:1.0
'日期:2004-1-24
'E-Mail:zyl910@sina.com
'缩写说明:
'2-Two-To
'4-Four-For
'//////////////////////////////////////////////////////////
'## 常用 ##################################################
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Public Const CW_USEDEFAULT As Long = &H80000000
Public Const S_OK = 0
Public Const DefNum16 As Integer = &H8000
Public Const DefNum32 As Long = &H80000000
Public Const DefNum = DefNum32
Public Const ErrIdx As Long = -1
Public Type SIZE
cx As Long
cy As Long
End Type
Public Declare Function OleTranslateColor Lib "oleaut32.dll" (ByVal lOleColor As Long, ByVal lHPalette As Long, lColorRef As Long) As Long
'//////////////////////////////////////////////////////////
'## RECT ##################################################
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Public Type POINTAPI
X As Long
Y As Long
End Type
Public Type POINTS
X As Integer
Y As Integer
End Type
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Declare Function CopyRect Lib "user32.dll" (lpDestRect As RECT, lpSourceRect As RECT) As Long
Public Declare Function EqualRect Lib "user32.dll" (lpRect1 As RECT, lpRect2 As RECT) As Long
Public Declare Function InflateRect Lib "user32.dll" (lpRect As RECT, ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function IntersectRect Lib "user32.dll" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Long
Public Declare Function IsRectEmpty Lib "user32.dll" (lpRect As RECT) As Long
Public Declare Function OffsetRect Lib "user32.dll" (lpRect As RECT, ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function PtInRect Lib "user32.dll" (lpRect As RECT, ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function SetRect Lib "user32.dll" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Public Declare Function SetRectEmpty Lib "user32.dll" (lpRect As RECT) As Long
Public Declare Function SubtractRect Lib "user32.dll" (lprcDst As RECT, lprcSrc1 As RECT, lprcSrc2 As RECT) As Long
Public Declare Function UnionRect Lib "user32.dll" (lpDestRect As RECT, lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Long
'//////////////////////////////////////////////////////////
'## Regions - 区域 ########################################
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Public Type XFORM
eM11 As Single
eM12 As Single
eM21 As Single
eM22 As Single
eDx As Single
eDy As Single
End Type
Public Type RGNDATAHEADER
dwSize As Long
iType As Long
nCount As Long
nRgnSize As Long
rcBound As RECT
End Type
Public Const RDH_RECTANGLES As Long = 1
Public Type RGNDATA
rdh As RGNDATAHEADER
Buffer(0 To 0) As Byte
End Type
Public Const RGN_AND As Long = 1
Public Const RGN_OR As Long = 2
Public Const RGN_XOR As Long = 3
Public Const RGN_DIFF As Long = 4
Public Const RGN_COPY As Long = 5
Public Const RGN_MAX As Long = RGN_COPY
Public Const RGN_MIN As Long = RGN_AND
Public Const RGN_ERROR As Long = 0
Public Const NULLREGION As Long = 1
Public Const SIMPLEREGION As Long = 2
Public Const COMPLEXREGION As Long = 3
Public Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
Public Declare Function CombineRgn Lib "gdi32.dll" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Public Declare Function CreateEllipticRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Public Declare Function CreateEllipticRgnIndirect Lib "gdi32.dll" (lpRect As RECT) As Long
Public Declare Function CreatePolygonRgn Lib "gdi32.dll" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Public Declare Function CreatePolyPolygonRgn Lib "gdi32.dll" (lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Public Declare Function CreateRectRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Public Declare Function CreateRectRgnIndirect Lib "gdi32.dll" (lpRect As RECT) As Long
Public Declare Function CreateRoundRectRgn Lib "gdi32.dll" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Public Declare Function EqualRgn Lib "gdi32.dll" (ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long) As Long
Public Declare Function ExtCreateRegion Lib "gdi32.dll" (lpXform As XFORM, ByVal nCount As Long, lpRgnData As Any) As Long
Public Declare Function FillRgn Lib "gdi32.dll" (ByVal hDC As Long, ByVal hRgn As Long, ByVal hBrush As Long) As Long
Public Declare Function FrameRgn Lib "gdi32.dll" (ByVal hDC As Long, ByVal hRgn As Long, ByVal hBrush As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Public Declare Function GetPolyFillMode Lib "gdi32.dll" (ByVal hDC As Long) As Long
Public Declare Function GetRegionData Lib "gdi32.dll" (ByVal hRgn As Long, ByVal dwCount As Long, lpRgnData As Any) As Long
Public Declare Function GetRgnBox Lib "gdi32.dll" (ByVal hRgn As Long, lpRect As RECT) As Long
Public Declare Function InvertRgn Lib "gdi32.dll" (ByVal hDC As Long, ByVal hRgn As Long) As Long
Public Declare Function OffsetRgn Lib "gdi32.dll" (ByVal hRgn As Long, ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function PaintRgn Lib "gdi32.dll" (ByVal hDC As Long, ByVal hRgn As Long) As Long
Public Declare Function PtInRegion Lib "gdi32.dll" (ByVal hRgn As Long, ByVal X As Long, ByVal Y As Long) As Long
Public Declare Function RectInRegion Lib "gdi32.dll" (ByVal hRgn As Long, lpRect As RECT) As Long
Public Declare Function SetPolyFillMode Lib "gdi32.dll" (ByVal hDC As Long, ByVal nPolyFillMode As Long) As Long
Public Declare Function SetRectRgn Lib "gdi32.dll" (ByVal hRgn As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
'-- PolyFillMode
Public Const ALTERNATE As Long = 1
Public Const WINDING As Long = 2
'//////////////////////////////////////////////////////////
'## Memory - 内存 #########################################
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Public Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Sub MoveMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Declare Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" (Destination As Any, ByVal Length As Long)
Public Declare Sub FillMemory Lib "kernel32.dll" Alias "RtlFillMemory" (Destination As Any, ByVal Length As Long, ByVal Fill As Byte)
Public Declare Function IsBadCodePtr Lib "kernel32.dll" (ByVal lpfn As Long) As Long
Public Declare Function IsBadReadPtr Lib "kernel32.dll" (lp As Any, ByVal ucb As Long) As Long
Public Declare Function IsBadWritePtr Lib "kernel32.dll" (lp As Any, ByVal ucb As Long) As Long
'//////////////////////////////////////////////////////////
'## String - 字符串 #######################################
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Public Declare Function IsBadStringPtr Lib "kernel32.dll" Alias "IsBadStringPtrA" (ByVal lpsz As String, ByVal ucchMax As Long) As Long
Public Declare Function IsBadStringPtrA Lib "kernel32.dll" (lpsz As Any, ByVal ucchMax As Long) As Long
Public Declare Function IsBadStringPtrW Lib "kernel32.dll" (ByVal lpsz As Long, ByVal ucchMax As Long) As Long
Public Declare Function lstrcat Lib "kernel32.dll" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Public Declare Function lstrcmp Lib "kernel32.dll" Alias "lstrcmpA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Public Declare Function lstrcmpi Lib "kernel32.dll" Alias "lstrcmpiA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Public Declare Function lstrcpy Lib "kernel32.dll" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Public Declare Function lstrcpyn Lib "kernel32.dll" Alias "lstrcpynA" (ByVal lpString1 As String, ByVal lpString2 As String, ByVal iMaxLength As Long) As Long
Public Declare Function lstrlen Lib "kernel32.dll" Alias "lstrlenA" (ByVal lpString As String) As Long
Public Declare Function lstrcatA Lib "kernel32.dll" (lpString1 As Any, lpString2 As Any) As Long
Public Declare Function lstrcmpA Lib "kernel32.dll" (lpString1 As Any, lpString2 As Any) As Long
Public Declare Function lstrcmpiA Lib "kernel32.dll" (lpString1 As Any, lpString2 As Any) As Long
Public Declare Function lstrcpyA Lib "kernel32.dll" (lpString1 As Any, lpString2 As Any) As Long
Public Declare Function lstrcpynA Lib "kernel32.dll" (lpString1 As Any, lpString2 As Any, ByVal iMaxLength As Long) As Long
Public Declare Function lstrlenA Lib "kernel32.dll" (lpString As Any) As Long
Public Declare Function lstrcatW Lib "kernel32.dll" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
Public Declare Function lstrcmpW Lib "kernel32.dll" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
Public Declare Function lstrcmpiW Lib "kernel32.dll" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
Public Declare Function lstrcpyW Lib "kernel32.dll" (ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
Public Declare Function lstrcpynW Lib "kernel32.dll" (ByVal lpString1 As Long, ByVal lpString2 As Long, ByVal iMaxLength As Long) As Long
Public Declare Function lstrlenW Lib "kernel32.dll" (ByVal lpString As Long) As Long
'//////////////////////////////////////////////////////////
'## 模拟指针 ##############################################
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
'项目:VB模拟指针模块
'作者:zyl910
'版本:1.0
'日期:2004-1-20
'E-Mail:zyl910@sina.com
'功能&特点:
'1.是在栈中建立模拟指针的。这样就允许 递归、多线程
'2.允许编译优化。且这种模拟指针构造方法是 在栈中建立、编译优化 的情况下最快的
'3.能像C/C++的指针一样将指针当数组用
'4.允许负向寻址。这样有助于图像卷积处理、缩放旋转
'5.允许元素大小与步长不同。(Byte可以,好像Single不行)
'注意:
'1.String、Object都是引用型数据类型。除非你非常了解,否则不要轻易使用。
'2.初始化地址时,别直接改SAFEARRAY1D.pvData修改地址,应该使用Ptr属性。这样具有通用性
'3.别迷信Ptr属性。循环中可以利用地址的连续性优化代码(直接修改SAFEARRAY1D.pvData)
Public Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (Var() As Any) As Long
Public Type SAFEARRAY
cDims As Integer '这个数组有几维?
fFeatures As Integer '这个数组有什么特性?
cbElements As Long '数组的每个元素有多大?
cLocks As Long '这个数组被锁定过几次?
pvData As Long '这个数组里的数据放在什么地方?
'rgsabound() As SFArrayBOUND
End Type
Public Type SAFEARRAYBOUND
cElements As Long '这一维有多少个元素?
lLbound As Long '它的索引从几开始?
End Type
Public Type SAFEARRAY1D
cDims As Integer
fFeatures As Integer
cbElements As Long
cLocks As Long
pvData As Long
Bounds(0 To 0) As SAFEARRAYBOUND
End Type
Public Const FADF_AUTO As Long = &H1
Public Const FADF_STATIC As Long = &H2
Public Const FADF_EMBEDDED As Long = &H4
Public Const FADF_FIXEDSIZE As Long = &H10
Public Const FADF_RECORD As Long = &H20
Public Const FADF_HAVEIID As Long = &H40
Public Const FADF_HAVEVARTYPE As Long = &H80
Public Const FADF_BSTR As Long = &H100
Public Const FADF_UNKNOWN As Long = &H200
Public Const FADF_DISPATCH As Long = &H400
Public Const FADF_VARIANT As Long = &H800
Public Const FADF_RESERVED As Long = &HF008
'//////////////////////////////////////////////////////////
'## Time - 时间 ###########################################
'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -