<![CDATA[HMGforum.com]]> https://hmgforum.com Sat, 15 Aug 2026 00:08:54 +0000 Smartfeed extension for phpBB https://hmgforum.com/styles/prosilver/theme/images/site_logo.svg <![CDATA[HMGforum.com]]> https://hmgforum.com en-gb Sat, 15 Aug 2026 00:08:54 +0000 60 <![CDATA[HMG General Help :: Re: DWM ( Desktop Windows Manager ) Sample Code :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72362#p72362
AUGE_OHR wrote: Wed Mar 16, 2022 10:42 pm hi,

while when load into IDE it will not work with

Code: Select all

-ldwmapi
which is in *.HBP

btw. i have try to include it into *.HBC

Code: Select all

Libs=dwmapi
but it seems not to work this Way
Hola Jimmy, xomo no tengo el codigo fuente completo para probar IPTV con El Administrador de ventanas de escritorio (DWM)
puede usar esa misma libreria de Mingw64 desde esta ruta :

copiarla a c:\hmg.3.6\include desde "C:\hmg.3.6\mingw64\x86_64-w64-mingw32\include\dwmapi.h"
a c:\hmg3.6\lib64 desde "C:\hmg.3.6\mingw64\x86_64-w64-mingw32\lib\libdwmapi.a"

o en el archivo .hbc

Code: Select all

libpaths=C:\hmg.3.6\mingw64\x86_64-w64-mingw32\lib
incpaths=C:\hmg.3.6\mingw64\x86_64-w64-mingw32\include
libs=dwmapi
#include "hmg.ch"

FUNCTION Main()
DEFINE WINDOW Win_1 ;
AT 0, 0 WIDTH 600 HEIGHT 400 ;
TITLE "Prueba DWM en HMG" ;
MAIN

END WINDOW

// Obtenemos el Handle (HWND) de la ventana HMG
LOCAL hWnd := GetFormHandle("Win_1")

// Ejemplo: Activar modo oscuro en la barra de título (Windows 10/11)
// DWMWA_USE_IMMERSIVE_DARK_MODE = 20
DwmSetWindowAttributeInt( hWnd, 20, 1 )

CENTER WINDOW Win_1
ACTIVATE WINDOW Win_1
RETURN NIL


// ============================================================================
// C-WRAPPERS PARA DWM
// ============================================================================
#pragma BEGINDUMP

#ifndef WINVER
#define WINVER 0x0600
#endif

#include <windows.h>
#include <dwmapi.h>
#include "hbapi.h"

/*
* Permite cambiar atributos del DWM pasando un entero (ej: Modo Oscuro, Esquinas redondas)
* Sintaxis Harbour: DwmSetWindowAttributeInt( hWnd, nAttribute, nValue )
*/
HB_FUNC( DWMSETWINDOWATTRIBUTEINT )
{
HWND hwnd = (HWND) hb_parptr( 1 );
DWORD dwAttribute = (DWORD) hb_parni( 2 );
int nValue = hb_parni( 3 );

HRESULT hr = DwmSetWindowAttribute( hwnd, dwAttribute, &nValue, sizeof(nValue) );

hb_retnl( (LONG) hr );
}

/*
* Extender el marco de la ventana hacia el área de cliente (Efecto Glass/Blur)
* Sintaxis Harbour: DwmExtendFrameIntoClientArea( hWnd, nLeft, nTop, nRight, nBottom )
*/
HB_FUNC( DWMEXTENDFRAMEINTOCLIENTAREA )
{
HWND hwnd = (HWND) hb_parptr( 1 );
MARGINS margins;

margins.cxLeftWidth = hb_parni( 2 );
margins.cxRightWidth = hb_parni( 3 );
margins.cyTopHeight = hb_parni( 4 );
margins.cyBottomHeight = hb_parni( 5 );

HRESULT hr = DwmExtendFrameIntoClientArea( hwnd, &margins );

hb_retnl( (LONG) hr );
}

#pragma ENDDUMP
]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72362#p72362 Thu, 30 Jul 2026 19:00:45 +0000 https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72362#p72362
<![CDATA[HMG General Help :: Re: DWM ( Desktop Windows Manager ) Sample Code :: Reply by AUGE_OHR]]> https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72363#p72363
danielmaximiliano wrote: Thu Jul 30, 2026 7:00 pm
AUGE_OHR wrote: Wed Mar 16, 2022 10:42 pm hi,

while when load into IDE it will not work with

Code: Select all

-ldwmapi
which is in *.HBP

btw. i have try to include it into *.HBC

Code: Select all

Libs=dwmapi
but it seems not to work this Way
check i you have C:\BCC7\LIB\psdk\DWMAPI.a
Hola Jimmy, xomo no tengo el codigo fuente completo para probar IPTV con El Administrador de ventanas de escritorio (DWM)
puede usar esa misma libreria de Mingw64 desde esta ruta :
i use VLC ActiveX to Show IPTV (using *.M3U Files, include in ZIP File)

Code: Select all

         DEFINE ACTIVEX oxVLC
            PARENT Form_1
            ROW 0
            COL 0
            WIDTH aSize[ 1 ]
            HEIGHT aSize[ 2 ]
            PROGID "VideoLAN.VLCPlugin.2"
            TOOLTIP "right-click Mouse Menu"
         END ACTIVEX

Attachments

IPTV.ZIP (244.01 KiB)
]]>
no_email@example.com (AUGE_OHR) https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72363#p72363 Fri, 31 Jul 2026 08:31:41 +0000 https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72363#p72363
<![CDATA[HMG General Help :: Re: DWM ( Desktop Windows Manager ) Sample Code :: Reply by AUGE_OHR]]> https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72364#p72364 Note : Not every Version of VLC seemes to work using IPTV !

This Version work : 3.0.18 Vetinari]]>
no_email@example.com (AUGE_OHR) https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72364#p72364 Fri, 31 Jul 2026 10:07:03 +0000 https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72364#p72364
<![CDATA[HMG General Help :: Re: DWM ( Desktop Windows Manager ) Sample Code :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72366#p72366
AUGE_OHR wrote: Fri Jul 31, 2026 10:07 am hi
Note : Not every Version of VLC seemes to work using IPTV !

This Version work : 3.0.18 Vetinari

Look : https://hmgforum.com/viewtopic.php?t=7766]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72366#p72366 Fri, 31 Jul 2026 18:43:24 +0000 https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72366#p72366
<![CDATA[HMG General Help :: Re: DWM ( Desktop Windows Manager ) Sample Code :: Reply by AUGE_OHR]]> https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72369#p72369
danielmaximiliano wrote: Fri Jul 31, 2026 6:43 pm Look : https://hmgforum.com/viewtopic.php?t=7766
i mean just IPTV will not work Correct with some VLC Version. Video will work using all VLC Version.]]>
no_email@example.com (AUGE_OHR) https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72369#p72369 Sat, 01 Aug 2026 03:28:31 +0000 https://hmgforum.com/viewtopic.php?f=5&t=7200&p=72369#p72369
<![CDATA[Issues and Discussions related to Harbour :: __dbOpenSDF keeps giving me errors. :: Author HGAutomator]]> https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72337#p72337

Code: Select all

IF !__dbOpenSDF("testlong.txt", aStruct, "DELIM", .T., "TESTLONG", Chr(9))
returns an error:

Error DBCMD/1015 Argument error: __DBOPENSDF]]>
no_email@example.com (HGAutomator) https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72337#p72337 Sat, 18 Jul 2026 22:32:20 +0000 https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72337#p72337
<![CDATA[Issues and Discussions related to Harbour :: Re: __dbOpenSDF keeps giving me errors. :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72338#p72338
IF !__dbOpenSDF("testlong.txt", aStruct)]]>
no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72338#p72338 Sun, 19 Jul 2026 06:34:07 +0000 https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72338#p72338
<![CDATA[Issues and Discussions related to Harbour :: Re: __dbOpenSDF keeps giving me errors. :: Reply by HGAutomator]]> https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72339#p72339
I was able to get it working with

xResult := !__dbOpenSDF( "testlong_comma.txt", aStruct, "DELIM", .T., "TESTLONG" )

Unfortunately, I quickly discovered the limitations of delimited RDDs, like not having record counts. We'll probably build a substitute.


T & R,

DC
serge_girard wrote: Sun Jul 19, 2026 6:34 am Try this way:

IF !__dbOpenSDF("testlong.txt", aStruct)
]]>
no_email@example.com (HGAutomator) https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72339#p72339 Sun, 19 Jul 2026 17:21:51 +0000 https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72339#p72339
<![CDATA[Issues and Discussions related to Harbour :: Re: __dbOpenSDF keeps giving me errors. :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72340#p72340

Code: Select all

aStruct := {}
AADD(aStruct, { 'ID1', "C", 10, 0 })
AADD(aStruct, { 'ID2', "C", 10, 0 })
DBCREATE("testlong.DBF", aStruct)
USE  testlong
APPEND FROM "testlong.txt" SDF
]]>
no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72340#p72340 Sun, 19 Jul 2026 17:27:35 +0000 https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72340#p72340
<![CDATA[Issues and Discussions related to Harbour :: Re: __dbOpenSDF keeps giving me errors. :: Reply by HGAutomator]]> https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72342#p72342
We won't be using the RDDs for this.


T & R,

DC

serge_girard wrote: Sun Jul 19, 2026 5:27 pm Would something like this be helpful ?

Code: Select all

aStruct := {}
AADD(aStruct, { 'ID1', "C", 10, 0 })
AADD(aStruct, { 'ID2', "C", 10, 0 })
DBCREATE("testlong.DBF", aStruct)
USE  testlong
APPEND FROM "testlong.txt" SDF
]]>
no_email@example.com (HGAutomator) https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72342#p72342 Mon, 20 Jul 2026 01:35:05 +0000 https://hmgforum.com/viewtopic.php?f=35&t=7762&p=72342#p72342
<![CDATA[General :: Harbour64 / Mingw64 :: Author danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72343#p72343 hoy compile la nueva versión de Harbour y si necesitan o quieren actualizar el suyo estos son los pasos:
C:\WorkSpace\harbour64\bin>harbour -build
Harbour 3.2.1dev (r2607071005)
Copyright (c) 1999-2025, https://harbour.github.io/

Harbour Build Info
---------------------------
Version: Harbour 3.2.1dev (r2607071005)
Compiler: MinGW GNU C 16.1 (64-bit)
Platform: Windows 11 or newer 10.0.26100
PCode version: 0.3
ChangeLog last entry: 2026-07-07 12:05 UTC+0200 Antonio Linares
ChangeLog ID: 035ed416171ae735a70f5ea49d5d17e1fc00bab3
Built on: Jul 19 2026 22:02:37
Build options: (Clipper 5.3b) (Clipper 5.x undoc)
para ello descargo el core desde : https://github.com/harbour/core/archive ... master.zip
se descomprime por default en c:\core-master

descargar Mingw64 desde : https://github.com/niXman/mingw-builds- ... 14-rev1.7z

descomprimir por defecto en c:\Mingw64

Code: Select all

cd c:\core-master
set path=c:\mingw64\bin
set HB_INSTALL_PREFIX=c:\harbour64
win-make install
mover o copiar la carpetas harbour64 y ming64 donde crean conveniente segun su configuracion.

la versión mingw64 comprimida pesa 104mb y descomprimido 749mb, asi que voy a ver una versión acorde a Harbour que esta menor de 250mb ya que ming64 tiene LLMV y otras cosas que no usamos como ser también dbg]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72343#p72343 Mon, 20 Jul 2026 04:08:01 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72343#p72343
<![CDATA[General :: Re: Harbour64 / Mingw64 :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72344#p72344 no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72344#p72344 Mon, 20 Jul 2026 06:29:42 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72344#p72344 <![CDATA[General :: Re: Harbour64 / Mingw64 :: Reply by nekbmm]]> https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72347#p72347 no_email@example.com (nekbmm) https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72347#p72347 Mon, 20 Jul 2026 15:14:31 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72347#p72347 <![CDATA[General :: Re: Harbour64 / Mingw64 :: Reply by franco]]> https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72348#p72348 no_email@example.com (franco) https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72348#p72348 Mon, 20 Jul 2026 15:49:05 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7764&p=72348#p72348 <![CDATA[General :: News menu :: Author danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7765&p=72352#p72352 uno de los participantes de este foro por telegram me envio un pequeño ejemplo donde habia un "menu" basado en la clasica opcion de usar imagenes pero se me ocurrio mostrarles otro tipo de menu diferentes al Menu moderno que implemente para Workspace .

se compila desde cmd : c:\hmg.3.6\build.bat MenuButtons.prg

Code: Select all

/*
 * MenuButtonsDemo.prg
 *
 * Ejemplos:
 *   1. Split Button    -> BS_SPLITBUTTON
 *   2. Drop-Down       -> BS_COMMANDLINK + men£ agregado manualmente
 *   3. Popup Menu      -> boton normal + TrackPopupMenuEx
 *   4. Flyout          -> ventana WS_POPUP personalizada
 *
 * Compilar:
 *   hbmk2 MenuButtonsDemo.prg <ruta>\hmg64.hbc -gtgui
 */

#include "hmg.ch"

FUNCTION Main()

   DEFINE WINDOW MainWindow AT 0, 0 WIDTH 720 HEIGHT 520 TITLE "HMG - Menus modernos Win32" MAIN ON INIT NativeMenuDemo_Init( GetFormHandle( "MainWindow" ) )

      @ 25, 25 LABEL TitleLabel VALUE "Controles de menu para Workspace" WIDTH 500 HEIGHT 30 FONT "Segoe UI" SIZE 15 BOLD

      @ 65, 25 LABEL SplitLabel VALUE "1. Split Button: zona principal + flecha independiente" WIDTH 600 HEIGHT 24 FONT "Segoe UI" SIZE 10

      @ 150, 25 LABEL CommandLabel VALUE "2. Command Link usado como Drop-Down completo" WIDTH 600 HEIGHT 24 FONT "Segoe UI" SIZE 10

      @ 270, 25 LABEL PopupLabel VALUE "3. Bot¢n normal que abre TrackPopupMenuEx" WIDTH 600 HEIGHT 24 FONT "Segoe UI" SIZE 10

      @ 350, 25 LABEL FlyoutLabel VALUE "4. Flyout: panel emergente personalizado" WIDTH 600 HEIGHT 24 FONT "Segoe UI" SIZE 10

      @ 455, 25 LABEL InfoLabel VALUE "Los cuatro controles inferiores son creados directamente con Win32." WIDTH 650 HEIGHT 24 FONT "Segoe UI" SIZE 9

   END WINDOW

   CENTER WINDOW MainWindow
   ACTIVATE WINDOW MainWindow

RETURN NIL


#pragma BEGINDUMP

#define _WIN32_WINNT 0x0601

#include <windows.h>
#include <commctrl.h>

#include "hbapi.h"

#ifndef BS_SPLITBUTTON
#define BS_SPLITBUTTON 0x0000000CL
#endif

#ifndef BS_COMMANDLINK
#define BS_COMMANDLINK 0x0000000EL
#endif

#ifndef BCN_FIRST
#define BCN_FIRST ( 0U - 1250U )
#endif

#ifndef BCN_DROPDOWN
#define BCN_DROPDOWN ( BCN_FIRST + 0x0002 )
#endif

#ifndef BCM_FIRST
#define BCM_FIRST 0x1600
#endif

#ifndef BCM_SETNOTE
#define BCM_SETNOTE ( BCM_FIRST + 0x0009 )
#endif

#define ID_SPLIT_BUTTON      1001
#define ID_COMMAND_BUTTON    1002
#define ID_POPUP_BUTTON      1003
#define ID_FLYOUT_BUTTON     1004

#define ID_MENU_NEW          2001
#define ID_MENU_OPEN         2002
#define ID_MENU_SAVE         2003
#define ID_MENU_BUILD        2004
#define ID_MENU_SETTINGS     2005

#define ID_FLYOUT_PROJECT    3001
#define ID_FLYOUT_TERMINAL   3002
#define ID_FLYOUT_CLOSE      3003

static HWND s_hMainWindow = NULL;
static HWND s_hSplitButton = NULL;
static HWND s_hCommandButton = NULL;
static HWND s_hPopupButton = NULL;
static HWND s_hFlyoutButton = NULL;
static HWND s_hFlyoutWindow = NULL;

static LRESULT CALLBACK MenuDemo_SubclassProc(
   HWND hWnd,
   UINT nMessage,
   WPARAM wParam,
   LPARAM lParam,
   UINT_PTR nSubclassId,
   DWORD_PTR nReferenceData
);

static LRESULT CALLBACK FlyoutWindowProc(
   HWND hWnd,
   UINT nMessage,
   WPARAM wParam,
   LPARAM lParam
);

static void MenuDemo_CreateControls( HWND hParent );
static void MenuDemo_ShowPopupMenu( HWND hOwner, HWND hAnchor );
static void MenuDemo_ShowFlyout( HWND hOwner, HWND hAnchor );
static void MenuDemo_CreateFlyoutWindow( HWND hOwner );
static void MenuDemo_ExecuteCommand( HWND hOwner, UINT nCommand );
static void MenuDemo_SetDefaultFont( HWND hControl );
static POINT MenuDemo_GetControlBottomLeft( HWND hControl );


static void MenuDemo_SetDefaultFont( HWND hControl )
{
   HFONT hFont;

   hFont = ( HFONT ) GetStockObject( DEFAULT_GUI_FONT );

   SendMessage(
      hControl,
      WM_SETFONT,
      ( WPARAM ) hFont,
      TRUE
   );
}


static POINT MenuDemo_GetControlBottomLeft( HWND hControl )
{
   RECT rcControl;
   POINT ptPosition;

   GetWindowRect( hControl, &rcControl );

   ptPosition.x = rcControl.left;
   ptPosition.y = rcControl.bottom;

   return ptPosition;
}


static void MenuDemo_ExecuteCommand( HWND hOwner, UINT nCommand )
{
   const char *pszMessage;

   pszMessage = NULL;

   switch( nCommand )
   {
      case ID_MENU_NEW:
         pszMessage = "Nuevo proyecto";
         break;

      case ID_MENU_OPEN:
         pszMessage = "Abrir proyecto";
         break;

      case ID_MENU_SAVE:
         pszMessage = "Guardar proyecto";
         break;

      case ID_MENU_BUILD:
         pszMessage = "Compilar proyecto";
         break;

      case ID_MENU_SETTINGS:
         pszMessage = "Configuracion";
         break;
   }

   if( pszMessage != NULL )
   {
      MessageBoxA(
         hOwner,
         pszMessage,
         "Comando seleccionado",
         MB_OK | MB_ICONINFORMATION
      );
   }
}


static void MenuDemo_ShowPopupMenu( HWND hOwner, HWND hAnchor )
{
   HMENU hPopupMenu;
   POINT ptPosition;
   UINT nCommand;

   hPopupMenu = CreatePopupMenu();

   if( hPopupMenu == NULL )
   {
      return;
   }

   AppendMenuA(
      hPopupMenu,
      MF_STRING,
      ID_MENU_NEW,
      "Nuevo proyecto"
   );

   AppendMenuA(
      hPopupMenu,
      MF_STRING,
      ID_MENU_OPEN,
      "Abrir proyecto..."
   );

   AppendMenuA(
      hPopupMenu,
      MF_SEPARATOR,
      0,
      NULL
   );

   AppendMenuA(
      hPopupMenu,
      MF_STRING,
      ID_MENU_SAVE,
      "Guardar"
   );

   AppendMenuA(
      hPopupMenu,
      MF_STRING,
      ID_MENU_BUILD,
      "Compilar"
   );

   AppendMenuA(
      hPopupMenu,
      MF_SEPARATOR,
      0,
      NULL
   );

   AppendMenuA(
      hPopupMenu,
      MF_STRING,
      ID_MENU_SETTINGS,
      "Configuracion"
   );

   ptPosition = MenuDemo_GetControlBottomLeft( hAnchor );

   SetForegroundWindow( hOwner );

   nCommand = TrackPopupMenuEx(
      hPopupMenu,
      TPM_LEFTALIGN |
      TPM_TOPALIGN |
      TPM_LEFTBUTTON |
      TPM_RETURNCMD,
      ptPosition.x,
      ptPosition.y,
      hOwner,
      NULL
   );

   PostMessage(
      hOwner,
      WM_NULL,
      0,
      0
   );

   DestroyMenu( hPopupMenu );

   if( nCommand != 0 )
   {
      MenuDemo_ExecuteCommand(
         hOwner,
         nCommand
      );
   }
}


static void MenuDemo_CreateFlyoutWindow( HWND hOwner )
{
   WNDCLASSEXA WindowClass;
   HINSTANCE hInstance;
   HWND hLabel;
   HWND hProjectButton;
   HWND hTerminalButton;
   HWND hCloseButton;

   if( IsWindow( s_hFlyoutWindow ) )
   {
      return;
   }

   hInstance = GetModuleHandle( NULL );

   ZeroMemory(
      &WindowClass,
      sizeof( WindowClass )
   );

   WindowClass.cbSize = sizeof( WindowClass );
   WindowClass.style = CS_HREDRAW | CS_VREDRAW;
   WindowClass.lpfnWndProc = FlyoutWindowProc;
   WindowClass.hInstance = hInstance;
   WindowClass.hCursor = LoadCursor( NULL, IDC_ARROW );
   WindowClass.hbrBackground = ( HBRUSH ) ( COLOR_WINDOW + 1 );
   WindowClass.lpszClassName = "HMG_WORKSPACE_FLYOUT";

   RegisterClassExA( &WindowClass );

   s_hFlyoutWindow = CreateWindowExA(
      WS_EX_TOOLWINDOW |
      WS_EX_TOPMOST |
      WS_EX_CONTROLPARENT,
      "HMG_WORKSPACE_FLYOUT",
      "",
      WS_POPUP |
      WS_BORDER,
      0,
      0,
      270,
      185,
      hOwner,
      NULL,
      hInstance,
      NULL
   );

   if( s_hFlyoutWindow == NULL )
   {
      return;
   }

   hLabel = CreateWindowExA(
      0,
      "STATIC",
      "Acciones de Workspace",
      WS_CHILD |
      WS_VISIBLE,
      18,
      15,
      225,
      24,
      s_hFlyoutWindow,
      NULL,
      hInstance,
      NULL
   );

   hProjectButton = CreateWindowExA(
      0,
      "BUTTON",
      "Abrir proyecto",
      WS_CHILD |
      WS_VISIBLE |
      WS_TABSTOP |
      BS_PUSHBUTTON,
      18,
      48,
      232,
      34,
      s_hFlyoutWindow,
      ( HMENU ) ( INT_PTR ) ID_FLYOUT_PROJECT,
      hInstance,
      NULL
   );

   hTerminalButton = CreateWindowExA(
      0,
      "BUTTON",
      "Abrir terminal",
      WS_CHILD |
      WS_VISIBLE |
      WS_TABSTOP |
      BS_PUSHBUTTON,
      18,
      88,
      232,
      34,
      s_hFlyoutWindow,
      ( HMENU ) ( INT_PTR ) ID_FLYOUT_TERMINAL,
      hInstance,
      NULL
   );

   hCloseButton = CreateWindowExA(
      0,
      "BUTTON",
      "Cerrar",
      WS_CHILD |
      WS_VISIBLE |
      WS_TABSTOP |
      BS_PUSHBUTTON,
      172,
      136,
      78,
      28,
      s_hFlyoutWindow,
      ( HMENU ) ( INT_PTR ) ID_FLYOUT_CLOSE,
      hInstance,
      NULL
   );

   MenuDemo_SetDefaultFont( hLabel );
   MenuDemo_SetDefaultFont( hProjectButton );
   MenuDemo_SetDefaultFont( hTerminalButton );
   MenuDemo_SetDefaultFont( hCloseButton );
}


static void MenuDemo_ShowFlyout( HWND hOwner, HWND hAnchor )
{
   POINT ptPosition;

   MenuDemo_CreateFlyoutWindow( hOwner );

   if( ! IsWindow( s_hFlyoutWindow ) )
   {
      return;
   }

   ptPosition = MenuDemo_GetControlBottomLeft( hAnchor );

   SetWindowPos(
      s_hFlyoutWindow,
      HWND_TOPMOST,
      ptPosition.x,
      ptPosition.y + 4,
      270,
      185,
      SWP_SHOWWINDOW
   );

   ShowWindow(
      s_hFlyoutWindow,
      SW_SHOWNOACTIVATE
   );

   SetForegroundWindow( s_hFlyoutWindow );
}


static void MenuDemo_CreateControls( HWND hParent )
{
   HINSTANCE hInstance;

   hInstance = GetModuleHandle( NULL );

   s_hSplitButton = CreateWindowExA(
      0,
      "BUTTON",
      "Compilar",
      WS_CHILD |
      WS_VISIBLE |
      WS_TABSTOP |
      BS_SPLITBUTTON,
      25,
      95,
      210,
      42,
      hParent,
      ( HMENU ) ( INT_PTR ) ID_SPLIT_BUTTON,
      hInstance,
      NULL
   );

   s_hCommandButton = CreateWindowExA(
      0,
      "BUTTON",
      "Abrir Workspace",
      WS_CHILD |
      WS_VISIBLE |
      WS_TABSTOP |
      BS_COMMANDLINK,
      25,
      180,
      340,
      72,
      hParent,
      ( HMENU ) ( INT_PTR ) ID_COMMAND_BUTTON,
      hInstance,
      NULL
   );

   SendMessageW(
      s_hCommandButton,
      BCM_SETNOTE,
      0,
      ( LPARAM ) L"Seleccionar proyecto, carpeta o configuracion"
   );

   s_hPopupButton = CreateWindowExA(
      0,
      "BUTTON",
      "Mostrar Popup Menu",
      WS_CHILD |
      WS_VISIBLE |
      WS_TABSTOP |
      BS_PUSHBUTTON,
      25,
      300,
      210,
      40,
      hParent,
      ( HMENU ) ( INT_PTR ) ID_POPUP_BUTTON,
      hInstance,
      NULL
   );

   s_hFlyoutButton = CreateWindowExA(
      0,
      "BUTTON",
      "Mostrar Flyout",
      WS_CHILD |
      WS_VISIBLE |
      WS_TABSTOP |
      BS_PUSHBUTTON,
      25,
      380,
      210,
      40,
      hParent,
      ( HMENU ) ( INT_PTR ) ID_FLYOUT_BUTTON,
      hInstance,
      NULL
   );

   MenuDemo_SetDefaultFont( s_hSplitButton );
   MenuDemo_SetDefaultFont( s_hCommandButton );
   MenuDemo_SetDefaultFont( s_hPopupButton );
   MenuDemo_SetDefaultFont( s_hFlyoutButton );
}


static LRESULT CALLBACK FlyoutWindowProc(
   HWND hWnd,
   UINT nMessage,
   WPARAM wParam,
   LPARAM lParam
)
{
   switch( nMessage )
   {
      case WM_COMMAND:
      {
         UINT nControlId;

         nControlId = LOWORD( wParam );

         switch( nControlId )
         {
            case ID_FLYOUT_PROJECT:
               MessageBoxA(
                  s_hMainWindow,
                  "Abrir proyecto desde el Flyout",
                  "Flyout",
                  MB_OK | MB_ICONINFORMATION
               );

               ShowWindow(
                  hWnd,
                  SW_HIDE
               );

               return 0;

            case ID_FLYOUT_TERMINAL:
               MessageBoxA(
                  s_hMainWindow,
                  "Abrir terminal desde el Flyout",
                  "Flyout",
                  MB_OK | MB_ICONINFORMATION
               );

               ShowWindow(
                  hWnd,
                  SW_HIDE
               );

               return 0;

            case ID_FLYOUT_CLOSE:
               ShowWindow(
                  hWnd,
                  SW_HIDE
               );

               return 0;
         }

         break;
      }

      case WM_ACTIVATE:
      {
         if( LOWORD( wParam ) == WA_INACTIVE )
         {
            ShowWindow(
               hWnd,
               SW_HIDE
            );
         }

         break;
      }

      case WM_CLOSE:
      {
         ShowWindow(
            hWnd,
            SW_HIDE
         );

         return 0;
      }
   }

   return DefWindowProc(
      hWnd,
      nMessage,
      wParam,
      lParam
   );
}


static LRESULT CALLBACK MenuDemo_SubclassProc(
   HWND hWnd,
   UINT nMessage,
   WPARAM wParam,
   LPARAM lParam,
   UINT_PTR nSubclassId,
   DWORD_PTR nReferenceData
)
{
   HB_SYMBOL_UNUSED( nSubclassId );
   HB_SYMBOL_UNUSED( nReferenceData );

   switch( nMessage )
   {
      case WM_NOTIFY:
      {
         NMHDR *pNotify;

         pNotify = ( NMHDR * ) lParam;

         if(
            pNotify != NULL &&
            pNotify->hwndFrom == s_hSplitButton &&
            pNotify->code == BCN_DROPDOWN
         )
         {
            MenuDemo_ShowPopupMenu(
               hWnd,
               s_hSplitButton
            );

            return 0;
         }

         break;
      }

      case WM_COMMAND:
      {
         UINT nControlId;
         UINT nNotifyCode;

         nControlId = LOWORD( wParam );
         nNotifyCode = HIWORD( wParam );

         if( nNotifyCode == BN_CLICKED )
         {
            switch( nControlId )
            {
               case ID_SPLIT_BUTTON:
                  MessageBoxA(
                     hWnd,
                     "Accion principal del Split Button: Compilar",
                     "Split Button",
                     MB_OK | MB_ICONINFORMATION
                  );

                  return 0;

               case ID_COMMAND_BUTTON:
                  MenuDemo_ShowPopupMenu(
                     hWnd,
                     s_hCommandButton
                  );

                  return 0;

               case ID_POPUP_BUTTON:
                  MenuDemo_ShowPopupMenu(
                     hWnd,
                     s_hPopupButton
                  );

                  return 0;

               case ID_FLYOUT_BUTTON:
                  MenuDemo_ShowFlyout(
                     hWnd,
                     s_hFlyoutButton
                  );

                  return 0;
            }
         }

         break;
      }

      case WM_DESTROY:
      {
         if( IsWindow( s_hFlyoutWindow ) )
         {
            DestroyWindow( s_hFlyoutWindow );
            s_hFlyoutWindow = NULL;
         }

         RemoveWindowSubclass(
            hWnd,
            MenuDemo_SubclassProc,
            1
         );

         break;
      }
   }

   return DefSubclassProc(
      hWnd,
      nMessage,
      wParam,
      lParam
   );
}


HB_FUNC( NATIVEMENUDEMO_INIT )
{
   INITCOMMONCONTROLSEX CommonControls;
   HWND hParent;

   hParent = ( HWND ) ( HB_PTRUINT ) hb_parnint( 1 );

   if( ! IsWindow( hParent ) )
   {
      hb_retl( HB_FALSE );
      return;
   }

   CommonControls.dwSize = sizeof( CommonControls );
   CommonControls.dwICC = ICC_STANDARD_CLASSES;

   InitCommonControlsEx( &CommonControls );

   s_hMainWindow = hParent;

   MenuDemo_CreateControls( hParent );

   SetWindowSubclass(
      hParent,
      MenuDemo_SubclassProc,
      1,
      0
   );

   hb_retl( HB_TRUE );
}

#pragma ENDDUMP

Attachments


Captura de pantalla 2026-07-22 220346.png (23.53 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7765&p=72352#p72352 Thu, 23 Jul 2026 01:06:27 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7765&p=72352#p72352
<![CDATA[General :: Re: News menu :: Reply by Steed]]> https://hmgforum.com/viewtopic.php?f=24&t=7765&p=72358#p72358 no_email@example.com (Steed) https://hmgforum.com/viewtopic.php?f=24&t=7765&p=72358#p72358 Tue, 28 Jul 2026 17:40:12 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7765&p=72358#p72358 <![CDATA[General :: Re: News menu :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=24&t=7765&p=72359#p72359 no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=24&t=7765&p=72359#p72359 Wed, 29 Jul 2026 07:07:15 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7765&p=72359#p72359 <![CDATA[General :: LibVLC New Version :: Author danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72365#p72365 vi que Jimmy esta usando VLC Vetinari me puse de reconstruir todo basado en DOM y dejar la vieja arquitectura de Clases.

abajo de todo le dejo el enlace a mi Google Drive para que descarguen todo el ejemplo.. no lo subo aquí porque pesa 54mb, es porque VLC usa librerías dinámicas para archivos, audio dependiendo el tipo de SOURCE .

para ello deben descargar y descomprimir preferiblemente en c:\Temp como c:\Temp\VLC
abrir CMD
dentro de el

Code: Select all

CD c:\Temp\VLC
C:\Users\danie>cd c:\Temp\vlc
usar

Code: Select all

setpath.bat
c:\Temp\VLC>setpath

=== CONFIGURAR RUTAS ===
HB_HOME=C:\hmg.3.6\harbour64
MINGW_HOME=C:\hmg.3.6\mingw64
HMG_HOME=C:\hmg.3.6

=== OPCIONES DE COMPILACIÓN ===
INCLUDES=-IC:\hmg.3.6\harbour64\include
LIBPATHS=-LC:\hmg.3.6\harbour64\lib\win\mingw64

=== ACTUALIZAR PATH 'solo si no está ya' ===
despues

Code: Select all

Compile.bat
hbmk2: Harbour: Compilando módulos...
Harbour 3.2.0dev (r2510040809)
Copyright (c) 1999-2025, https://harbour.github.io/
Compiling 'Cliente.prg'...
Lines 262, Functions/Procedures 1
Generating C source output to '.hbmk\win\mingw64\Cliente.c'... Done.
Compiling 'VLC.prg'...
Lines 1026, Functions/Procedures 21
Generating C source output to '.hbmk\win\mingw64\VLC.c'... Done.
Compiling 'Bridge.prg'...
Lines 1089, Functions/Procedures 0
Generating C source output to '.hbmk\win\mingw64\Bridge.c'... Done.
hbmk2: Compilando...
hbmk2: Enlazando... Cliente.exe
no debe haber problemas de compilacion

ejecutar

Code: Select all

Cliente.exe
Captura de pantalla 2026-07-31 153647.png
Captura de pantalla 2026-07-31 153752.png
el ejemplo usa un video que esta en la carpeta de ejemplo.
dejo el enlace ----> https://drive.google.com/drive/folders/ ... sp=sharing

Les recuerdo que VLC.prg tiene DOM y no Clases.

Attachments


Captura de pantalla 2026-07-31 153647.png (14.38 KiB)


Captura de pantalla 2026-07-31 153752.png (245.04 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72365#p72365 Fri, 31 Jul 2026 18:42:48 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72365#p72365
<![CDATA[General :: Re: LibVLC New Version :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72367#p72367

esta es casi su estructura
Captura de pantalla 2026-07-31 163331.png
La parte Harbour pesa prácticamente nada. El peso está en:
.\plugins\
*codecs
*módulos de salida de video
*módulos de audio
*demuxers
*accesos de red
*filtros

para ello se pueden eliminar archivos innecesarios para una distribucion mas liviana

Runtime reducido
Eliminar módulos que no se usan:
*streaming de red si solo reproducís archivos locales;
*idiomas;
*skins;
*algunos codecs;
*extensiones.

Eliminar completo gui

libqt_plugin.dll 16.614 MB
libskins2_plugin.dll 2.246 MB
Eso es la interfaz Qt de VLC. Nosotros no usamos Qt.

voy a limpiar la carpeta de archivos innecesario y volver a subirla

Attachments


Captura de pantalla 2026-07-31 163331.png (8.88 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72367#p72367 Fri, 31 Jul 2026 20:18:36 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72367#p72367
<![CDATA[General :: Re: LibVLC New Version :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72368#p72368 visto que el ejemplo no era lo que tenia pensado introduje cambios.

esto es , el ejemplo puede funcionar sin los dll y carpeta plugins, para ello debe existir la instalacion de vlc en modo 64 o 32 bits.
asi que deben borrar los archivos dll y la carpeta plugins o usar los que acompañan al ejemplo que esta en mi carpeta compartida de google drive.

dejo el ejmplo nuevo aqui :
VLC.rar
si algo no funciona revisar el archivo log de extension .txt que se genera para decime en que fallo la ejecucion de cliente.exe

Attachments

VLC.rar (3627.49 KiB)
]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72368#p72368 Sat, 01 Aug 2026 02:16:45 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72368#p72368
<![CDATA[General :: Re: LibVLC New Version :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72370#p72370 no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72370#p72370 Sat, 01 Aug 2026 05:41:34 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7766&p=72370#p72370 <![CDATA[General :: Re: Imprimir acentos y ñ Ñ :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72334#p72334
What is your email address?

Serge]]>
no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72334#p72334 Thu, 16 Jul 2026 06:10:01 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72334#p72334
<![CDATA[General :: Re: Imprimir acentos y ñ Ñ :: Reply by martingz]]> https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72335#p72335 como tienes el Database Encoding?


saludos]]>
no_email@example.com (martingz) https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72335#p72335 Fri, 17 Jul 2026 15:45:37 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72335#p72335
<![CDATA[General :: Re: Imprimir acentos y ñ Ñ :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72336#p72336 S]]> no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72336#p72336 Sat, 18 Jul 2026 05:59:47 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72336#p72336 <![CDATA[General :: Re: Imprimir acentos y ñ Ñ :: Reply by jorge.posadas]]> https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72355#p72355 no_email@example.com (jorge.posadas) https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72355#p72355 Mon, 27 Jul 2026 16:01:47 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72355#p72355 <![CDATA[General :: Re: Imprimir acentos y ñ Ñ :: Reply by franco]]> https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72357#p72357 I have never been able to use sql in hmg so I create temp indexes and tested. It is just as fast.
You could try it. Same type of code. Say you have a customer file.
use customer new shared
index on on name to temp for upper(city) = 'MORELIA'
browse fields name, city
delete the temp file.
This brings in all the fields of the table.
Maybe this way would bring in what you want by not using sql // select name, city from customer for upper(city) = 'MORELIA'

Franco]]>
no_email@example.com (franco) https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72357#p72357 Tue, 28 Jul 2026 15:41:19 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72357#p72357
<![CDATA[General :: Re: Imprimir acentos y ñ Ñ :: Reply by franco]]> https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72374#p72374 open your sql database as usual.
Then instead of select item, next ,next, next from table order by item.
Browse or Report
Instead
Select table
Index on item to temp for item = ?.
Browse or report.
erace := temp.ntx or idx]]>
no_email@example.com (franco) https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72374#p72374 Sat, 01 Aug 2026 16:30:27 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7760&p=72374#p72374
<![CDATA[General :: Workspace ( ejemplo - sample) :: Author danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72341#p72341 Hoy termino del Mundial, nos quedamos con las ganas de ser bicampeón consecutivo, nada que reprochar porque enfrente estuvo un equipo superior en juego.

como ya saben empece con un mini ide que fue mutando de versiones a medida que avanzaba y topaba con pequeños escollos, desde la version v0.1 hasta la v0.23 donde quede estancado por no tener el control completo de la libreria HMG.
Para poder seguir necesite reescribir mediante ChatGPT Plus con 20 US$ y 20 cuentas gratis :P que me sirvieron de apoyo en la organización para llegar a esta meta.

hoy les dejo un ejemplo de Workspace y la nueva GUI con controles Modernos, esto es MSGXX multilineas que no se cortan con textos largos, TextBox que pueden tener un label asociado en todo su contorno, ya no hace falta ( "Label + Textbox).
Tree moderno, eso es nodos e items mas avanzados.
menu este solo toma parte del mismo, quiere decir que puede haber controles pegados en su misma ubicacion.
Checkbox tambien con un label pegado.
Tooltips con colores y diferentes fuentes.
Statusbar moderno (faltan cosillas).
Editor Scintilla y su Lexxer para documentos en forma de libreria estatica libScintilla.a no usando la problematica dll para mi que en Lazarus - Pascal no tenia problemas de implementacion .
ahora estoy eliminando Build.bat y HBMK2 (ya tengo la libreria a punto de terminar) para que el nuevo ide (Workspace) hable directamente con Harbour.exe y las Toolchain de MinGW.
esto es para tener exactamente cualquier tipo de error dentro mismo de Workspace este registrado en documentos navegables, quiere decir que navegando por lo errores de compilacion va directamente
al sector donde se produce.
la capacidad de Workspace es trabajar no solo con proyectos (pueden trabajarse varios a la vez) , documentación, Git, IA, etc, etc.

muchas veces me paso que trabajando con un proyecto y recordé que un ejemplo tiene lo que necesito porque no recuerdo algo tengo que salir del ide e ir al explorador, buscarlo, abrir notepad++ o abrirlo con el ide hmg.
ahora puedo hacer eso sin salir de Workspace.

les recuerdo que este ejemplo puede cambiar ya que estoy en proceso de creación, dentro del tree esta el documento Fundacional y la arquitectura (estos docs pueden varias pero ya esta casi estable)

les recuerdo que dentro de Workspace cualquier documento no necesariamente pertenece al proyecto (miproyecto.hbp) sino a miproyecto.ws a menos que uno lo introduzca dentro del .hbp

este ejemplo esta compilado y puede descomprimirse en Mis Documentos (hice una prueba ahi y ejecuta limpio)
Workspace va a tener compatibilidad con HMG.3.6 van a poder trabajar como siempre , los ejecutables probados son mas chicos por la eficiencia de la GUI basado en DOM ( Modelo de Objetos del Documento)

Mozilla : https://developer.mozilla.org/es/docs/W ... ject_Model
"El DOM representa un documento con un árbol lógico. Cada rama del árbol termina en un nodo y cada nodo contiene objetos. Los métodos DOM permiten el acceso programático al árbol. Con ellos, puede cambiar la estructura, el estilo o el contenido del documento."


bueno no se que mas contarles.. prueben y me dice que error encuentran así los corrijo o mejoras a implementar, recuerden que lo estoy haciendo dentro de mis horas disponibles
pero no paro un dia sin hacer algunas cositas dentro de Workspace]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72341#p72341 Wed, 22 Jul 2026 09:56:43 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72341#p72341
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72345#p72345 no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72345#p72345 Mon, 20 Jul 2026 06:38:30 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72345#p72345 <![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by nekbmm]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72346#p72346 no_email@example.com (nekbmm) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72346#p72346 Mon, 20 Jul 2026 08:08:59 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72346#p72346 <![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72349#p72349
Hice las mejoras en Workspace, hay dos versiones : Español e ingles
pueden trabajar con varios proyectos , el menu moderno permite ingresar mediante open project / abrir proyectos
tambien abrir carpetas que les permite traer todos los objetos de esa carpeta, si es posible abrirlos en el editor Scintilla.
faltan cosas para implementar asi que pronto estare subiendo la mejoras.
espero que lo prueben ya que debo conectar el motor de compilacion propio de Workspace ya que no es un simple build.bat ni hbmk2
sino que es hbmk2 como libreria y se llama WES (Workspace Engine System)
espero les guste :D

English -->

Español --->]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72349#p72349 Wed, 22 Jul 2026 09:56:23 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72349#p72349
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72350#p72350 Hice nuevas mejoras en Workspace
menu moderno permite ingresar mediante open project / abrir proyectos
tambien abrir carpetas que les permite traer todos los objetos de esa carpeta, si es posible abrirlos en el editor Scintilla.
agregado de Navigator para simbolos de codigo, Consola para saber que va ocurriendo segun el contexto.
debo conectar el motor de compilacion propio de Workspace ya que no es un simple build.bat ni hbmk2
sino que es hbmk2 como libreria y se llama WES (Workspace Engine System)
espero les guste :D

English -->

Español --->

Gracias Jimmy, tu post sobre DWM ( Desktop Windows Manager ) me vino estupendo para implementarlo en Workspace :D
Enlace : https://hmgforum.com/viewtopic.php?t=7200]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72350#p72350 Mon, 27 Jul 2026 04:14:55 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72350#p72350
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72351#p72351 tiene una de las propiedades que es Label interno, este nos permite poner un label alrrededor del control TextBox (Arriba, Izquierda, derecha o abajo)
PlaceHolder, este nos permite poner un texto interno que desaparece al comenzar a escribir se borra, solo es un indicativo del contenido que soporta dicho control.
Tooltip moderno, no permite salir del tooltips clasico a uno mas completo, color (proximamente mas colores)
esto nos permite eliminar un label paralelo para nuestro formulario.
hay muchas cosas mas que implementar en los controles que nos ayudan y mejoran nuestras aplicaciones.
gracias por participar de nuestro y querido HMG.

Code: Select all

@ 10, 662 TEXTBOX txtSearch ;
         WIDTH 380 ;
         HEIGHT 30 ;
         LABEL "Buscar" ;
         LABELPOS LEFT ;
         LABELWIDTH 62 ;
         PLACEHOLDER "funcion, clase, etiqueta html o archivo" ;
         MODERN ;
         TOOLTIP "Modern textbox: integrated Label, Placeholder and Modern Tooltip." ;
         ON CHANGE ModernTitle( "search=" + GetProperty( "MainWin", "txtSearch", "Value" ) )

      DEFINE TREE trProject ;
         AT nBodyTop, 14 ;
         WIDTH nLeftW ;
         HEIGHT nTreeH ;
         VALUE 1 ;
         FONT "Segoe UI" ;
         SIZE 10 ;
         TOOLTIP "Double-click a document node to view its content in Scintilla." ;
         ON CHANGE ModernTitle( "tree item=" + hb_NToS( GetProperty( "MainWin", "trProject", "Value" ) ) ) ;
         ON DBLCLICK WorkspaceOpenFromTree() ;
         NODEIMAGES { "TreeFolderClosed", "TreeFolderOpen" } ITEMIMAGES { "TreeDoc", "TreeDoc" } ;
         ITEMIDS ;
         MODERN

         NODE "Workspace.ws.es.md" IMAGES { "TreeProject", "TreeProject" } ID 100 BACKCOLOR { 219, 232, 255 } FONTCOLOR { 48, 96, 192 } SIZE 9 BOLD
            NODE "Archivo para prueba de extensiones" ID 190 BACKCOLOR { 240, 253, 244 } FONTCOLOR { 22, 101, 52 } SIZE 10 BOLD
               NODE "Sources" ID 200 BACKCOLOR { 218, 244, 234 } FONTCOLOR { 16, 144, 96 } SIZE 10 BOLD
               TREEITEM "workspace.prg" IMAGES { "TreeCode", "TreeCode" } ID 201 BACKCOLOR { 235, 250, 243 } FONTCOLOR { 16, 144, 96 }
               TREEITEM "native_control.c" IMAGES { "TreeCode", "TreeCode" } ID 202 BACKCOLOR { 235, 250, 243 } FONTCOLOR { 16, 144, 96 }
               TREEITEM "workspace_panel.cpp" IMAGES { "TreeCode", "TreeCode" } ID 203 BACKCOLOR { 235, 250, 243 } FONTCOLOR { 16, 144, 96 }
               TREEITEM "workspace_api.h" IMAGES { "TreeCode", "TreeCode" } ID 204 BACKCOLOR { 235, 250, 243 } FONTCOLOR { 16, 144, 96 }
            END NODE
            NODE "Web" ID 300 BACKCOLOR { 219, 232, 255 } FONTCOLOR { 48, 96, 192 } SIZE 10 BOLD
               TREEITEM "index.html"                              IMAGES { "TreeWeb", "TreeWeb" } ID 301 BACKCOLOR { 238, 244, 255 } FONTCOLOR { 48, 96, 192 }
               TREEITEM "workspace_settings.json" IMAGES { "TreeConfig", "TreeConfig" } ID 302 BACKCOLOR { 238, 244, 255 } FONTCOLOR { 48, 96, 192 }
               TREEITEM "workspace.ini"                       IMAGES { "TreeConfig", "TreeConfig" } ID 303 BACKCOLOR { 238, 244, 255 } FONTCOLOR { 48, 96, 192 }
            END NODE
            END NODE
            NODE "Proyecto" ID 780 BACKCOLOR { 219, 232, 255 } FONTCOLOR { 37, 99, 235 } SIZE 10 BOLD
            END NODE
            NODE "Conocimiento importado" ID 800 BACKCOLOR { 245, 241, 249 } FONTCOLOR { 124, 58, 237 } SIZE 10 BOLD
            END NODE
            NODE "Explorador Workspace" ID 850 BACKCOLOR { 239, 246, 255 } FONTCOLOR { 29, 78, 216 } SIZE 10 BOLD
            END NODE
            NODE "Documentos Workspace Foundation" ID 590 BACKCOLOR { 219, 232, 255 } FONTCOLOR { 48, 96, 192 } SIZE 10 BOLD
               NODE "Constitution" ID 600 BACKCOLOR { 235, 229, 242 } FONTCOLOR { 64, 32, 96 } SIZE 10 BOLD
                  TREEITEM "00_PROJECT_CHARTER.md"                                IMAGES { "TreeDoc", "TreeDoc" } ID 601 FONTCOLOR { 64, 32, 96 }
                  TREEITEM "01_VISION.md"                                                    IMAGES { "TreeDoc", "TreeDoc" } ID 602 FONTCOLOR { 64, 32, 96 }
                  TREEITEM "02_WORKSPACE_PHILOSOPHY.md"                     IMAGES { "TreeDoc", "TreeDoc" } ID 603 FONTCOLOR { 64, 32, 96 }
                  TREEITEM "03_WORKSPACE_MODEL_SPECIFICATION.md" IMAGES { "TreeDoc", "TreeDoc" } ID 604 FONTCOLOR { 64, 32, 96 }
                  TREEITEM "04_WORKSPACE_EVENT_SYSTEM.md"                IMAGES { "TreeDoc", "TreeDoc" } ID 605 FONTCOLOR { 64, 32, 96 }
                  TREEITEM "05_WORKSPACE_SERVICES.md"                         IMAGES { "TreeDoc", "TreeDoc" } ID 606 FONTCOLOR { 64, 32, 96 }
                  TREEITEM "06_WORKSPACE_KERNEL.md"                             IMAGES { "TreeDoc", "TreeDoc" } ID 607 FONTCOLOR { 64, 32, 96 }
                  TREEITEM "07_SYSTEM_ARCHITECTURE.md"                      IMAGES { "TreeDoc", "TreeDoc" } ID 608 FONTCOLOR { 64, 32, 96 }
               END NODE
               NODE "Architecture" ID 700 BACKCOLOR { 235, 229, 242 } FONTCOLOR { 64, 32, 96 } SIZE 10 BOLD
                  NODE "Workspace Services" ID 710 BACKCOLOR { 245, 241, 249 } FONTCOLOR { 64, 32, 96 } SIZE 9 BOLD
                     TREEITEM "Workspace.ws.md"                                                           IMAGES { "TreeDoc", "TreeDoc" } ID 711 FONTCOLOR { 64, 32, 96 } BOLD
                     TREEITEM "INFOPOPUP_SERVICE_SPECIFICATION.md"                 IMAGES { "TreeDoc", "TreeDoc" } ID 712 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "MODERN_RENDERING_SPECIFICATION.md"                   IMAGES { "TreeDoc", "TreeDoc" } ID 713 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "WORKSPACE_COMMAND_SEARCH_SPECIFICATION.md" IMAGES { "TreeDoc", "TreeDoc" } ID 714 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "WORKSPACE_FILE_SPECIFICATION.md"                       IMAGES { "TreeDoc", "TreeDoc" } ID 715 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "WORKSPACE_VISUAL_LANGUAGE.md"                             IMAGES { "TreeDoc", "TreeDoc" } ID 716 FONTCOLOR { 64, 32, 96 }
                  END NODE
                  NODE "Diagnostics" ID 730 BACKCOLOR { 245, 241, 249 } FONTCOLOR { 64, 32, 96 } SIZE 9 BOLD
                     TREEITEM "WORKSPACE_DIAGNOSTIC_SERVICE_SPECIFICATION.md"                                              IMAGES { "TreeDoc", "TreeDoc" } ID 731 FONTCOLOR { 64, 32, 96 } BOLD
                     TREEITEM "WORKSPACE_DIAGNOSTIC_SERVICE_IMPLEMENTATION_MILESTONE.md"                      IMAGES { "TreeDoc", "TreeDoc" } ID 732 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "WORKSPACE_DIAGNOSTIC_KERNEL_INTEGRATION_MILESTONE.md"                               IMAGES { "TreeDoc", "TreeDoc" } ID 733 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "WORKSPACE_BUILD_DIAGNOSTIC_COORDINATOR_SPECIFICATION.md"                         IMAGES { "TreeDoc", "TreeDoc" } ID 734 FONTCOLOR { 64, 32, 96 } BOLD
                     TREEITEM "WORKSPACE_BUILD_DIAGNOSTIC_COORDINATOR_IMPLEMENTATION_MILESTONE.md" IMAGES { "TreeDoc", "TreeDoc" } ID 735 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "INFOPOPUP_DIAGNOSTIC_IMPLEMENTATION_MILESTONE.md"                                        IMAGES { "TreeDoc", "TreeDoc" } ID 736 FONTCOLOR { 64, 32, 96 }
                  END NODE
                  NODE "Build Services" ID 720 BACKCOLOR { 245, 241, 249 } FONTCOLOR { 64, 32, 96 } SIZE 9 BOLD
                     TREEITEM "08_WORKSPACE_BUILD_SERVICE.md"                   IMAGES { "TreeDoc", "TreeDoc" } ID 721 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "09_WORKSPACE_BUILD_ARCHITECTURE.md"        IMAGES { "TreeDoc", "TreeDoc" } ID 722 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "10_WORKSPACE_BUILD_ENGINE.md"                     IMAGES { "TreeDoc", "TreeDoc" } ID 723 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "11_HARBOUR_TOOLCHAIN_PROVIDER.md"            IMAGES { "TreeDoc", "TreeDoc" } ID 724 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "12_TOOLCHAIN_PROVIDER_ARCHITECTURE.md" IMAGES { "TreeDoc", "TreeDoc" } ID 725 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "13_BUILD_PLANNER_SPECIFICATION.md"          IMAGES { "TreeDoc", "TreeDoc" } ID 726 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "14_BUILD_PLAN_SPECIFICATION.md"                IMAGES { "TreeDoc", "TreeDoc" } ID 727 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "15_BUILD_OPERATION_SPECIFICATION.md"     IMAGES { "TreeDoc", "TreeDoc" } ID 728 FONTCOLOR { 64, 32, 96 }
                     TREEITEM "16_BUILD_PIPELINE_SPECIFICATION.md"       IMAGES { "TreeDoc", "TreeDoc" } ID 729 FONTCOLOR { 64, 32, 96 }
                  END NODE
               END NODE
            END NODE
         END NODE
      END TREE
luche mucho con ITEMSID del control Tree, asi que ahora tenemos mas capacidades sobre el mismo, esta es poder poner mas facilmente una imagen al Item, Nodo.
ID que es la identificacion del nodo , no dependemos del ID recuperado del nodo visual sino su propia identidad.
si ustedes me dicen que capacidad se necesita para algun control veré cual es la posible implementacion para hacer el uso mas facil .
de nuevo, gracias a todos.
Captura de pantalla 2026-07-22 213734.png

Attachments


Captura de pantalla 2026-07-22 213734.png (156.65 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72351#p72351 Thu, 23 Jul 2026 00:51:50 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72351#p72351
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72353#p72353 no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72353#p72353 Thu, 23 Jul 2026 06:07:11 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72353#p72353 <![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72354#p72354 Quiero comentarles que en poco tiempo voy a entregar la nueva libreria para probar su real funcionamiento. ya agregue nuevas funciones a Scintilla un editor Add-on este ahora tiene el plegado de codigo como en notepadd++, Function/Procedure con su Return, IF/Endif asi con todo que tiene llave de apertura y cierre. (falla un poco y ya termino de corregirlo)
Tree Modern tiene enlace a Link: esto es un nodo puede contener una URL y al hacer doble click sobre el abre el link en el navegador predeterminado.
Tree Modern tiene Nodos e Item con propiedades que son color, texto e imagenes (falta unas correcciones)
TextBox tiene nuevas propiedades : leer HTML Reference en ingles o español.
todavia me falta documentar todas las implementaciones en controles Modern.
recuerden que esto es Gracias al trabajo inmenso anterior de nuestro querido Roberto Lopez , Rathinagiry, Claudio Soto y otros .

Workspace :

Workspace en español :]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72354#p72354 Mon, 27 Jul 2026 04:34:51 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72354#p72354
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72356#p72356 con la ayuda de Chatgpt pude agregar Code Folding a Scintilla, como el control Scintilla tiene capacidad de StatusBar en el mismo pusimos el archivo, tipo de archivo, linea columna, codificacion y si esta modificado.
van a encontrar que dentro de Scintilla tiene un signo - y esto pliega el codigo , para abrirlo presionar +.

al cargar el documento este se parsea para encontrar los Token o simbolos como quieran llamarlos para que el listbox Navigator indique donde se encuentran esos Token o Simbolos dentro del documento.. si se abre otro documento y se regresa esos simbolos se vuelven a mostrar.
la capacidad de Scintilla actualemente son 30 lineas, al hacer dobleclick sobre un simbolo o Token este lleva al simbolo a principio y muestra ese bloque de 30 lineas.

se agrego la documentacion sobre los controles MSGxxx Modern.
ahora el Tree moderno tiene la capacidad de mostrar los documentos por color asi como tambien el icono asginado, tiene capacidad de mostrar fuentes y tamaño color por NODO o ITEM.
a medida que vaya avanzando los nodos o items tendran su propio menu contextual segun el contexto de conocimiento.
ahora menu y menucontextual esta chocando por las continuas modificaciones a Workspace.
por otro lado les comento que estoy trabqjando en un Menu Lateral, algo que vi en el navegador opera que se llama "flyout"
esto es acercar con el mouse al costado izquierdo de la app y este menu aparece y no ocupa lugar dentro de la app..

mas o menos asi!

🏠

🔍

📁

⭐

🕓



espero terminarlo pronto :]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72356#p72356 Wed, 29 Jul 2026 18:24:06 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72356#p72356
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72360#p72360 hace mucho tiempo, años atras estaba diseñando un sistema P.O.S para un supermercado de amigos hice un error garrafal de borrar un archivo que me llevo tiempo, como no tenia copia me di cuenta que debia tener un Backup de lo que estaba desarrollando , como uso notepad++ active la copia de seguridad en una carpeta. tambien active que lo haga cada cierto tiempo.
esa accion en notepad++ hzo que no perdiera codigo implementado , pero sucede que al compilar el proyecto nuevas funciones no estaban bien. por lo que procedia a ver que tenia antes implementado para encontrar el error.. tenia que leer todo el archivo .prg implicado, no tenia la forma de ver el DIFF entre mi codigo y lo que tenia antes..
hay herramientas GNU que permiten comparar 2 archivos.. en mi caso el backup con el archivo original. esto es muy tedioso asi que como Workspace es un todo terreno me puse a implementar GIT , ahora el proyecto esta protegido contra borrado, poder comparar las versiones (DIFF) , historal de cambios.
forma de uso , Workspace--> Open Project, , Workspace--> Control Version
initialize GIT---->Refresh

todos los archivos de la carpeta de proyecto se han incluido.. estos se marcan con ?? porque no hay ninguna accion GIT. doble click sobre el archivo y este sera marcado con una A.
por ahora los Commit son individuales, quiere decir que al hacer un commit es necesario ponerle el comentario y [Commit] esta accion esta en Consola y dentro de Scintilla como un documento nuevo donde figuran el Hash, date, author y message.

esto se puede lleer mediante [History] , pronto voy a replicar las acciones de Restore File y DIFF para el archivo seleccionado .

esto esta por ahora minimamente documentado, recuerden que para que funcione debe esta instalado GIT o GIT Desktop. y este se encuentre en el PATH.
proximamente voy a incluir en el TREE la URL y el link para que los lleve a su pagina oficial de GITHUB
Captura de pantalla 2026-07-29 151924.png
English --->
Workspace.rar
Español ---->
Workspace.es.rar

Attachments

Workspace.es.rar (2976.12 KiB)
Workspace.rar (2977.15 KiB)

Captura de pantalla 2026-07-29 151924.png (13.65 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72360#p72360 Thu, 30 Jul 2026 12:35:14 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72360#p72360
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72361#p72361 Captura de pantalla 2026-07-29 165131.png
Link ---> https://git-scm.com/install/windows

Attachments


Captura de pantalla 2026-07-29 165131.png (99.2 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72361#p72361 Wed, 29 Jul 2026 19:54:23 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72361#p72361
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72371#p72371

ya tenemos Compare (Diff) y Restore con confirmacion
Captura de pantalla 2026-08-01 045256.png

Attachments


Captura de pantalla 2026-08-01 045256.png (86.7 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72371#p72371 Sat, 01 Aug 2026 07:57:18 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72371#p72371
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72372#p72372
Captura de pantalla 2026-08-01 050015.png

Attachments


Captura de pantalla 2026-08-01 050015.png (83.53 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72372#p72372 Sat, 01 Aug 2026 08:03:05 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72372#p72372
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72373#p72373 https://git-scm.com/book/en/v2/Getting- ... -is-Git%3F]]> no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72373#p72373 Sat, 01 Aug 2026 08:07:23 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72373#p72373 <![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72375#p72375 estoy terminando de implementar los servicios , y empezar las pruebas para tener el entorno de desarrollo para HMG
ya implemente SESSION que nos permite trabajar con varios proyectos a la vez. esto nos permite sacar info o copiar capacidades de otros proyecto para integrarlo al actual.
podemos guardar la sesion y poder recuperarla, esto es los proyectos abiertos, los archivos de conocimiento importados, los tabs abientos de Scintilla, los simbolos encontrados en el documento actual de Scintilla.
en fin.. varias capacidades que siempre quise tener en el querido IDE de Roberto !.
Captura de pantalla 2026-08-02 002538.png

Attachments


Captura de pantalla 2026-08-02 002538.png (96.12 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72375#p72375 Sun, 02 Aug 2026 03:31:42 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72375#p72375
<![CDATA[General :: Re: Workspace ( ejemplo - sample) :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72376#p72376 no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72376#p72376 Sun, 02 Aug 2026 06:27:07 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7763&p=72376#p72376 <![CDATA[General :: Workspace - development environment :: Author danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72377#p72377 Today, after a very long time, Workspace is moving from being a sample to a trial version, removing elements that served merely as a bridge.
I have already added the services for Workspace; there are several of them, and they are described in the documentation.

Context:

Those services are interconnected and need to be tested in a real-world scenario; in my case, I was working on a PC application project for the HopeWay IP camera. It doesn't expose the camera via ONVIF—a feature found in many IP cameras—and since I was never able to resolve the errors, I put the project on hold.

...so the need for real projects with compilation errors came at just the right time for me.

I already have the compilation service... it's called WBS; it runs from the command line or is launched via Windows Explorer, and it replaces HMG's Build.bat.

WBS (Workspace Build System) uses a library called WES (Workspace Engine System), which is responsible for assembling the entire project for hbmk2.

When HBMK2 executes that build, it calls Harbour, then the G++ compiler, and finally the linker.
All of this generates trace logs.
Ultimately, if the compilation is successful, it generates a simple log file named `build.log`.

But if there was an error, the IDE sometimes wouldn't give us the summary. That’s why I now have a compilation diagnostic service that generates a human-readable log—a more detailed and precise diagnostic.

This document is saved in the xx.ws file, which is readable by Scintilla; however, the Navigator does not provide precise details regarding the location of the error. You simply need to select the warning, error, or info item with the mouse, and it takes you to the document where the issue occurs.
Captura de pantalla 2026-08-03 023525.png
Captura de pantalla 2026-08-03 023701.png
Captura de pantalla 2026-08-03 023912.png
I still need to make a few adjustments to the Workspace setup—similar to what I was doing before—so you can test it in your projects, identify any errors, and get them fixed.

I think being able to test it would really help me finish it up. Just a reminder that I work on this in my spare time; programming isn't my full-time job anymore—I moved on from that after doing it for years and years. My work now is as a piercer—something that used to be a hobby—much like being a lathe operator (which remains an unfinished project of mine because I lack the tools to build a small lathe just for fun).

Attachments


Captura de pantalla 2026-08-03 023525.png (138.81 KiB)


Captura de pantalla 2026-08-03 023701.png (121.1 KiB)


Captura de pantalla 2026-08-03 023912.png (116.61 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72377#p72377 Mon, 03 Aug 2026 05:47:37 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72377#p72377
<![CDATA[General :: Re: Workspace - development environment :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72378#p72378 Español

Hola a todos: mientras desayuno estoy revisando y corrigiendo la documentacion de Workspace. casi nadie las lee pero debe estar sincronizada con todas las modificaciones y actualizaciones del entorno de desarrollo.
Workspace nacio despues de ver que estaba luchando mucho con el manejo de los controles al estar trabajando con el diseñador de formularios para IDEunicode.
asi que de pasar a diseñar el IDE pase a rediseñar la GUI no modificando todo lo construido para que haya compatibilidad.
Esa compatibiidad ahora se bifurca con un simple

Code: Select all

#define Modern
#include 'hmg.ch
ahi está la separacion de GUI ("#include 'gui.ch' ) y HMG("#include 'mingui.ch')

como vi que algunos controles debian ser modernizados por ejemplo TextBox, este debe ser acompañado por un Label en algunos casos, entonces TextBox Modern tiene un Label incluido que puede estar arriba, abajo, a la izquierda o derecha, con un PlaceHolder que se borra al comezar a escribir dentro de el control.
asi como otros controles mas tienen Modern.

desde hoy comenzaré a leer y comprender el funcionamiento del Editor de Formularios, y quien lo haya estudiado puede ayudarme mucho, si usted ya miro las entrañas de diseñador puede buscarme en Telegram con mi nombre de usuario que es DaNiElMaXiMiLiAnO
y comentarme sobre el.. gracias!


PD: las imagenes de Workspace compilando con WES me permitio encontrar errores que IDE no me decia. ese ejemplo generaba .exe (clase tONVIF para camera9.hbp)
hoy WES con el codigo corregido pudo generarme el .exe

Ingles

Hello everyone: while having breakfast, I'm reviewing and correcting the Workspace documentation. Almost no one reads it, but it needs to be synchronized with all the modifications and updates to the development environment.
Workspace was born after I realized I was struggling a lot with handling controls while working with the form designer for IDEunicode.

So, instead of designing the IDE, I moved on to redesigning the GUI, without modifying everything that had been built, to ensure compatibility.
That compatibility is now forked with a simple

Code: Select all

#define Modern
#include 'hmg.ch'
That's where the separation between GUI ("#include 'gui.ch'") and HMG ("#include 'mingui.ch'") is located.

Since I saw that some controls needed to be modernized, for example, TextBox, which should be accompanied by a Label in some cases, TextBox Modern includes a Label that can be positioned above, below, to the left, or to the right, with a PlaceHolder that is cleared when typing begins within the control.

as well as other controls that have Modern.

Starting today, I will begin to read and understand how the Forms Editor works, and anyone who has studied it can help me a lot. If you have already looked into the inner workings of the designer, you can find me on Telegram with my username, DaNiElMaXiMiLiAnO, and tell me about it. Thanks!

PS: The Workspace images compiling with WES allowed me to find errors that the IDE didn't tell me about. That example was generating an .exe (tONVIF class for camera9.hbp). Today, WES, with the corrected code, was able to generate the .exe.

History:
Captura de pantalla 2026-08-04 094553.png

Attachments


Captura de pantalla 2026-08-04 094553.png (65.06 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72378#p72378 Tue, 04 Aug 2026 13:19:18 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72378#p72378
<![CDATA[General :: Re: Workspace - development environment :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72381#p72381
https://youtu.be/U-RleTTagXo]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72381#p72381 Thu, 06 Aug 2026 01:28:42 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72381#p72381
<![CDATA[General :: Re: Workspace - development environment :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72382#p72382 no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72382#p72382 Thu, 06 Aug 2026 06:22:13 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72382#p72382 <![CDATA[General :: Re: Workspace - development environment :: Reply by Steed]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72383#p72383 no_email@example.com (Steed) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72383#p72383 Fri, 07 Aug 2026 01:51:43 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72383#p72383 <![CDATA[General :: Re: Workspace - development environment :: Reply by ASESORMIX]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72384#p72384 no_email@example.com (ASESORMIX) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72384#p72384 Fri, 07 Aug 2026 01:59:41 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72384#p72384 <![CDATA[General :: Re: Workspace - development environment :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72385#p72385 Les dejo el link: https://t.me/HMGWorkspace

Si quiere enviar mensaje personal recuerden que mí nombre para encontrarme sin saber mí número de celular es : DaNiElMaXiMiLiAnO

descomprimir y leer :
Details.rar

Attachments

Details.rar (1.87 KiB)
]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72385#p72385 Tue, 11 Aug 2026 04:37:59 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72385#p72385
<![CDATA[General :: Re: Workspace - development environment :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72386#p72386
Captura de pantalla 2026-08-11 204534.png
forma de uso en CMD
Captura de pantalla 2026-08-11 205326.png
los invito a probarlo, desde mi grupo en telegram estaré subiendo la nueva version que incluye esta y otras caracteristicas implementada estos dias.

enlace de Invitacion : https://t.me/HMGWorkspace

Attachments


Captura de pantalla 2026-08-11 204534.png (74.83 KiB)


Captura de pantalla 2026-08-11 205326.png (17.37 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72386#p72386 Tue, 11 Aug 2026 23:58:51 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72386#p72386
<![CDATA[General :: Re: Workspace - development environment :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72387#p72387 Navigator reconoce funciones y punteros encerrados dentro de #pragma BEGINDUMP / #pragma ENDDUMP
asi como el proyecto puede contener archivos .c y .cpp
Captura de pantalla 2026-08-12 152002.png
Proyecto
app.hbp
source\main.prg
source\window.prg
source\native_winapi.c
source\editor_bridge.cpp
La diferencia práctica es esta:
gcc:
Compila y enlaza C. Si le pasás .c, trabaja como C. Puede compilar .cpp si se lo forzás, pero al enlazar no siempre arrastra automáticamente la librería estándar C++.
g++:
Compila y enlaza C++. También puede compilar .c, pero puede tratar el flujo como C++ según opciones/extensión. Al enlazar, agrega automáticamente el runtime C++: libstdc++, soporte de excepciones, constructores globales, etc.

hoy Workspace trabaja con :
Harbour 3.2.1dev (r2607071005)

gcc (x86_64-posix-seh-rev1, Built by MinGW-Builds project) 16.1.0

g++ (x86_64-posix-seh-rev1, Built by MinGW-Builds project) 16.1.0

Attachments


Captura de pantalla 2026-08-12 152002.png (122.53 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72387#p72387 Wed, 12 Aug 2026 18:35:59 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72387#p72387
<![CDATA[General :: Re: Workspace - development environment :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72388#p72388

Attachments


Captura de pantalla 2026-08-12 170613.png (110.37 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72388#p72388 Wed, 12 Aug 2026 20:16:54 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72388#p72388
<![CDATA[General :: Re: Workspace - development environment :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72389#p72389 la forma era desacoplar los compiladores dentro de Workspace y creando archivos .hrb
An HRB file (.hrb) is a Harbour Portable Binary file. It contains precompiled portable p-code and symbol tables generated by the Harbour Compiler. Think of it as a compiled script or modular component that runs across different operating systems without OS-specific binary code.

Key CharacteristicsPortable Binary: Contains intermediate byte-code (p-code) rather than native machine code.Modular Updates: Allows developers to ship single updated program routines rather than recompiling and sending a full monolithic executable.

Dynamic Execution: Can be loaded, executed, or queried at runtime using Harbour's interpreter tools.

How to Use HRB Files

Creation: Compile a source file into an HRB binary via the command line using hbmk2 -gh file.prg or harbour file.prg /gh.

Execution: Run the portable binary directly using the Harbour runner tool via hbrun file.hrb.

Integration: Main programs can load .hrb files dynamically during execution to call isolated functions or modules.
https://github.com/harbour/core/blob/ma ... bmk2.en.md

https://www.hmgforum.com/viewtopic.php?t=5233 por Luis Vasquez]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72389#p72389 Fri, 14 Aug 2026 03:03:33 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72389#p72389
<![CDATA[General :: Re: Workspace - development environment :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72390#p72390

Attachments


Captura de pantalla 2026-08-13 234848.png (44.24 KiB)


Captura de pantalla 2026-08-13 234814.png (97.8 KiB)

]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72390#p72390 Fri, 14 Aug 2026 03:15:28 +0000 https://hmgforum.com/viewtopic.php?f=24&t=7767&p=72390#p72390
<![CDATA[My HMG Projects :: Re: 📢 Announcement: Exclusive Access to Private MiniGUI 26.07 Builds :: Reply by serge_girard]]> https://hmgforum.com/viewtopic.php?f=15&t=7761&p=72333#p72333 no_email@example.com (serge_girard) https://hmgforum.com/viewtopic.php?f=15&t=7761&p=72333#p72333 Thu, 16 Jul 2026 06:03:23 +0000 https://hmgforum.com/viewtopic.php?f=15&t=7761&p=72333#p72333 <![CDATA[My HMG Projects :: Re: 📢 Announcement: Exclusive Access to Private MiniGUI 26.07 Builds :: Reply by gfilatov]]> https://hmgforum.com/viewtopic.php?f=15&t=7761&p=72379#p72379
We’re pleased to announce the release of exclusive Private MiniGUI 26.07 Update 3 build packages.

The following packages are now available:

🔹 MiniGUI MinGW-W64 64-bit Package
Includes
* Harbour MiniGUI Extended Edition 26.07 Update 3 (PRO)
* Harbour 3.2.0 (r2607071000)
* Harbour Make (hbmk2) 3.2.0 (r2026-07-07 10:00)
* gcc version 16.1.0 (MinGW-W64 x86_64-MSVCRT, built by Brecht Sanders, release 4)

🔹 MiniGUI BCC 7.70 32-bit Package
Includes
* Harbour MiniGUI Extended Edition 26.07 Update 3 (PRO)
* Harbour 3.2.0 (r2607071000)
* Harbour Make (hbmk2) 3.2.0 (r2026-07-07 10:00)
Note. Embarcadero C++ 7.70 for Win32 is available by request

---

These builds are exclusively available to MiniGUI donors as a token of our gratitude for your continued support.

Thank you for being part of the MiniGUI community!

Warm regards,
Grigory Filatov
on behalf of the MiniGUI Team]]>
no_email@example.com (gfilatov) https://hmgforum.com/viewtopic.php?f=15&t=7761&p=72379#p72379 Wed, 05 Aug 2026 05:35:11 +0000 https://hmgforum.com/viewtopic.php?f=15&t=7761&p=72379#p72379
<![CDATA[My HMG Projects :: Re: 📢 Announcement: Exclusive Access to Private MiniGUI 26.07 Builds :: Reply by danielmaximiliano]]> https://hmgforum.com/viewtopic.php?f=15&t=7761&p=72380#p72380

https://www.youtube.com/watch?v=kuZIzL0K4o4]]>
no_email@example.com (danielmaximiliano) https://hmgforum.com/viewtopic.php?f=15&t=7761&p=72380#p72380 Wed, 05 Aug 2026 09:34:21 +0000 https://hmgforum.com/viewtopic.php?f=15&t=7761&p=72380#p72380