History of Development: Visual Basic 4

May 2, 2020 - Programming, Visual Basic

This is part of a series on some historic development software.
Currently there is content written for Visual Basic 1.0,Visual Basic 2.0,Visual Basic 3.0, and Visual Basic 4.

When it comes to major changes in Visual Basic, Visual Basic 4 is probably one of the biggest changes that came to the software since it’s inception. Visual Basic 2 and 3 were largely standard incremental updates that you would expect. Some very interesting features were added however nothing “game-changing” was necessarily introduced. Visual Basic 4 was different in a variety of ways.

32-bit Support

Visual Basic running on Windows 3.1

The switch from 16-bit to 32-bit was huge, not only for Visual Basic, but for most software in general. Visual Basic 4 is unique amongst all other versions of the product in that it is both 16-bit and 32-bit. The Installation disc allows installing either the 16-bit or the 32-bit versions of the product. This not only allowed developers to create applications on both 16-bit and 32-bit platforms, but also allowed for the creation of software designed for both platforms. Alongside this was a new language feature, conditional compilation. Designed primarily for conditional compilation of 16-bit or 32-bit only code, one could nonetheless define specific constants as well and use that to change how the program was compiled. The 32-bit release also relaxed a number of restrictions that were largely a result of the 16-bit environment, such as 64K limits on things like the textbox. From the 32-bit edition, you could construct applications that were “truly” 32-bit; They could use the Windows 95 Controls provided by the Common Controls library on Windows NT 4 and Windows 95. The cross-compatibility and ability to use the same codebase were limited, however; in particular, you could not “conditionally compile” form designs, or conditionally include forms. If for example you wanted a dialog to use a TreeView in 32-bit mode and an Outline in 16-bit, it would be necessary to create two projects. Creating two separate project files was not atypical for this reason.



32-bit Visual Basic 4 on Windows NT 3.51

Visual Basic for Applications

The underlying language engine was changed to use the same engine as Visual Basic for Applications 2.0. What this meant was that it was much easier to share code between programs that used VBA (At the time, Excel and Microsoft Project among others) and Visual Basic. paired with this feature, Visual Basic 4 offered OLE Automation, allowing you to reference OLE Libraries and use contained functionality.

Class Modules

Class Modules represent perhaps the single biggest change to the language and how applications are constructed. This allowed the creation of Object Models within Visual Basic itself. While VB “Classic”’s Class Modules are stunted at best for those used to more full-featured OO languages, it still enabled OO style programming that simply wasn’t possible previously. Paired with the addition of Class modules was the addition of Property procedures. Property Let, Property Get, and Property Set. Aside from allowing Properties to be defined within the new Class Modules, Form Modules and even standard code modules could have properties defined. Classes could also be organized into libraries, and those projects compiled into OLE DLLs to be referenced by other projects.


32-bit Visual Basic 4 running on Windows NT 4

While some development outfits had done well in creating special tools and add-ons to be installed onto Visual Basic 3.0, there was no official API for such. Usually these extensions worked through the VBX files designed for Control Creation, which gave some access to Visual Basic itself and therefore allowed such software to “inject” itself into Visual Basic 3. Visual Basic 4 established a more official Add-in API and Add-in Manager, and not only that but with the Professional Edition it was even possible to create the add-ins right in Visual Basic.

Additionally, the default file extension for a Project changed from .MAK to .VBP, intended to distinguish Visual Basic Projects from common makefile formats and project files used by some other development tools. For the first time, Visual Basic was offered with not only Standard and Professional Editions, as previous releases, but also in an Enterprise Edition, which primarily provided access to Remote Data Objects, which was the new de-juere Data Access API at the time.




Now here is a fun aside- VB4 also changed the Splash screen to a more standard Microsoft-style splash screen, shared in many ways by for example Microsoft’s Office applications. I extracted these from the VBIDE.DLL file as they are bitmap resources there, as seen to the side. The flavour image in the upper left seems to be the same in the professional and standard editions- but with a shifted colour palette, but the Enterprise Editions splash screen is actually quite interesting in that in addition to a change to the colours it seems to have also added a few elements. In particular, it looks like the flavour image is slightly larger and now there is a orange box acting as a shelf for all the little widget things sitting beneath it all, perhaps to make the Enterprise Edition have more “girth”. As far as specific Edition differences; the Standard Edition contained the Professional Edition offered additional custom controls- (I cannot tell from the documentation specifically which ones or if it is all of the non-default ones though…), Crystal Reports, the Hotspot Editor for creating hypergraphics, (primarily for authoring Help files), ODBC installation, A SQL Server ODBC Driver , and the VisData Data Visualization Tool. The Enterprise Edition offered the aforementioned Remote Data Objects (RDO) and RemoteData controls, and also included Visual SourceSafe, a Component Manager which a rather unusual little tool for registering and unregistering COM components (referred to as OLE Servers it seems) as well as even accessing running OLE Server software exposed on a network. It can also be used to catalog sample code and documentation relating to the components for reference purposes.

Have something to say about this post? Comment!