General issues


Useful Links

Questions and Answers

RG Summaries

Vintage Bookshelf



HMG 3.4.4 Released

HMG 3.4.4

Post by Rathinagiri » 29 Mar 2017 18:43

Whenever releasing a new version of HMG, it gives us new hope and paves way for the future with strong and stable code. This version is also not an exemption. This version is possible with the generous and continuous help of Dr. Claudio Soto.

The major feature of this version is Multi threading.

You can download this latest version from here (64 MB)

For 64 Bit developers, you have to download and install Harbour64 and MingW64 from here (15 MB) and here (71 MB) respectively.

Changelog from the last version:

– Fixed bug in BrowseUpdate function of Browse control(contrib by Marek)

– Fixed bug in _ActivateWindow when use debug with modal window- Fixed bug in grid onquery event

– Fixed bug in grid when load NIL values(hb_ValToStr)

– Fixed bug in grid inplace column (contrib by ASESORMIX)

– Implemented GetProperty ReadOnly EditBox and TextBox

– Fixed bug in BT_BitmapSaveFile() function (reported by Roberto Lopez)

– Fixed problem in Navigator.htm file of documentation (contrib by Roberto Lopez)

– Fixed bug in GetLastActiveFormIndex() and GetLastActiveControlIndex() functions (contrib by Pablo Cesar)

– Fixed bug in GetMainFormName() and GetMainFormHandle() functions (contrib by KDJ)

– Fixed leak memory in HMG_UPPER and HMG_LOWER functions (reported by KDJ)

– Fixed bug in HMG_EditControlGetSel() function (contrib by KDJ)


– Fixed functions BT_DrawTextXXX, BT_DrawTextEx ( see SaveDC in the code )

– New: BT_DrawEMF ( [ hDC ] , cFileNameOld , cFileNameNew , cFuncNameCallBack ) —> Return nError, e.g. Zero is OK – New: BT_BitmapIsValidFileImage( cFileName )

– Fixed bug in WM_NEXTDLGCTL message ( reported by KDJ )

– Fixed bug in COLUMNCONTROLS (allow lower case labels) in Grid control ( reported by Miszler.zoltan )

– Fixed bug in InplaceEdit cell with press ENTER in Grid Control ( reported by Marek )

– Fixed bug in filter data in Grid with Rowsource ( reported by Tonton2 )

– Fixed bug in change recno() when mouse move over of Grid with Rowsource ( reported by KDJ )

– Fixed bug when call DeleteColumn( 1 ) with a Grid with only one column ( reported by t57042 )

– Fixed bug when change image in Button control ( reported by Chrisjx2002 )

– Fixed bugs in DOC files ( contrib by Pablo Cesar )

– Fixed bug in virtual grid in HMG ANSI version with Chinese characters ( contrib by Huiyi_ch )

– Fixed bug in GetStartUpFolder() function ( contrib by Pablo Cesar )

– New methods BLen, BLeft, BRight, BSubStr in HMG_TString class ( contrib by huiyi_ch )

– Now for default SET WINDOW MAIN FIRST is OFF

NOTE: The RECNO property of the Grid control not changes the current physical record number of the DBF file, only convert between the row of grid and the recno of the DBF.

– Get Grid.RECNO –> convert Logical record ( grid row ) to Physical record ( DBF recno )

– Set Grid.RECNO := XXX –> convert the Physical record XXX ( recno ) to Logical record ( grid row )

– Enhanced SET HELP FILE and HELP BUTTON for support .CHM file format (see SAMPLES\Basics\Help ) ( contrib by Kevin Carmody )

– Added CHM compile and decompile batch file makechm.bat ( see in SAMPLES\Basics\Help ) ( contrib by Kevin Carmody )

– Added ON KEY, RELEASE KEY, and STORE KEY commands to ( contrib by Kevin Carmody )

– Updated SAMPLES\Events\On_Key\ON_KEY1 and ON_KEY3 ( contrib by Kevin Carmody )

– Upgraded HFCL sample WordScribe ( see SAMPLES\HFCL\WordScribe ) ( contrib by Kevin Carmody )

– Added new HFCL sample WordWriter ( see SAMPLES\HFCL\WordWriter ) ( contrib by Kevin Carmody )

– NEW HMG Multi-Thread:

– Added directive -ldflag=”-pthread -static -lpthread” in HBMK2 for static link of pthread library in the files Build.bat and Build64.bat

– For default HMG compile with the directive -mt of the HBMK2 ( for default Muti-thread is yes )

– Now HMG support the same behaviour that Harbour for Thread manager: allow run without INHERIT PUBLIC vars, see demos in folder samples/MultiThread

– New many functions for Thread manager( see files source\c_thread.c and include\ GetCurrentThreadId, GetCurrentThreadHandle, AttachThreadInput, SuspendThread, ResumeThread, SwitchToThread, Sleep, SetThreadPriority, GetThreadPriority, EnumThreadID, HMG_ThreadHBtoWinHandle, HMG_ThreadHBtoWinID, HMG_ThreadShareData

– New: IDE ver 1.2a, now the option menu delete file not delete file of the disk, only eliminate the file of the project.


Clipper Utilities

We have tons of shareware utility program and samples written in language and / or for Clipper language.

And tons of them was compiled and published in the legendary internet site by sainted legendary community guru Phil Barnet (RIP). After Phil, this site cloned by Harbour gurus, many thanks to them.

Of course most of that materials are obsolete. But some of them are ageless.

As an example: Click! is a Clipper language source code reformatter. This is much more than a simple reindenter, but actually reestablishes spacing between elements in the lines of code and creates function cross reference charts. Fully documented and configurable.

Viva Clipper 😀


HMG 3.4.3 Released

HMG 3.4.3
Post by Rathinagiri » 08 May 2016 15:41

I am profoundly happy and proud to announce our new version 3.4.3. This version is possible with the untiring efforts of our Dr. Claudio Soto. There are so many new features introduced in this version (especially in GridInPlaceEdit).

You can download this latest version from here (64 MB)

For 64 Bit developers, you have to download and install Harbour64 and MingW64 from here (15 MB) and here (71 MB) respecitvely.

Click here for read this post in place.

Change Log from the last version:

  • – Updated MinGW C compiler (32 and 64-bit) to version 5.3.0 (release december 2015)
    – Updated Harbour 64-bit compiler to version nightly 2016-04-20
    – Updated Harbour compiler to version nightly 2016-05-07
    – New HMG_IsWin64(), returns TRUE if OS is of 64-bit (contrib by BPD2000)
    – New HFCL functions for RichEditBox (contrib by Kevin Carmody):
    – RichEditBox_LoadFileEx, RichEditBox_SaveFileEx
    – RichEditBox_HasNonAsciiChars, RichEditBox_HasNonAnsiChars
    – GetRichEditFileType, HMG_UTF16ByteSwap
    – see \SAMPLES\HFCL\WordScribe
    – New Numeric TextBox support comma ( , ) as decimal separator (contrib by Marek)
    – New Draw GRAPH in Bitmap (contrib by S. Rathinagiri):
    – see documentation and demo \SAMPLES\Controls\Graph\GRAPH_Bitmap
    – Note: It is highly recommended to use Graph Bitmap instead of Graph Command because the      painting is much more efficient and does not produce flicker
    – New internal C function: HMG_Trace()
    – New function GetBinaryType ( cApplicationName ) –> nBinaryType (constants are defined in
    – SCS_32BIT_BINARY // A 32-bit Windows-based application
    – SCS_64BIT_BINARY // A 64-bit Windows-based application.
    – SCS_DOS_BINARY // An MS-DOS – based application
    – SCS_OS216_BINARY // A 16-bit OS/2-based application
    – SCS_PIF_BINARY // A PIF file that executes an MS-DOS – based application
    – SCS_POSIX_BINARY // A POSIX – based application
    – SCS_WOW_BINARY // A 16-bit Windows-based application
    – Bos Taurus: new version 1.0.6
    – New functions(see doc):
    – BT_DrawTextEx (hDC, Row, Col, Width, Height, cText, cFontName, nFontSize, aFontColor,        aBackColor, nTypeText, nAlingText, nOrientation)
    – BT_DrawTextSize (hDC, cText, cFontName, nFontSize, nTypeText) –> { nTextWidth,                  nTextHeight, A+B+C of first character, A, B, C }
    – BT_DrawPolygon (hDC, aPointY, aPointX, aColorRGBLine, nWidthLine)
    – BT_DrawPolyBezier (hDC, aPointY, aPointX, aColorRGBLine, nWidthLine)
    – BT_DrawArc (hDC, Row1, Col1, Row2, Col2, RowStartArc, ColStartArc, RowEndArc,                      ColEndArc, aColorRGBLine, nWidthLine)
    – BT_DrawChord (hDC, Row1, Col1, Row2, Col2, RowStartArc, ColStartArc, RowEndArc,               ColEndArc, aColorRGBLine, nWidthLine, aColorRGBFill)
    – BT_DrawPie (hDC, Row1, Col1, Row2, Col2, RowStartArc, ColStartArc, RowEndArc,                     ColEndArc, aColorRGBLine, nWidthLine, aColorRGBFill)
    – New: now in Label control is possible to assign any data type or a list of data, e.g.
    – @ … LABEL … VALUE xDataType
    – Form.Label.Value := xDataType
    – Form.Label.Value := { xDataType, xDataType, … }
    – New property HBITMAP in IMAGE control (set/get hBitmap into Image control)
    – New in GRID control:
    – now when loads a Grid control and column control is NIL converts automatically any data type   in text, this avoids that column appears empty.
    – On InplaceEditEvent <OnInplaceEditEventProcedure>
    – Properties Available For OnInplaceEditEvent Procedure:
    – This.IsInplaceEditEventInit: Return .T. or .F.
    – This.IsInplaceEditEventRun: Return .T. or .F.
    – This.IsInplaceEditEventFinish: Return .T. or .F.
    – This.InplaceEditGridName: eg. “Grid_1”
    – This.InplaceEditParentName: eg. “Form_1”
    – This.InplaceEditControlHandle: Handle of InplaceEdit ColumnControl, eg. Handle of TEXTBOX, DATEPICKER, TIMEPICKER, COMBOBOX, SPINNER, CHECKBOX, etc.
    – This.InplaceEditControlIndex: Return nControlIndex
    – Now ON CLICK and ON KEY event of Gid control is available too in InplaceEdit state,
    for check if the event is fired in the Grid control or inside of InplaceEdit control you use the property This.IsInplaceEditEventRun
    – see SAMPLES\Controls\Grid\GridInplaceEditEvent
    – Documented in –> Advanced –> Memory, Processes and Threads
    – New RELEASE MEMORY, release unused memory (leak memory), test for example:
    – New HMG_GetObjectCount( [ nProcessId ] )
    – returns an array of 3 items with information about the number of system objects used for a process { nGDIObjects, nUserObjects, nKernelObjects }
    – Documented many undocumented functions
    – New: CREATE EVENT CODEBLOCK bCodeBlock [ HWND hWnd ] [ MSG nMsg ] [ STOREINDEX nIndex ]
    – New: HMG_PressKey( nVK1, nVK2, … ) –> return array { nVK1, nVK2, … }
    – Simulates the pressure of a key or a combination of keys (where nVK is a virtual key code)
    – New in HMG Debugger (see doc):
    – New hotkeys
    – Now you can switch between the ToolBar and the Main Menu at your convenience
    – Fixed minor bugs
    – added in dbgGUI.prg DoEvents() into large FOR-NEXT cycles
    – added a waiting message while the program loads
    – For a defensive programming (minimization of input errors)
    – New Class HMG_TString:
    – This class selects automatically the correct ANSI or Unicode string function depending of current code page,
    the use of this class create a more portable your code.
    – for default HMG a create instance of this class, you call with a pseudovariable oString (e.g. oString.Upper( cText ) )
    – create a new instance of class -> oStr := HMG_TStringNew(), use e.g. oStr.Upper( cText )
    – see documentation( DOC –> CLASSES –> HMG_TString )
    – New: CHECK TYPE [ SOFT ] <var1> AS <type1> [ , <var2> AS <type2> [, <varN> AS <typeN> ] ]
    <var> = var name
    – see documentation( DOC –> Advanced –> CHECK TYPE )
    – New IDE ver 1.1
    – now the IDE not convert to lowercase the name of the PRG files
    – eliminated the maximum limit of 10000 milliseconds in the Timer control imposed for the IDE
    – Zero value in MAXLENGTH property of the controls RichEdit, TextBox and EditBox is equal a NIL value
    – now double click on the Run or Debug buttons not abort the IDE
    – Fixed bug in SetGridQueryData() in Win XP (reported by Eduardo Luis)
    – Fixed bug in TrackPopupMenu() (reported by Esgici and Mustafa)
    – Fixed bug in Transparent Label (reported by Emzampi)
    – Fixed bug in Transparent property of BT_DrawText() function (reported by Andres Gonzales)
    – Fixed bug in DynamicBackColor and DynamicForeColor of the Grid control when used with database (reported by Luis Vasquez)
    – Fixed bug in Set/Get Image in column one of Grid control (introduced in HMG.3.4.1) (reported by Zoltan Miszler)
    – Fixed bug in OnCheckBoxClicked of Grid control (reported by Rathinagiri)
    – Fixed bug in Picture property of ToolBar Button (reported by Pablo César)
    – Fixed bug in updating the Value property when an item is deleted in the Grid control (reported by TopsMarc)
    – Fixed bug in updating record pointer in database in the Grid control (reported by TopsMarc)
    – Fixed bug in Hotkey Alt+S and Alt+U of the Grid control (reported by PiotrM)
    – Fixed bug in ToolTip CustomDraw (reported by Eduardo Luis and Kevin Carmody)

East or West HMG is the Best.
South or North HMG is worth.

…the possibilities are endless.