Just to keep it interesting here I post some preview of my current project... maybe someone's nosy and has the passion to browse it for ideas...
Its a GUI for TBGL where the TBGL-Window becomes an "MDI-Window" - means, user has a few little "windows" (i call them just "t_CTRL_Box") to move around inside client-area. Most useful for TBGL-editor-apps without the need of "UI" and resulting win32-contamination of your code 
Its not done yet and just contains a few basic controls as the base-boxes (no "common dialogs" yet) , buttons, labels, checkboxes, option-buttons, scrollbars and all the menustuff.
The philosophy behind it is a little vb6-alike, every control gets a name (optional index if more controls with this name) and the user has only to care about which controls to create and has to write only the code for the events that occur on those controls.
It contains an emptyProject.tBasic - a template to start with and some testProject01.tBasic which shows a few of the current possibilities and explains how to setup controls and how to read the events.
Basically every user-defined sub to each control starts with the name that has been given to the control. Every sub has to have
Sub myControlName_MyEvent( Byval Index as Long [,...] )
so with the index you might identify which control currently had that event.
Ignore Index if you have none assigned (=0)... but the subs have to have this parameter.
To request the exact control that caused the event you might place an absolute variable onto it to access its properties and methods.
Therefor my GUI has a function that will create the fitting variable, so you send the name and the index of the control where to place a layover and it will create the layover of the fitting type at the heap where the controls data is store.
The heap makes it possible to attach any different new Type that Extends the t_CTRL_Basetype to the GUI, so its dynamically expandeable (for example with additional user-defined controls that are not invented yet) and you can omit to include unneeded controls to your project later to save on memory.
The download contains a lot of files and the first time you start one of the *.tBasic files you'll get prompted to select your local keyboard-layout, so just enter the number (currently 1 to 4) of your layout. If yours is not listed feel free to create one (I'll tell how on demand since its too much for this post) - anyway- there's no keyboard-input (except esc-key) since there are no controls to enter values nor strings yet.
Have a look at the testproject01.tBasic-code and run it, move the boxes around inside the TBGL-window and enlarge the inner client by doing so. try out menus, (open additional "windows" from menu). Compare the stuff in both *.tBasic-files: the emptyProject consists of a skeleton to start with. All additional code in the second (testproject01) - mostly subs - is the code the user will write later to create controls and handle them.
Very undone yet... and some things might change or get improved. But I think its a very good example of the opportunities the latest to tB implemented features offer.
PS. ByPtr-functionality is implemented but not in use. Currently I prefer the way of pre-overlay to make use of great Extends-features which allow to sort out
EDIT: updated version attached
#MinVersion 1.9.12.0