Release Notes for VB/DLL. The Visual Basic library builder. 2.10 - The new features for this release aren’t documented in the on- line help yet. What follows is the only documentation for these features (other than the sample VB projects which use them). 1) Single dimension arrays of types Integer, Long, Single, Real, String and Variant can now be passed to both local and remote functions. Only the interface functions that support stack parameter passing (currently VBFunction and DllFunction) can accept arrays as parameters. There’s a new VBX function called GetArrayBounds which the function processing code in the server must call. It retrieves the upper and lower bounds of passed arrays so VB can use them in a ReDim statement. The necessary calls to this function from the server end are automatically created by the code generator in the Case block for the function. The caller must also call this function if the server function resizes the array. An example of this is the DllFunction - strrevArray function in the VB client sample which enlarges the array to hold the reversed strings. Other functions that use arrays are VBFunction - LogBaseN and VBFunction - VariantArray. 2) VB Controls can now be passed to local VB/DLL functions. Only the interface functions that support stack parameter passing (currently VBFunction and DllFunction) can accept controls as parameters. Two new functions in the VBX called VbdllGetProperty and VbdllSetProperty are used to get and set properties for passed controls. Passing controls to remote functions will be in place for the full 2.10 release. Currently, when a control is passed to a remote function, calling VbdllSetProperty will cause the Visible property of the control to be set to 0. The VBFunction-CtlTest function in the VB Client Sample is the only sample function that uses a control. Notice that the VB function declaration for CtlTest doesn’t match the VB/DLL declaration for the function in the Edit Declarations Dialog. This is because the VBX access pointer value is needed in the CtlTest function so it can be passed to the get and set property functions. The caller can’t pass this value because it doesn’t know what it will be. Therefore, the VBX pointer parm is removed from the function in Edit Declarations before the sample code is generated. It must then be added to the VB statement that calls CtlTest after the generated code is pasted in. This will be fixed in the completed 2.10 release by adding a new ParmPnt data type for Edit Declarations which will be used whenever the VBX pointer is needed as a parm. 3) VB/DLL can use the Windows registration database to store the name and path of the library program being called. First, create an entry in the database with RegEdit. The text you put in the Identifier field is what you'll use as Exe Name parameter when calling the DLL Interface. Then put in the exe path and name in the Command field. Make sure you enter the Command field while the action button is selected for Open, not Print. Also make sure the Using DDE check box is not checked. 4) VB/DLL now supports ByVal parameter passing to the DLL Interface functions. Only the interface functions that support stack parameter passing (currently VBFunction and DllFunction) can accept ByVal parameters. ByVal As String accepts a pointer to a null terminated string the same as VB. VB callers will probably never have a need to pass ByVal. 2.05 1) Fix incompatibility problems with Trumpet and Chameleon winsocks. 2) The Winsock Function Server won’t work with SLIP connections that don’t provide a unique internet address for the SLIP client. This includes SLIP connections made through the TIA software package running on a UNIX shell account. 2.0 1) A new DLL function called NetLoadLibrary is now available. This function loads VB/DLL programs on remote Windows systems using the TCP/IP internet-type protocol. The Winsock Function Server must be loaded on the remote computer or the request will be refused. Once a remote library is successfully loaded, function calls to that library will execute on the remote computer as long as a local library with the same name is not already loaded. This behavior can be overridden by using the fFunctionUseWinsock option and supplying an internet address for the task in the ulIPAddress field. This will allow a program to communicate with another instance of itself on a remote computer. NetLoadLibrary accepts a null terminated string for its Internet address parameter. This can either be a numeric address like "1.1.1.1" or a host name like "company.com". See the Windows help for a more detailed description and also see the NetLoad menu option in the Client VB sample project for a usage example. 2) VB/DLL now supports an asynchronous calling mechanism for users that need finer control of the Windows message loop on function calls that don’t finish immediately. Functions that display modal forms and network calls are functions that fit into this category. Two new DLL functions called DllFunctionCall and DllFunction are now available for initiating an asynchronous task. These functions are analogous to the older VBFunctionCall and VBFunction functions in the way they that callers pass in their function parameters. An additional parameter must be passed the new functions. This new parameter is a pointer to a TASKPARM data structure which is defined in VBDLL.BAS and VBDLL.H. This structure contains a field called fOptions which bitwise masking is performed on to determine how the function will execute. There is also a CallHandle field which is filled in with the "asynchronous call handle" of the task. This value is passed to CheckFunctionCall to determine the status of the function. See the Client VB sample project for examples.