HwGUI is a GUI library for Harbour/xHarbour, which I had started to develop in summer'2001.
It has the same license, as Harbour - the GNU GPL with an exception, which says that
"if you link the HWGUI library with other files to produce an executable, this does not by itself cause the
resulting executable to be covered by the GNU General Public License".
HwGUI includes two versions - Win32 and Linux. Win32 version is based on direct calls of Win32 API - this allows to keep it quite fast and compact.
Linux version is based on GTK, it supports the same set of classes, commands and functions as the Win32 version, though not all yet. Thus, using some
base subset of HwGUI, you can create crossplatform GUI applications.
Currently Win32 version of HwGUI supports 5 C compilers: Borland C, MS Visual C, Mingw, Pelles C and Open Watcom C.
Since the autumn'2003 HwGUI is hosted by SourceForge, and there is a group
of developers working on it. You are welcome, too !
Current version of HwGUI is 2.16. You can download it from here. It
includes sources, documentation and few samples, including Dbc, Designer - Visual forms and reports designer and others.
Of course, the work on HWGUI is in progress and any help is appreciated.
HwGUI 2.16 ( 14.09.2006 )
Native Win32 Toolbar, extended Grid control (HGridEX) has been added.
GTK's HBrowse, HPanel and HOwnButton synchronized with Win32 version.
Three class variables in HBrowse has been renamed for better readability:
kolz --> nRecords, tekzp --> nCurrent, msrec --> aArray
so you need to make search and replace in your programs to rename them.
Many bugs fixed, a lot of improvements and enhancements in both GTK and Win32 versions- see Changelog for the details.
HwGUI 2.15 ( 07.06.2006 )
Linux GTK version of HwGUI has been implemented. It haven't yet all
functionality of the Windows version, but most of the main subsystems
( GET system, browse, printing, ... ) are ready to use.
Some new classes has been added, including HWinPrn.
New functions has been added. See Changelog for the details.
Important changes and fixes in core functions.
Many bugs fixed, a lot of improvements and enhancements - see Changelog for the details.
HwGUI 2.14 ( 14.12.2004 )
An important Designer enhancement - it can be used to build reports.
Now it is the main HwGUI Report Builder instead of HWReport.
New classes are added - HRepItem,HRepTmpl, which provides printing
using the reports, created with the Designer.
OpenImage( cFileName,lString ) function has been added - it reads some
picture files ( jpeg, gif ) and converts them to the HBitmap structure,
so the HBitmap():AddFile( cFileName ) can load now jpeg and gif files,
@ x,y BITMAP command now works with jpeg and gif, too.
Important HPrinter enhancements:
- New parameter added to the HPrinter():New() method - lmm - if it is TRUE,
all subsequent printer operations accept coordinates as millimeters ;
- New commands has been added:
      INIT PRINTER [ NAME ] [ ]
      INIT DEFAULT PRINTER [ ]
By default ( if the PIXEL clause isn't used, all subsequent printer
operations accept coordinates as millimeters ;
- New method for HPrinter has been implemented - SetMode( nOrientation )
to change the orientation:
      portrait(nOrientation==1) / landscape(nOrientation==2) ;
- New variable nPage and automatic handling of pages numbers has been added ;
- HPrinter():Preview() method and related functions are extended:
Zoom buttons, trackbars for preview image repositioning has been added.
New parameters added - optional arrays for button's bmps and tooltips.
Richedit related code is changed to support the Richedit 2.0.
HTrackbar is modified to allow user defined sliders.
Internal messages processing has been changed. Now the callback *WndProc
functions calls onEvent() method instead of appropriate Def* function.
This allow to subclass window, dialog and control classes and, defining new
onEvent() methods for them, to change the default messages processing.
The HWindow() class is now a parent class for HMainWindow(), HMDIChildWindow()
and HChildWIndow() classes.
Many bugs fixed, a lot of improvements and enhancements.
HwGUI 2.13 ( 22.07.2004 )
New classes and functions has been added - see Changelog for details.
The Designer is fully rewritten.
The support of a GET system has been added to MAIN and MDI CHILD windows.
Support for Pelles C and Open Watcom C compilers has been added.
Many bugs fixed, a lot of improvements and enhancements.
HwGUI 2.12 ( 04.04.2004 )
New classes and functions has been added - see Changelog for details.
Many bugs fixed, a lot of improvements.
HwGUI 2.11 ( 15.10.2003 )
It became possible now to create the toolbar ( panel ) and the status window
for the MDI main ( frame ) window ( see samples/a.prg ).
MDI child windows creating is changed - now you can define style for them,
the default is WS_VISIBLE + WS_OVERLAPPEDWINDOW + WS_MAXIMIZE.
New functions has been added:
Tree_HitTest( hTree [, x, y ] ) - returns the tree item, placed in x,y coordinates ( or cursor position )
ScreenToClient( x,y ) - converts the point coordinates from absolute to window client area relative
ProcessMessage()
HDialog: new variable added - bActivate - it is a codeblock, which is executed
one time - after the dialog is being activated.
HTree: new variable added - bRClick - it is a codeblock, which is executed
after the mouse right click on the tree item.
HMenu:Show() is changed, now 2-th and 3-th parameters are optional, the
method takes cursor position if they are omitted.
Enablemenuitem() is changed - now the first parameter is a menu handle.
Few bugs fixed .
HwGUI 2.10 ( 22.09.2003 )
HFreeImage class added - implementations ow wrappers to FreeImage library
( http://freeimage.sourceforge.net/ ), which allows to load, draw and save
files in different graphic formats - BMP, JPEG, PNG, MNG, etc.
See samples/viewer how to use it.
Added new class HSayImage as a custom class for image controls, and HSayBmp,
HSayIcon, HSayFImage - child classes, which implements static controls,
displaying bitmap, icon, graphic file appropriately.
Added function Window2Bitmap(hWnd,lFull) to convert the area of a window
to a bitmap. Appropriate method ::AddWindow(hWnd,lFull) added to HBitmap class.
Metafiles implementation fixed, preview possibilities added to HPrinter class,
HwReport changed to use preview possibilities of HPrinter. Another example of
print preview ypu may find in samples/a.prg, PrnTest() function.
'ICON' clause added to INIT DIALOG command, oIcon variable - to HDialog class.
'TRANSPARENT' clause is added to '@ x,y OWNERBUTTON' command, which
forces the bitmap to be painted as transparent.
A number of warnings and bugs fixed by Lorenzo Fiorini.
New makefiles for MINGW compiler added: makemngw.bat, makefile.gcc instead
of old files - now they aren't depend on Harbour config files.
Some other changes:
HRadioGroup: new method is added - SetValue( nValue ),
the command 'GET RADIOGROUP' is changed to
'GET RADIOGROUP [ VAR ] ' ;
HTree: new variable added - bExpand, this codeblock should return .F.
to prevent expanding or collapsing ;
Handling of WM_MOVE added to DefWndProc() - window coordinates are updated
now after moving ;
mciSendString( cCommand, @cResult, hWindow ) function added ;
GetCurrentDir() function added - it returns path with drive name.
Few fixes from Ron Pinkas and Luiz Rafael Culik for better xHarbour
compatibility.
Some bug fixes.
HwGUI 2.08 ( 08.07.2003 )
New class HSplitter is added, which implements Splitter control.
Appropriate command is added:
@ x,y SPLITTER
Added possibility to draw window background with a bitmap.
Keyboard accelerators are implemented:
New clause 'ACCELERATOR accFlag,accKey' is added to 'MENUITEM' command
HTree class is extended:
Labels editing possibility added to TreeView, appropriate clause ;
'EDITABLE' added to '@ x,y TREE' command ;
New clause added to 'INSERT NODE' command: 'BEFORE ' ;
New methods are added: Delete(), Clean().
HRichEdit class is extended.
HCustomWindow class: new method DelControl( oCtrl ) added.
Added parameter 'oFont' to SelectFont() and HFont():Select(), it allows
to use oFont as init value in the dialog box.
GET system now is more Clipper compatible.
Some bug fixes.
HwGUI 2.07 ( 21.05.2003 )
New classes Htree, HtreeNode are added, which implements TreeView control.
Appropriate commands are added:
@ x,y TREE ...
INSERT NODE ...
Look at samples/testtree.prg.
HTimer class is added.
New method InitTray() is added to HWindow class.
Look at samples/testtray.prg.
Tcolor, bcolor variables are added to HColumn class, they allows to set
a color for specific column in browse.
SetTransparentMode() function added - following TextOut() will draw text
in transparent mode.
HIcon class is added.
Now in ICON clause of INIT WINDOW command you should use previously
created oIcon object, not the icon handle.
Some bug fixes.
HwGUI 2.06 ( 15.11.2002 )
A lot of fixes.
Support of mingw32 compiler is added - thanks to Lorenzo Fiorini for
this contribution.
Class hWGUIControl is removed, all it's child classes are
inherited now from HControl.
New variables and methods are added to the HBrowse class.
New method is added to HStatic: SetValue().
New method is added to HEdit: SetGet().
New methods are added to HControl: Show() and Hide.
Added new command for adding columns to browse: ADD COLUMN ...
New methods are added to HTab: SetTab( n ) and GetActivePage()
HwGUI 2.05 ( 15.09.2002 )
Added interface to QHTM library, which allows to display and print
HTML content in your application.
This interface includes a set of commands and functions, see details
in documentation and sample: samples/qhtm/qhtmtest.prg.
To use it you need to download QHTM library from http://www.gipsysoft.com.
Added new commands to display bitmaps.
Fixed few bugs in HBrowse class and GET system
Further Designer improvements.
HWGUI 2.04 ( 05.08.2002 )
Added Tab control, appropriate class HTab and commands:
Added class HUpDown and commands for Up-down control.
Added two new controls: vertical line and horizontal line, appropriate
class HDivider and command.
Added few functions, which allows to check, if another copy of this program
is running and to activate that copy, if so. See sample of using in
samples/designer/designer.prg
Some modifications in HBrowse, contributed by WHT.
Solved problems with menu under Win95.
It's became possible to create property sheets without resources.
Dialog creation routines are improved.
Further Designer improvements - new interface, new controls, possibilty
to write/read from *.rc files, ...
HWGUI 2.03 ( 25.07.2002 )
Fixed bug with Property Sheets handling, introduced in previous release.
Fixed bug in GET system.
Added possibility to create context menus - added appropriate class and command.
Forms Designer improved.
HWGUI 2.02 ( 23.07.2002 )
GET system implementation is much extended.
Look at the sample testget2.prg.
PICTURE clause is added to GET commands - and it works as in Clipper.
Editing of GET items became more close to Clipper's ( handling of Insert
key, ReadExit() using ).
It is not necessary now to designate in GET command ( and in other
control definition commands ) the parent window and Control's ID - so
commands became simpler and more close to Clipper's.,br>
New clause is added to DIALOG definition - 'CLIPPER'. If DIALOG is defined
with this clause, you can move between GET's with ENTER key.
HBrowse: added possibility to display bitmaps in columns.
You can now define a codeblock for keys handling.
Look at the sample a.prg, function OpenAbout().
Added new function which calls the standard dialog to choose color:
Hwg_ChooseColor().
Starting implementation of HGraph class - look at the sample graph.prg.
Starting implementation of a new HwGUI application - forms designer,
look at samples/designer.
HWGUI 2.01 ( 05.07.2002 )
Starting implementation of Get system, GET commands added.
DatePicker control added: new command, new class.
New method added to HControl class: SetColor(), it allows to change
the control's colors 'on the fly'.
HWGUI 2.0 final ( 26.06.2002 )
Added new class: HPrinter, all printing related code is rewritten to use
this class.
Makefiles for Visual C are added ( thanks to Robert Arseniuk ), some changes
for this compiler are done - now HwGUI can be built with VC, too.
New clauses are added to most of control creating commands: COLOR, BACKCOLOR.
They allows to define colors of these controls.
HWGUI 2.0 beta 2 ( 14.06.2002 )
Font, pen, brush and bitmap handling functions are rewritten as classes.
FONT clause is added to all windows and controls creation commands, oFont
variable is added to appropriate classes.
TOOLTIP clause is added to all control creation commands.
@ x,y GROUP ... command and HGroup class are added
@ x,y RADIOBUTTON ..., REDEFINE RADIOBUTTON ..., RADIOGROUP, END RADIOGROUP
commands are added, HRadioButton class is added.
New clause 'FROM RESOURCE' is added to the owner button creation commands
( BITMAP section ) - it is possible now to load bitmaps both from the bmp
file or from resource.
Now it is possible co create modeless dialogs without resources, too.
HWGUI 2.0 beta ( 04.06.2002 )
HwGUI is now OOP based. See classes hierarchy and description in
documentation ( doc/hwgdoc.htm ).
New commands are added, some are removed, see documentation
( doc/hwgdoc.htm ) for details.
Most new commands are designed for creating controls without using
resources ( *.rc file ).
Added possibility to design menu from the program, without resource file.