Having used PowerBasic for a good 15 years now, I think I have a good feel of the strengths and weaknesses of the compiler. I started programming with PowerBasic (version 5.0) before the compiler implimented any GUI features, which is why I created EZGUI in the first place. When PowerBasic first added the GUI command set (called DDT or Dynamic Dialog Tools), I questioned myself about whether this would make EZGUI obsolete. It did not take long to realize that the compilers GUI command set would not make EZGUI obsolete, but instead it demonstrated how far ahead EZGUI was (and would continue to be) as far as GUI features are concerned.
The EZGUI 1.0 version predated the first PowerBasic compiler (6.0) with DDT, by a year or two and PowerBasic’s PB Forms came out some time after PowerBasic 6.0 did. PowerBasic’s first compiler with GUI features only supported the standard Windows controls and none of the common controls or even the common dialogs. EZGUI 1.0 not only supported the standard controls, but also supported a number of the common controls such as the Toolbar, Tab control, ProgressBar, UpDown control and Tooltips. It also supported a number of the common dialogs, such as fonts, colors and file dialogs. EZGUI 1.0 had a number of proprietary engines in it, such as its Layer engine and Drag and Drop engine (for building visual designers). EZGUI came with its own visual designer/code generator, while it was a year or so after Powerbasic 6.0 was released that they released the first PB Forms visual designer.
Now it is true that PowerBasic always supported coding directly using the Windows API (often refered to as SDK style coding), but coding using the WIN32 API is quite difficult and it takes a long time to learn to become proficient with it. I am a WIN32 programmer and I know how much effort it takes to become proficient with it. Most modern programming languages do not resort to using the WIN32 API for doing GUI tasks, but they normally provide some kind of high level GUI command set or framework. This is what PowerBasic always needed. Its DDT command set, while sufficient for typical usage, lacks important features when one wants to build a more complex user interface which takes advantage of some of the more powerful features in Windows. From its first compiler with the DDT command set, PowerBasic has continually added more and more GUI features (versions 6.0 to 10). For each new version of PowerBasic, there is also a similar new version of EZGUI Professional (1.0 to 5.0) and in each version, once again EZGUI was years ahead of the compiler when it comes to GUI features.
PowerBasic, an excellent compiler
PowerBasic is an excellent compiler, despite any lacks it may have had. The compiler is fast (compile speed) and produces amazingly small executables which are also perform very well. It is comparable to any C compiler in performance. One thing which always struck me about PowerBasic, was how reliable it was. When they added new features to the compiler, they worked and they worked well, that one could be sure of. Reliability has always been one of my priorities when it comes to software development. The language is also very rich in all the low level stuff and general commands. It has one of the best string engines in the industry (it uses OLE for handling variable length string data types, which most compilers do not). No other BASIC compiler, that I know of, comes close to the richness of the language, especially in how it handles data types, like strings. For a WIN32 programmer, PowerBasic is rich with features for low level coding, with things like code and data pointers, embeded arrays (embed an array into any memory location, even a string) and even different calling methods for subroutines and functions. It also has an inline assembler for those who need really low level.
Here are some past blog posts where I talk about why I like PowerBasic:
EZGUI, the missing part of the compiler
EZGUI is what is missing in the compiler. Yes, you can code user interfaces using the DDT command set in the compiler, but you will quickly find that you most likely will have to resort to the WIN32 API for a number of things. You could also simply write your application just using the WIN32 API, but the average programmer today usually lacks enough experience with the low level WIN32 API or they may simply find that even with the necessary experience it is a very slow process writing applications that way.
EZGUI, is more than just some extra GUI commands. It is a GUI framework specifically designed for use with PowerBasic. EZGUI 5.0 Professional (current version) was written using PowerBasic 9.0. It is the integration of features into a single GUI framework which gives EZGUI its power and features. The EZGUI engine takes advantage of some of its own features to build even higher level features. For example, two custom controls in EZGUI, the Files Listbox and Property Listbox controls, are hybrid controls. They are superclasses of the listbox class, but they also are ownerdraw and EZGUI uses its ownerdraw engine to impliment the visual look of the controls. EZGUI uses its own graphic engine for drawing the controls.
EZGUI has a number of proprietary engines, you not only won’t find in the PowerBasic compile but, you won’t find in the Windows WIN32 API. For example its Layer engine, allows one to easily work with Tab controls or build Wizard style dialogs without the need for child forms. Layers make designing such interfaces easy visually in the designer. The layer engine is one of the most popular features of EZGUI and no other visual designer for PowerBasic provides a similar feature (as far as I know). I don’t think I have ever seen a similar feature in other BASIC programming languages. EZGUI also has its own proprietary Canvas control. Unlike PowerBasic’s graphic control, which is only an ownerdraw STATIC control, EZGUI’s Canvas control is a high level custom control I wrote from scratch. I wrote a graphic command set for it and also designed it to use double buffers and DIB buffers so you cna have direct access to the pixel data. But the most powerful feature of the Canvas control is its proprietary 2D Sprite engine, which even has alphablending and anti-aliasing. It was designed for speed and while it does not use DirectX, it performs quite well. Its 100% software based design (rather than hardware support) makes it compatible with most versions of Windows, from Windows 95 to Windows 10, and even works well on Linux using WINE.
But the real power of EZGUI is how it taps into many of the low level customization features in Windows. For example, PowerBasic’s DDT can display an Open File dialog simply enough, but EZGUI allows you to customize the dialog and change its controls and even add a child form to the dialog. EZGUI taps into the low level “hook” features of many of the WIN32 API’s so it can provide customization features. Even with controls, EZGUI subclasses every control so it can add features to it via a low level subclass engine. EZGUI also taps into important features of later versions of Windows such as multi-monitor support, theme support (you can draw in ownerdraw using some theme effects).
EZGUI even goes beyond the compiler, by implimenting similar features in a better way. For example, PowerBasic supports defining Thread functions, but EZGUI provides mechanisms which can improve Thread functions and it even impliments its own, easier to use Thread engine which even support syncronization using Critical Sections. Syncronization is important to make Threads play well with each other. EZGUI also follows the rule of “Threads only for non-GUI tasks” and doing all GUI tasks in the primary thread (the main thread of the applications process). This is something I learned from an excellent book on how to properly use threads in Windows.
Want to learn more about what makes EZGUI different ?
Here are some blog posts where I discuss more about what makes EZGUI different and how it can benefit programmers:
Windows devices getting smaller and the Internet of Things
The coming “Internet of Things” means smaller and smaller Windows capable (x86) devices are coming. Right now, 7 inch Windows tablets are available for only $99. But such devices may have limited memory, limited disk space and even limited CPU performance. So how does one build applications which thrive on such minimal hardware ?
Combine PowerBasic with the EZGUI framework and you have a powerful combination. PowerBasic produces very tiny applications which perform very well. EZGUI is one of the tiniest GUI frameworks around. It does many high level things like 2D sprites, 3D graphics (OpenGL based) and more, but the entire GUI framework only takes up about 1 megabyte of disk space. This means it also takes up less RAM when loaded into memory (DLL’s are loaded in memory). EZGUI was designed so it can run even on legacy PC’s with 1/4 of the resources of the least powerful PC (or tablet) found today. It can thrive on minimal hardware.
So EZGUI makes a great tool for those interested in building applications for small Windows tablets and GUI capable Internet of Things devices.
Here are some blog posts about how EZGUI benefits developers for such devices:
EZGUI is now priced at a more affordable price !
EZGUI 5.0 normally sells for $249 and in my opinion it is worth every penny. But for a limited time, you can purchase EZGUI for only $99 . If you already own a previous version of EZGUI you upgrade now for only $49 (limited time offer).
If you are not a PowerBasic user, then consider buying the PowerBasic compiler and then add EZGUi to your toolbox for this low price. Now most new users of PowerBasic probably prefer the latest compiler, which currently sells for $199. The typical PowerBasic user also tends to use the built in DDT command set, so they likely will also purchase the PB Forms designer (a PowerBasic product) for an extra $99, for a total of $298. EZGUI though has all the GUI features of latest compiler and much more, so you can save money by purchasing the Classic PowerBasic for Windows compiler (which is simply their previous version) for only $99 and then purchase EZGUI on sale for only $99 and save.