Creating User-Defined Types for DLL Functions
A user-defined type is a data structure that can store multiple related variables of different types. It corresponds to a structure in C and C++. In some cases, you pass an empty user-defined type to a DLL function, and the function fills in the values for you; in other cases, you fill the user-defined type from VBA and pass it to the DLL function.
You can think of a user-defined type as a chest of drawers. Each drawer can contain different types of items, but together they can be treated as a single chest of related items. In addition, you can retrieve an item from any drawer without worrying about the items stored in any other drawer.
To create a user-defined type, use the Type…End Type statement. Within the Type…End Type statement, list each element that is to contain a value, along with its data type.
The following code fragment shows how to define the RECT user-defined type, which you use with several Microsoft® Windows® API functions that manage rectangles on the screen. For example, the GetWindowRect function takes a data structure of type RECT and fills it with information about a window's left, top, right, and bottom positions.
Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type
To pass a user-defined type to a DLL function, you must create a variable of that type. For example, if you were planning to pass a user-defined type of type RECT to a DLL function, you could include a variable declaration, such as the following code fragment, in the module:
Private rectWindow As RECT
You can refer to an individual element within the user-defined type as shown in the following code fragment: