Ribbon Nativo vs Hwgui vs WebView2

Entendendo o que cada tecnologia faz — e por que elas se complementam

Índice

1. Introdução

Quando você trabalha com o Windows Ribbon Framework (o mesmo componente do WordPad e do Paint), surge uma dúvida natural:

"Os controles do Ribbon são completos? Substituem a Hwgui?"

A resposta é: são completos, mas não substituem a Hwgui. O Ribbon é uma barra de comandos, não um framework de UI. Este documento explica a diferença e mostra como combinar as peças.

2. O que "controle completo" significa

Um <ComboBox> no Ribbon é um ComboBox de verdade:

Um <Spinner> é um Spinner de verdade:

Um <ToggleButton> é um botão de estado:

Não é "só o desenho". O comportamento todo está no Windows. Você só implementa o Execute (o que fazer quando clica) e o UpdateProperty (que valores mostrar).

3. O que o Ribbon pode fazer

Controle Uso típico
ButtonAções (Salvar, Imprimir)
ToggleButtonOpções com estado (Negrito on/off)
ComboBoxEscolhas curtas (fonte, tamanho)
SpinnerValores numéricos (zoom, quantidade)
CheckBoxOpções binárias
GalleryGaleria de estilos (como no Word)
ColorPickerEscolha de cor
FontControlSeletor de fonte completo
DropDownButtonMenu suspenso com comandos
SplitButtonBotão + dropdown

4. O que o Ribbon NÃO pode fazer

O Ribbon é uma barra de comandos, não uma área de trabalho. Ele só pode fazer uma coisa: mostrar abas/grupos/botões numa faixa no topo da janela.

O que você precisa Ribbon pode?
Grid/tabela de dadosNÃO
Editor de texto (RichEdit)NÃO
Árvore (TreeView)NÃO
Lista com scrollNÃO
Formulário com vários camposNÃO
Gráficos / dashboardNÃO
CalendárioNÃO
Área de desenhoNÃO
Múltiplas janelasNÃO
Qualquer coisa abaixo da faixa de comandosNÃO

5. A arquitetura correta

┌─────────────────────────────────────────┐ │ Ribbon (nativo do Windows) ~120px │ ← só comandos ├─────────────────────────────────────────┤ │ │ │ Área de trabalho │ ← o resto │ │ │ Aqui entra Hwgui OU WebView2 OU o que │ │ você quiser: grids, forms, editores │ │ │ └─────────────────────────────────────────┘
O Ribbon não substitui a Hwgui. Ele convive com ela.

6. Quando usar cada um

Situação Ferramenta
Barra de menus/ferramentas no topoRibbon
Grid de clientesHwgui (Browse) ou WebView2 (DataTables)
Formulário de cadastroHwgui (Edits, Gets) ou WebView2 (HTML form)
Dashboard com gráficosWebView2 (Chart.js)
Editor de textoHwgui (RichEdit) ou WebView2 (Quill)
Menus contextuais (botão direito)Hwgui
Diálogos modaisHwgui
Barra de statusHwgui

7. Exemplo concreto: editor simples

┌──────────────────────────────────────────┐ │ [Arquivo] [Home] [Insert] [View] │ ← Ribbon (nativo) │ ┌─Clipboard─┐ ┌─Font─┐ ┌─Paragraph─┐ │ │ │Paste Cut │ │B I U │ │• 1 2 ¶ │ │ │ └──────────┘ └──────┘ └───────────┘ │ ├──────────────────────────────────────────┤ │ │ │ Área de edição do texto │ ← Hwgui (RichEdit) │ (o usuário digita aqui) │ │ │ ├──────────────────────────────────────────┤ │ Linha 1, Coluna 1 | INS | 100% │ ← Hwgui (status bar) └──────────────────────────────────────────┘

O Ribbon manda os comandos (Negrito, Itálico, Salvar). A Hwgui faz o trabalho pesado (edição, arquivo, status).

8. Como os componentes se comunicam

Usuário clica "Negrito" no Ribbon ↓ CApplication::Execute(ID_CMD_BOLD) ↓ PostMessage(hwnd, WM_USER+200, ...) ↓ Harbour: HandleRibbonCmd() detecta ID_CMD_BOLD ↓ Harbour aplica negrito no RichEdit do Hwgui: oRichEdit:SetFont( ..., .T. )

O Ribbon só avisa "o usuário clicou em Negrito". Quem faz o negrito acontecer é o Harbour + Hwgui.

9. Comparação com o Office

O Office funciona exatamente assim:

Parte Tecnologia
RibbonMotor próprio da Microsoft (não o nativo)
Área de ediçãoMotor próprio
ComunicaçãoProtocolo interno

Se você abrir o Word, verá:

10. Arquitetura recomendada

┌────────────────────────────────────────────┐ │ Ribbon nativo (menus, botões) │ ← ribbon_wrapper.dll ├────────────────────────────────────────────┤ │ │ │ WebView2 (HTML/CSS/JS) │ ← webview_wrapper.dll │ Grids, forms, dashboards... │ │ │ ├────────────────────────────────────────────┤ │ Hwgui: status bar, diálogos, menus ctx │ ← hwgui └────────────────────────────────────────────┘ ↓ Harbour (regras de negócio, DBF)

Cada camada faz o que sabe fazer melhor:

Camada Responsabilidade
RibbonComandos no topo (visual nativo do Windows)
WebView2Interface rica e flexível (HTML/CSS/JS)
HwguiJanela hospedeira, status bar, diálogos
HarbourLógica de negócio, acesso a DBF
Não é "ou" — é "e". Os três se complementam.

11. Resumo

Pergunta Resposta
Os controles do Ribbon são completos?SIM — comportamento todo no Windows
Substituem a Hwgui?NÃO — são só a barra de comandos
Dá pra fazer um app só com Ribbon?NÃO — falta a área de trabalho
Preciso de Hwgui?SIM — pra grid, form, editor, status bar
Preciso de WebView2?OPCIONAL — pode substituir a Hwgui na área cliente
Os três convivem?SIM — arquitetura válida