....... |
Using Windows API in VB Tutorial Handling Parameters |
||
Sometimes the functions do not return the information you need the way you want it. Typical example is combining two integer(2-byte) values specifying the mouse position into one 4-byte value. Another case is telling you that if bit 29 is on it means something. Also, you may receive a Long value that is the address of a structure. Combining or separating values does not need any description. APIMacro.bas you may find on our site (www.geocities.com/SiliconValley/Lab/1632/) contains all functions you need to have. To check if bit N of Value is on use the following: If Value and (2^N) then ... To set a bit on: Value = Value Or 2^N To set a bit off: Value = Value And Not 2^N If you set and get the state of a bit you know beforehand, its much faster to replace 2^10 with 1024. This way VB won't have to calculate it itself (VB "hates" ^). If you receive a pointer to a type, then you must do a bit more. To get the info, you use CopyMem function. Here is the declaration: Declare
Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory"
If you receive a pointer to RECT type in the Long variable Addr, use the following: Dim
Info As Rect Note the ByVal keyword. Now, if you need to put the information back, use: Call CopyMem(ByVal Addr, Info, Len(Info)) |
|||