No announcement yet.

EZGUI discounted for a short time, only $39 for limited time

  • Filter
  • Time
  • Show
Clear All
new posts

  • EZGUI discounted for a short time, only $39 for limited time

    You can now purchase EZGUI 5.0 Professional for only $39 for a limited time. Act now before the price goes back to the normal $249 price.

    To order, you can go directly to the BMT-Micro order page using this link:

    Click here for an overview of the features of EZGUI 5.0 Professional:


    What is EZGUI 5.0 Pro ?

    It is the only GUI framework specifically designed for use with Powerbasic. It consists of a runtime framework (DLLs) and its own drag and drop Visual Designer/Code Generator.

    How big is the runtime ?

    The runtime has a primary DLL which is about 700 KB in size. I would say about 90% of the feature set is contained in this one DLL. Most applications can consist of your EXE and this one DLL. There are a number of secondary DLL's which are used for special features, ranging from 22 KB to 88 KB in size. One is a bit larger, which contains the OpenGL Canvas control (for 3D) which is 225 KB in size.

    Does EZGUI do 3D ?

    Yes, it has its own 3D custom control which is OpenGL based, with its own 3D scripting language built in.

    Does EZGUI do 2D drawing and animation ?

    Yes, it has its own 2D Canvas control for drawing, plus it has its own 2D Sprite (animation) engine built in.

    Does EZGUI have more than just the system controls ?

    Yes, it has a number of built in custom controls. Aside from the 3D Canvas and 2D canvas control is has a Property Listbox control, Files Listbox control, Turtle Graphics control (vector based images), Masked Edit control, Shape / Hotspot / Splitterbar control (all in one) and an MCI control (MCI multimedia with built in scripting language).

    Does the Visual Designer have its own code editor built in ?

    No. Instead is allows you to define any compatible external code editor to be used (ie. Jellyfish, PB IDE) and when it generates code it runs your own code editor of choice. By using a Smart Parser technology (literally rewrites your code before running your code editor), it allows you to have an integrated environment where you can move seamlessly between designed and code editor.

    What advanced system controls (ie. common controls) does it support ?

    Listview, Treeview, Toolbar, Statusbar, Progressbar, Pager, Rebar, Tab control, UpDown control, Calendar control, DateTime control, Trackbar control, Animation control, MDI custom control (for Multiple Document Interface) and RichEdit control (supports versions 1.0 to 4.0).

    Does EZGUI have its own print engine ?

    Yes it does and even a hybrid print to Canvas (using same code for Printer and Canvas) for building your own print preview display.

    How big is the EZGUI command set ?

    Nearly 1000 commands, not counting the scripting languages. It is larger than some programming language GUI command sets.

    I heard EZGUI is just a simple wrapper over the WIN32 API, is this true or not ?

    Absolutely not true ! EZGUI is an advanced GUI framework unlike anything else for Powerbasic and it contains a significant amount of proprietary engines in it, such as OpenGL 3D scripting language, 2D sprite engine, advanced graphics, many custom controls, threading engine, layer engine and more. Many commands in EZGUI contain many hundreds of lines of code in them and would not be easy to even come close in emulating yourself using the WIN32 API alone.

    Is EZGUI suited for building commercial software ?

    Absolutely! That is what it was designed for. A number of long time EZGUI users are writing commercial software with it. It has proven itself to be reliable and effective for building quality software.

    I already use DDT (PB Forms) or Firefly. Of what benefit would EZGUI be for me ?

    Rather than view it as a replacement for other development methods, consider it simply just another tool in your toolbox. Continue to use those other methods for the things they work best for, but use EZGUI for the kind of software you would never even consider doing with those tools. For example, if you need OpenGL 3D, then use EZGUI for apps which require that. If you need more complex user interfaces, which you can build in half the time, then consider using EZGUI for that. Use EZGUI for what it was designed for, building complex advanced user interfaces. I guarantee you, that the kind of user interfaces you can build with EZGUI 5.0 pro are simply beyond those other tools, unless you are a very advanced and very experienced WIN32/OpenGL programmer and even then it would likely take you 5 times longer to do it with them.

    What is the one thing you feel most potential users don't understand about EZGUI ?

    Its raw power !!! Yes, I mean that. I didn't design EZGUI just to satisfy customer requests for features, but I designed it for myself first. Yes, I designed into EZGUI powerful features which I felt were key to making it one of the most power (yet tiny) GUI frameworks around with almost unlimited possibilities. Most current EZGUI users only use a small portion of the feature set and if they only knew how much was really there, they would be surprised. Often customers request some "new" feature, only for me to tell them "EZGUI already does that" and when they see how easy it is, they are often very surprised.

    EZGUI has many levels to it, from very high level to very low level. If you can't do something exactly the way you want with the high level commands, then often it can be done with just a little more code using the medium level commands. If that won't accomplish what you want, then very likely, with a little more code, it can be done using EZGUI's low level commands. EZGUI was also designed so one can easily integrate WIN32 API code into it. It even provides "hooks" into some of its low level engines, so you can change its code functionality.

    EZGUI is so powerful (truthfully so) that it is worth every penny of its normal $249 price. But for the low sale price I offer it is an amazing deal. No matter what other tools or method you currently use (DDT, PB Forms, Firefly), EZGUI is definitely worth being part of your programming toolbox.

    I am a hobby programmer, so even the low sale price is a lot for me! Of what benefit would it be for me ?

    If you are a hobby programmer, then definitely at this low price you should consider buying EZGUI. Compare the low price to the normal $249 price. You definitely would not buy it for $249, but now it is affordable and worth getting. Why ? Because often many a "hobby" programmer eventually turns out to become a professional programmer. Some hobby programmers, with the right tools, can build apps which they sell themselves online. Whether shareware style or simply "pay first", such apps written by hobby programmers, if done well, can be become "hits" in their own market. EZGUI's feature set is so advanced that some hobby programmers find themselves building apps with it they thought never possible for them.

    I learned programming back in the 1980's when many were hobby programmers. I eventually found myself writing custom software for a number of local businesses and never envisioned I would become an advanced Windows programmer someday. Do not underestimate what you can accomplish with the right tools. Not every hobby programmer can reach a professional level, but you would be surprised how many of todays professional programmers started it as a hobby.

    Do I get tech support at this low price ?

    Absolutely. I provide some of the best tech support around. You can email me questions or register on my forums for online support. I regularly check my forums and often post answers for most questions within a few hours after the post. My forums are not Peer to Peer like the PB forums. They are a true tech support forum and I try to answer most questions myself. Also other forum users often will add to the answers, so you get plenty of feedback.

    My online forums:
    Last edited by Chris Boss; 26 Oct 2017, 12:32 PM.
    Chris Boss
    Computer Workshop
    Developer of "EZGUI"

  • #2
    Last edited by Chris Boss; 10 Nov 2017, 09:08 PM.
    Chris Boss
    Computer Workshop
    Developer of "EZGUI"


    • #3

      What are some of the key benefits of EZGUI 5.0 Pro ?

      First, I would say ease of use. Even if you were to use another development tool which provides ease of use in the design stage (visual designer), what really matters is when you have to code. Visual Designers don't solve the coding problem, of the terseness of the Windows API. A few API wrappers may be helpful, but when it comes to the more complex tasks, coding using the Windows API is simply put, a pain. Sure you can look up each API in the SDK docs, but what the SDK does not do is teach you how to combine multiple API calls together to accomplish more complex tasks.

      EZGUI has a huge library of commands to handle likely almost everything you possibly can image you would need to do in an app. Where things are more complex, EZGUI provides a set of commands which work together to make the task easier to do. One good example is ownerdraw. EZGUI makes it far easier than it would be with the Windows API, that is for sure.

      Second, it provides an engine to handle a significant portion of common tasks, so you can concentrate on the important things. For example, scrollbars don't require a lot of code to simply make them work and increment the scrollbar. EZGUI does all that under the hood. You simply get an event when the scrollbar changes and you get passed the current scrollbar position. Trackbar controls do the same. So does the updown control. EZGUI handles most of the mundane stuff so you can concentrate on the real code which makes your app do something unique.

      Third, EZGUI provides many very high level features, which I doubt the average PB programmer would even know where to start or how to do. For example, EZGUI has a built in drag and drop engine for building apps like a Visual Designer. EZGUI provides a powerful engine which does all the hard stuff for you. EZGUI provides a 3D custom control with an easy to use 3D scripting language. It handles all the hard stuff in doing OpenGL, so you can create 3D apps you never thought possible before and no OpenGL knowledge required. You won't be getting that in any other visual designer/code generator tool for Powerbasic.

      Why does EZGUI use DLL's rather than a Static Library (SLL) ?

      Simply put, there are some things a DLL can do which an SLL can not. Second, DLL's provide reusable libraries which decrease the overall size of your application when using multiple EXE's. If you use one EXE, then you don't fully benefit from this, but if your app is made up of multiple EXE's, then by sharing a common runtime in DLL form the overall size of the app is significantly smaller. Classic Visual Basic programmers have been using shared libraries in DLL form for many years with no problem.

      Now some may complain saying "I write small single EXE apps and don't want a DLL". My answer is, EZGUI was not developed for you. EZGUI was designed for those who write large commercial apps, which often require many EXE's and which have complex user interfaces. If your needs are simple then the built in DDT command set in Powerbasic should suffice for you.

      Do you really believe EZGUI pro is worth even the original $249 price ?

      Absolutely. I was programming back in the old Classic Visual Basic days and I remember getting a catalog in the mail which catered to VB'ers with all sorts of third party tools, from programming tools to custom controls. Most of the third party addons were a few hundred dollars and some close to $1000. If there was something like EZGUI back then it would likely have been close to $1000 and for its feature set it would have been very cost effective.

      For a hobby programmer that kind of money seems outrageous, but in the professional programming world it was cheap. If a programming tool saved you significant time in development, then even at $1000 it was worth the cost.

      Last edited by Chris Boss; 7 Nov 2017, 03:16 PM.
      Chris Boss
      Computer Workshop
      Developer of "EZGUI"


      • #4
        Just another comment about tech support:

        Tech support forums for many products tend to provide minimal response from the developer of a product. Unlike many other tech support forums, the EZGUI forums abound with replies directly from its developer (me). rather than short, terse answers in generalities, I try to provide clear and extensive answers to questions, often providing background info to help better understand things.

        Just check out the main discussion board on my forums with questions about EZGUI here:

        Select a number of topics and notice the answers provided by tech support (me) rather than simply other EZGUI users. I try to explain things in detail, at times posting long extensive posts, when needed. I try to post insights to how EZGUI works under the hood, as well as background of what EZGUI actually does under the hood, such as what API's it may call to accomplish a task.

        You won't often find this kind of tech support from other companies.
        Chris Boss
        Computer Workshop
        Developer of "EZGUI"


        • #5

          What makes EZGUI so different ?

          It does many things you just never thought you could do before. For example, EZGUI supports multiple monitor features of Windows. It has a unique Layer engine which allows you to define controls on different layers and then show and hide controls by layer. It provides support for drawing using Themes. You can customize the common dialogs and even add child forms to them. How about being able to scale, rotate up to 360 degrees and alphablend (or transparent draw) a bitmap all in one command ? How about creating a hybrid graphic window with a real Canvas background (2D drawing) with 3D floating objects on top of it ? You can implement not only drag and drop in a Listview or treeview control, but what about having an autoscroll feature (drag item beyond visible area and have control autoscroll items for you) ?

          The list goes on. EZGUI does so many things you likely have never done before, you will be amazed at what you can accomplish with it.EZGUI makes complex tasks easy to do.

          Chris Boss
          Computer Workshop
          Developer of "EZGUI"


          • #6

            What is the Visual Design engine in EZGUI ?

            EZGUI provides a command set, plus an internal engine to run it, which allows you to build a visual designer. You can use it to build your own programming visual designer, or a report generator or any other type app which works similarly.

            EZGUI does this by embedding the visual designer drag and drop engine into its subclassing engine. In essence what it does is when you subclass any control (even custom controls) it provides access to the drag and drop engine so you can resize and drag control using the visual designer engine. It supports a snap to grid, provides commands for drawing (rubberbanding) a rectangle which will define where a control will go. To prevent a control from responding to user input during edit mode, it turns off all user input via its subclassing engine. There is also a drag engine for displaying multiple drag rectangles at one time, even hundreds at one time, which is how you drag multiple controls at one time.

            The command set is as follows:

            Visual Designer Drag and Drop Commands:

            EZ_HandleCtrl (Drag Handle Control)


            Key to all of this is the Drag handle control. It is a custom control which can have any other control defined as its "buddy". Once defined, it handles all the drag operations and displays the drag handles over the control. Drag handles can be displayed either outside or inside of the buddy control.

            No other addon for Powerbasic that I know of provides this kind of engine. It is unique to EZGUI.

            Chris Boss
            Computer Workshop
            Developer of "EZGUI"


            • #7

              What are layers ?

              EZGUI has a layer engine which Is quite unique. Windows does not have a layer engine, so this is a proprietary engine which is probably the most useful feature in EZGUI and most users value it.

              EZGUI allows you to define controls as they are created onto a specific layer from -1 to 99. -1 means ignore and don't assign to any layer. 0 means background layer which is always showing. Layers 1 to 99 are separate layers where only one shows at a time (plus the background layer). Now this is where it gets interesting. EZGUI has a command called EZ_DisplayLayer. If I have say 5 layers (1 to 5) and I asked EZGUI to display Layer 3, it will hide layers 1,2 and 4,5 and then show layer 3 (plus layer 0 the background layer). When it hides and shows controls, it does not simply hide and show them one at a time, since that would produce terrible flicker. EZGUI prevents the controls from be repainted when then are hidden and shown. It goes through its internal list of controls showing and hiding the appropriate controls. It then flags the regions where a control is either hidden or shown and generates a region for repainting so only what needs to be repainted is. Then EZGUI repaints the entire region all at one time, so the controls appear to display together at the same time. This eliminates much of the flicker one would get otherwise.

              Tab controls can be implemented via layers, so no child forms are required for a tab control. You can use Layers for creating Wizard style dialogs.
              Chris Boss
              Computer Workshop
              Developer of "EZGUI"


              • #8

                How does EZGUI reference Forms ?

                One of the problems with Forms / Dialogs in Windows is that you have to store a handle for it using a Global variable. Unlike controls where you can define a control ID (and using its parent handle get the controls handle), apps with many forms can be a pain because you have to have so many global variables to store the handles.

                EZGUI makes coding a lot easier, by referencing Forms using a name (a string). For example you could name a Form "MyMainForm" and then reference it anywhere in code using its name. EZGUI maintains a list of form names internally and it turns the name into all capitals. For example you could set the text for a Forms caption bar using:

                EZ_SetText "MyMainForm", 0, "This is my caption bar text"

                also you can do it this way:

                EZ_SetText "MYMAINFORM", 0, "This is my caption bar text"

                Either way works. EZGUI always converts the name you pass to it to uppercase characters before testing the name to see if it matches its internal list.

                You don't have to store any handles for forms. Now if you need the actual handle, say for calling a WIN32 API, then you simply use the EZ_Handle function to get it like this:

                hWnd& = EZ_Handle ("MyMainForm",0)

                You can get handles for controls the same way by passing a control ID for the second parameter like this:

                hCtrl& = EZ_Handle ("MyMainForm", SomeControlID&)

                EZGUI has an event engine where it generates events for forms and controls, so you don't have to write a Dialog or Window procedure, nor do you use callbacks like DDT does. Instead you simply use the EZ_Events routine all EZGUI apps must have where it passes events to all the forms and controls in the app in one procedure (you can parse them out into secondary routines for clarity if you like, kind of like message wrappers API programmers use). EZGUI translates many common window messages into easy to use events. The event routine is passed the following parameters:

                EZ_Events FormName$, Control_ID& , ControlEventMsg& , ControlEventMsgValue&, CancelEventFlag&

                EZGUI uses simpler names for the parameters when you code (ie. using the Visual Designer) like this:

                EZ_Events FormName$, CID&, CMsg& , CVal& , Cancel&

                EZGUI's event engine passes the form name and control ID (zero if event is for form itself) to this routine. The event is simply a constant defined in the EZGUI include file like %EZ_Click, %EZ_DClick, %EZ_Change .

                If an event requires a value passed (ie. scrollbar position changes in %EZ_Change and the new position is passed) then it passes it in ControlEventMsgValue& . If the event needs to pass something more complicated that just a single integer value, then the parameter contains a pointer to a structure and EZGUI has a matching command where it can read the structure and return all the values like this:

                CASE %EZ_SubClass  ' event value passed in CMsg&
                    DIM hCtrl&, Msg&, wParam&, lParam&, X&, Y&
                    EZ_GetSubClass CVal&, hCtrl&, Msg&, wParam&, lParam&
                    IF EZ_IsMsg(Msg&, "B") THEN   ' button message
                         EZ_GetMouseXY lParam&, X&, Y&
                         DoSomeThingSub X&, Y&
                    END IF
                 END IF
                So you don't have to use pointers. Just pass the CVal& value to the supporting command the event comes with and it handles reading the pointer data for you.

                EZGUI also has a Form Macro which can be used in most events. If you want to call commands using the same form name as the event was generated for, you can simply use the form macro "{ME}" instead. EZGUI knows which form generated the event, so any commands which require a form name and you are using the same form name as the event was generated by (which is most of the time), you can simply use the "{ME}" macro instead and EZGUI knows what the form name is.

                Chris Boss
                Computer Workshop
                Developer of "EZGUI"


                • #9

                  Is there anything I can download which demonstrates what EZGUI can do ?

                  Yes, there is. While there is no demo version of EZGUI, I do have a few downloads which may interest you.

                  My test app I wrote using EZGUI which demonstrates the following features:
                  • Splash screens (forms)
                  • Rebar forms
                  • MDI Parent and MDI child
                  • Pager forms
                  • Tiling bitmaps on form background
                  • Stretching bitmaps on form background
                  • Non-rectangular forms using complex regions
                  • 2D and 3D colored buttons (using simplified ownerdraw engine)
                  • Simplified ownerdraw listbox, combobox
                  • Advanced (low level) Listview
                  • Customdraw listview and treeview
                  • Custom controls - File listbox , Property Listbox, Shape control, Hotspot control
                  • Visual Designer engine demo
                  • Listview and Treeview drag and drop plus autoscrolling engine
                  • MCI video and MIDI audio
                  • Turtle Graphics contorl
                  • Canvas control
                  • 2D Sprite engine
                  • 3D canvas control and 3D animation using 3D scripting language

                  Here is another test app which demonstrates a 3D model viewer app (displays STL models):

                  This one you can also get the source code to look at here:

                  Both apps above are 100% written using EZGUI 5.0 Pro. Not a single WIN32 API call (and no DDT either) are used in either app, but only the EZGUI runtime command set.

                  Chris Boss
                  Computer Workshop
                  Developer of "EZGUI"


                  • #10

                    Can I see a demonstration of how the Visual Designer works ?

                    Yes, I have some Youtube videos online you can watch. Here is one:

                    If you want to watch more videos, check out my YouTube channel here:

                    Chris Boss
                    Computer Workshop
                    Developer of "EZGUI"


                    • #11

                      Are there any sample projects or code that comes with EZGUI 5.0 Pro ?

                      Yes, there is! There are actually two different styles of sample code that comes with EZGUI. The first uses the hand coding style. Yes, you can hand code apps using EZGUI and not require using the Visual Designer. EZGUI was actually designed specifically for hand coding apps without a Visual Designer. There is a folder in EZGUI called "codeclips" which contains the following samples:

                      bitmapvw.bas - Working with Canvas DIB buffers directly

                      bitmapzm.bas - Zoom Image in Canvas control

                      canvas2.bas - Drawing and Scrolling Canvas Image

                      canvas3.bas - Draw and animated Canvas (uses EZ_CalcPoint)

                      canvasth.bas - Animating Canvas using old style Threads

                      canvrg.bas - Draw on Canvas and generate a region (non rect Canvas)

                      clipbrd.bas - Copy/Paste text from clipboard into Text Box

                      colors.bas - Display all builtin Colors and 3D patterns

                      cursor.bas - Change Cursor over controls

                      custdrw.bas - CustomDraw with a ToolBar

                      custdrw1.bas - CustomDraw with a Listview

                      custdrw2.bas - CustomDraw with a Treeview

                      dialogs.bas - Common Dialogs (File,Color, Font, BrowseFolder)

                      dragcanv.bas - Drag Canvas control around using mouse

                      dragdrop.bas - Drag and Drop with Listview and Treeview

                      drawavi.bas - Moving Animation control frames one at a time

                      enumchng.bas - Enumerate Controls and move to another Form

                      enumform.bas - Enumerate Controls

                      finddlg.bas - Display Find Text Dialog and see its Events

                      flistbox.bas - Files ListBox control

                      flistbx2.bas - Files Listbox using custom icons

                      fonts.bas - Display Fonts using ownerdraw listbox

                      fontsize.bas - Changing Font Size using Point Size and a Width

                      fonttest.bas - Using Fonts with Controls

                      ifonts.bas - New IFonts feature

                      keyevent.bas - Trapping Keyboard Events

                      keypress.bas - Using a Message Loop Hook procedure

                      listbox.bas - Common Listbox tasks including searches

                      listvw.bas - Working with the Listview control

                      masktext.bas - Masked Edit control

                      msgboxex.bas - Extended MessageBox

                      odraw.bas - New Simplified OwnerDraw command set

                      odrawlv.bas - OwnerDraw Listview control (advanced)

                      odrawts2.bas - OwnerDraw Listview, Tab, Combobox (advanced)

                      owndrlvh.bas - OwnerDraw Listview Headers (advanced)

                      ownforms.bas - Using Owned Child Forms (advanced)

                      pager.bas - Pager Control

                      plistbox.bas - Properties Listbox control

                      popupmnu.bas - Right Click Popup Menu on Textbox

                      prnttest.bas - Printer Test

                      ptsize.bas - Combobox Control changes displayed Font Size

                      regions.bas - Using regions on Button controls

                      resize1.bas - Resizing forms and controls

                      resource.bas - Finding Resource names

                      RTFlink.bas - Hyperlinks in RichEdit control

                      scrollcv.bas - Scroll a Canvas control using a Page form parent

                      scroller.bas - Scroller Controls (scrollbar, updown, trackbar)

                      scrollw.bas - Scroll a Form

                      sprites.bas - Sprites example

                      tbaraddi.bas - Append custom Toolbar Bitmap with builtin Bitmaps

                      tbarhot.bas - Toolbar using HotSpot Images

                      texture2.bas - Using 3D pattern background colors

                      timer2.bas - Timer Digital Clock

                      timer.bas - Timer with Splash screen and Progress Bar changes

                      toolbars.bas - Multiple Toolbar styles and drop down menus

                      tooltips.bas - ToolTip examples

                      tpalette.bas - Turtle Control default Color Palettes

                      trayicon.bas - Using Tray Icons

                      treeview.bas - Treeview example

                      turtdraw.bas - Visually Drawing on a Turtle Graphics Control

                      turtle.bas - Using a Turtle Graphics Control

                      vdesign1.bas - Visual Designer Engine features (draw, drag, drop)

                      xlines.bas - Moving hairlines over Canvas control using mouse

                      zipcode.bas - Demonstrates using BTree engine

                      zoomimg.bas - Capture area over cursor and zoom in

                      zorder.bas - Demonstrate changing ZOrder of controls

                      The next style of sample code is actual projects created using the Visual Designer. These are a bit more complex and they demonstrate not only working with the Visual Designer (they require using the visual designer when compiling them). The following example projects are in the examples folder:

                      Sprites Demo

                      This project demonstrates using the Sprite engine, 3D OwnerDraw Button controls and how to use a Game Loop.

                      Text Editor

                      This project demonstrates using MDI (Multiple Document Interface) Forms in an application, a ToolBar, Open/Save File Common Dialogs and the Text (Edit) control.

                      RTF Editor

                      This project demonstrates using MDI (Multiple Document Interface) Forms in an application, a Rebar control and Rebar Form, a ToolBar, Open/Save File Common Dialogs, 3D OwnerDraw Button controls, OwnerDraw Comboboxes , the simplified OwnerDraw command set and the RichText (RichEdit) control (plus how to set fonts and colors in a RichEdit control).


                      This project demonstrates using Canvas controls, drawing on Canvas controls, using the new simplified Thread command set and Thread events.


                      This project demonstrates using a Shaped Form (non-rectangular Form using a Bitmap region), 3D Ownerdraw Button controls, MCI control and MCI command set.

                      It also demonstrates how to hide parts of a Form by changing its size dynamically.

                      Chris Boss
                      Computer Workshop
                      Developer of "EZGUI"


                      • #12

                        Doesn't EZGUI force me into a "black box" engine which limits me from customization ?

                        Absolutely NOT !!!

                        EZGUI feature set provides so many low level commands that you can customize it many, many ways. Even EZGUI's internal engines have Hook commands which lets you gain access at a low level. EZGUI also provides many support functions which let you get access to things like font, brush, bitmap and window handles when you need to call the WIN32 API.
                        Chris Boss
                        Computer Workshop
                        Developer of "EZGUI"


                        • #13

                          Tell me something EZGUI does that I likely wouldn't be able to do easily using the WIN32 API ?

                          One thing is the combination of doing ownerdraw using Themes. EZGUI provides a drawing command set which can access the current Windows Theme. If theming is turned off, then EZGUI will fall back to the GDI. EZGUI can automatically load the Window Theme OS DLL when needed and draw using it. EZGUI accesses the most commonly used Theme features.

                          Now combine that with ownerdraw and you can create new controls using ownerdraw, but having a themed look. That makes your app look new and modern.

                          The EZGUI Draw command (EZ_DCDraw, EZ_CDraw) has the following Theme UI elements it can draw:

                          Theme Aware objects:

                          %EZ_XBTNUP - Close (X) Button up

                          %EZ_XBTNDN - Close (X) Button down

                          %EZ_HBTNUP - Help Button up

                          %EZ_HBTNDN - Help Button down

                          %EZ_MXBTNUP - Maximize Button Up

                          %EZ_MXBTNDN - Maximize Button down

                          %EZ_MNBTNUP - Minimize Button up

                          %EZ_MNBTNDN - Minimize Button down

                          %EZ_RBTNUP - Restore Button up

                          %EZ_RBTNDN - Restore Button down

                          %EZ_CAPA - Caption Bar Active (square style)

                          %EZ_CAPI - Caption Bar InActive (square style)

                          %EZ_CAPAR - Caption Bar Active (rounded style)

                          %EZ_CAPIR - Caption Bar InActive (rounded style)

                          %EZ_TABBG - Tab Control Background

                          %EZ_TABBGF - Tab Control Background with a Flat border

                          %EZ_REBARBG - Rebar Background

                          Chris Boss
                          Computer Workshop
                          Developer of "EZGUI"


                          • #14

                            Why use a GUI framework rather than simply use a set of API wrappers ?

                            EZGUI is a GUI framework and it is designed to simplify writing GUI apps. API wrappers often are overly simple and just make it easier to call an API. A GUI framework automates many tasks for you and it can accomplish much more complex tasks. One example is EZGUI's event engine which does a lot of preprocessing under the hood. Events have already had much work done for you already when your app gets the event. For example, for scrollbars EZGUI automatically processes the internal scroll messages and increments/decrements the scrollbar position for you and then simply passes in the event (%EZ_Change) the new position of the scrollbar. A lot of coding is avoided this way and you can concentrate more on getting things done rather than handling a lot of mundane stuff just to handle default processing of many window messages.

                            A GUI framework also has many high level features which you simply won't get with a simple set of API wrappers. One example is EZGUI's autoresize engine, which can handle automatically resizing and moving controls when the parent form changes size.

                            Also a GUI framework can implement totally new high level features not found in the API at all. One example in EZGUI is the autoscroll feature in the drag and drop engine for the listview and treeview controls. This is not a feature found in the Windows API. Another is EZGUI's Visual Designer drag and drop engine. Again this is not a feature found in the Windows API and it is quite difficult to implement. For example try this in what ever visual designer you currently use. Create 100 controls on a form. Select all 100 controls and then try to drag them to move them all. Some designers will "choke" when this is done and you will get terrible flicker and delay in drawing. Now try again with 400 controls and see what happens. EZGUI's drag and drop engine is designed so it can move hundreds of controls seamlessly and cleanly with little or no flicker or delay. The reason for this is that EZGUI uses double buffering in the drag engine so no matter how many drag rectangles are displayed they all move together as one smoothly.

                            So, using a GUI framework has many benefits not found in a simple API wrapper command set.

                            Chris Boss
                            Computer Workshop
                            Developer of "EZGUI"