Deu um trabalhinho mas encontrei.
#xcommand @ <x>,<y> SAY [ <oSay> CAPTION ] <caption> ;
...
[ TOOLTIP <ctoolt> ] ;
=> ;
[<oSay> := ] HStatic():New( <oWnd>,<nId>,<nStyle>,<x>,<y>,<width>, ;
<height>,<caption>,<oFont>,<bInit>,<bSize>,<bDraw>,<ctoolt>,<color>,<bcolor>,<.lTransp.> );
[; hwg_SetCtrlName( <oSay>,<(oSay)> )]
Esse último: hwg_SetCtrlName(), porque o nome da variável precisa vir do fonte.
E em hCustomWindow, igual já postaram por aqui:
METHOD OnError() CLASS HCustomWindow
LOCAL cMsg := __GetMessage()
LOCAL oError
LOCAL oItem
IF !Empty( oItem := hwg_GetItemByName( ::aControls, cMsg ) )
RETURN oItem
ENDIF
No caso de erro na classe, acessar um nome que não existe, procura na lista de controles se existe algum com aquele nome, e já assume.
Como isso fica na classe comum de janelas - todo controle herda isso - acaba funcionando.
Muito doido isso.
É isso que hmg não usa, sei lá se dá pra fazer isso sem alterar a parte interna dela.
Transformaria as "mensagens" em DoMethod( "" ) ou coisa parecida (acho que é isso que hmg usa).