Novidades no FWH 26.07
Destaques do FiveWin for Harbour/xHarbour versão 26.07 (julho 2026).
Veja também whatsnew.txt na raiz do FWH para o diário completo.
DesktopWeb — um PRG, desktop + browser (login.prg)
Novo sample samples/DesktopWeb/login.prg: uma única aplicação
que expõe o mesmo HTML/CSS/JS ao desktop e a qualquer
browser.
- Servidor HTTP multi-thread na porta 8080
(
hb_threadStart+hb_socket*; compilar com-mt) - Desktop:
TWebView2navega parahttp://localhost:8080/ - Browser: a mesma URL
- Páginas partilhadas: login moderno e dashboard de consultas de clínica
- Lógica partilhada:
ValidateLogin()em Harbour; sessão por cookieDWSESS - API:
POST /api/login,POST /api/cmd,GET /dashboard,GET /logout - Demo:
admin/1234,demo/demo
Compilar: cd samples\DesktopWeb e build.bat
(ou build_new.bat login hm64 -mt). Requer Runtime WebView2
para a janela desktop. Ver
TWebView2.
Remote View + WebView2 (testrvweb)
Novo exemplo samples/RemoteView/testrvweb.prg que combina
Remote View com TWebView2:
- Barra de botões FWH nativos (HTML demo, Navigate, Eval, contador)
- Edge WebView2 embutido com página demo e ponte
SendToFWH→bOnBind RemoteViewStartna porta 8080 para ver/controlar a mesma janela a partir de qualquer browser na LAN
Disposição no mesmo ecrã: janela desktop em baixo
(FROM nTop, nLeft … PIXEL) para a imagem do browser ficar
em cima; RemoteViewSetOffset modesto. Requer Runtime WebView2.
Detalhe:
Remote View + WebView2.
XBrowse multilinha + LimitText (sample xbrml250)
Novo sample samples/ui/xbrowse/xbrml250.prg: edição de coluna de
texto longa em várias linhas na célula, com limite de comprimento
(exemplo: 250 caracteres).
nDataLines >= 2ecEditPicturevazio →TMultiGetcom wrap ao digitar. Picture forçaTGetde uma linha.bOnPreEdit:RTrim()e depoisLimitText( nMax )(campos com PadR/Space bloqueiam digitação).- ENTER termina a edição; Ctrl+ENTER / Shift+ENTER = um único quebra-linha
(não chamar
Replace( CRLF )— duplica o salto). bOnPostEdit:Left( xVal, nMax ).
Detalhes: TXBrowse multi-line cell edit (documentação EN; ES em es/ui/txbrowse.html).
samples/misc/dshow.prg — webcam (Media Foundation)
samples/misc/dshow.prg mostra preview ao vivo da webcam e captura BMP
num diálogo FiveWin. No Windows 10/11, DirectShow
IVideoWindow / GetCurrentImage costuma devolver um
buffer preto mesmo com o grafo em Running (verificado com
FaceTime HD / UVC). O sample usa por isso
Media Foundation através de código C embutido no PRG.
- C autocontido: o antigo helper
mfcam.cppfoi convertido para C dentro de#pragma BEGINDUMP. GUIDs e vtables COM mínimas são declaradas localmente; os entry points MF/COM são resolvidos em runtime a partir das DLLs do sistemaole32,mfplat,mfemfreadwrite. Não são necessáriosmfcam.dll, headers do SDK de MF nem bibliotecas de importaçãomf*.lib. - UI: um timer grava cada frame em BMP e carrega-o num
control
IMAGEreal (preview ao vivo) e snapshot opcional. - Compiladores: qualquer variante com
build_new.bat. Verificado com Harbour 64 bits (hb64,hm64) e xHarbour + BCC32 (xb32). - Fix 64 bits (ago 2026): o C embutido inclui
hbapiitm.hpara quehb_itemArrayNew/hb_itemReturnReleaseusem protótipos de ponteiro. Sem ele, builds 64 bits crashavam com ACCESS_VIOLATION emMfCamStatus()após Connect (retorno truncado paraint). - Diagnóstico (opcional):
build_camtest.batgera testes C++ puros sem FiveWin —camtest_mf64.exe(MF, recomendado) ecamtest64.exe(DirectShow; muitas vezes preto no mesmo PC).
cd samples\misc
build_new.bat dshow hb64
:: ou: build_new.bat dshow hm64 / xb32
dshow.exe
FW_DemoDB() — novo servidor demo MySQL
O servidor MySQL demo na nuvem usado pelos samples do FWH mudou.
FW_DemoDB() agora conecta a um único host:
- Host:
mail.fivetechsoft.com - Database:
fivetech_test - User:
fivetech_test - Password:
fivewin2026
O segundo servidor (nServer = 2) foi removido. Se o primeiro
parâmetro for uma string, continua a ser tratado como cLib
("FWH", "ADO" ou "DLP"); valores
numéricos são ignorados. Os samples existentes não precisam de alterações de
código após recompilar a biblioteca PRG.
oCn := FW_DemoDB() // nativo FWH (padrão)
oCn := FW_DemoDB( "ADO" ) // via ADO
oCn := FW_DemoDB( "DLP" ) // via Dolphin, se linkado
Ver também MariaDB / MySQL — FW_DemoDB().
TWebView2 — Fixed Version Runtime
TWebView2():New() aceita um terceiro parâmetro opcional
cBrowserExecutableFolder (o browserExecutableFolder da Microsoft).
Quando definido, o WebView2 carrega um Runtime Fixed Version / standalone dessa pasta
em vez do Runtime Evergreen instalado no sistema.
- Útil em SO antigos (p. ex. Windows Server 2012 R2) onde o Evergreen atual não funciona
- Útil quando o Runtime não pode ser instalado na máquina
- Caminho = raiz do Fixed Version (pasta com
msedgewebview2.exe) - Deve ser passado no construtor (o ambiente é criado em
New()) - Código existente sem o parâmetro permanece igual
oWeb := TWebView2():New( oWnd, , "C:\MeuApp\WebView2Runtime" )
Também corrigido: o segundo parâmetro cUserDataFolder era sobrescrito com um
caminho padrão em AppData; agora é respeitado.
Referência: TWebView2.
Outras correções de julho 2026
- MAPISendMail — com TO de um parâmetro, preenche
lpszAddressvazio a partir do nome (Thunderbird / clientes Simple MAPI estritos) - TXBrowse:SelectRow() — divisão por zero com colunas multi-select sem totais
- window.prg — TSBROWSE adicionado a
cBrwClassList - dshow.prg — sample webcam com código C Media Foundation autocontido;
Harbour 64 bits precisa de
hbapiitm.hno C embutido (ver acima)
TDashGauge — Medidor Semicircular para Dashboards
Novo sample samples/tgauge/TDashGauge.prg: uma subclasse de
TControl que renderiza um medidor semicircular com arcos grossos,
agulha de previsão e ponto central — tudo com buffer duplo via GDI para
eliminar flicker.
- Arrastar esquerdo: move o valor da zona ativa para o ângulo do mouse
- Clique direito: alterna zonas — Meta → Atual → Previsão
- Roda do mouse: ajusta o valor ±1% por notch
- API:
SetData(),SetValue(),SetTitle(),SetColors() - Build:
build_new.bat tgauge hb32