一般会使用WINDOW API的情况,实在是因为VB本身不提供某些功能,但是,程式所 需又不得不然,例如:读取Registry内的资料,VB只提供SaveSetting、Getsetting 等 系列的指令,但是它只能读取特定地区的值,要读、删、更动其他区域的值时,就无法 使用。再如:仔细看一看Combo Box的Events,其中没有MouseMove,但这是我们经常用 上的一个Event,那该如何呢?是的,那只有透过Winodow API。而VB呼叫Window API一 般不都使用API检视员,直接将相对应的API COPY到我们的程式中就好,那还用什麽技 巧吗?其实不然,因为VB资料格式的问题,又加上VB本身没有指标,在许多地方需要一 些小技巧才能解决,而且我们经常因应不同的需求,将API 检视员的宣告COPY过来後再 做一些修改,最重要的,如果有一个.DLL档,它不在API 检视员中定义,那时,就只有 自己想办法啦。
一、 整数叁数
Windows API32位元VB ============================== ============================= Int, INT ByVal Long UNIT, DWORD ByVal Long BOOL ByVal Long ture时为1 WPARAM, LPARAM, LRESULT ByVal Long Handle(如HKEY) ByVal Long WORD, ATOM, SHORT ByVal Integer BYTE, CHAR ByVal Byte
Eg. ----------------------------------------------------------------------------- Windows API 宣告
SHORT GetKeyState( int nVirtKey )
对应的VB宣告
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer -----------------------------------------------------------------------------
这个API 可用来检视某些KEY (如Insert键、Num Lock、CapsLock等)是on/off。程 式如下:这个例子应该可十分楚的看到各个整数间的宣告对应。
----------------------------------------------------------------------------- Dim InsertMode as Integer InsertMode = GetKeyState(vbKeyInsert) And vbShiftMask If InsertMode = 1 then Debug.print "表示 Insert Mode" Else Debug.print "表示 OverWrite Mode" End If ----------------------------------------------------------------------------- 二、 指向整数的指标
Windows API 32位元VB ============================ =========================[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 下一页
|