
So, if a structure has a boolean member, you should specify its type as vt_b4 instead of vt_b1.

In this case the address of each member is a multiple of four. For instance, often an application uses the double word alignment (4 bytes). Most compilers can align structure members at certain addresses multiple by 1, 2, 4 or more bytes. As the type size can differ from one compiler to another or even between two versions of the same compiler, it is recommended that you refer to the compiler documentation to learn the type size. The purpose of specifying data types is to let TestComplete know the size of memory blocks it should reserve to hold values of structure members and how it should interpret routine parameters and push them to the stack, etc. If the method registers a routine that was registered earlier in the current test or in the previous test (if the ClearSettingsBeforeEachRun option is enabled), it posts a warning message to the test log. Note for Delphi users: the string type is not supported by TestComplete (neither as function parameters, nor as result values). If a function returns a string value (for instance, a char* or wchar_t* value in Visual C++, or an AnsiString or WideString value in Delphi), you will not be able to obtain the function’s result in your test. TestComplete cannot receive string values returned as the results from a DLL function.

If a routine does not return any value, ResType must be either vt_empty or vt_void. This parameter is required, and it must always be specified. It can be one of the constants built in TestComplete or an ID generated by DLL.DefineType (or IDLLAccessProcess.DefineType). The type of the value returned by the function.
