Página 1 de 2
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 15 Ago 2019 13:15
por lwinter
Boa tarde,
Alguem poderia me dizer se tem uma forma de customizar a aparência das telas das funções abaixo:
MsgInfo, MsgStop, MsgYesNo, MSGEXCLAMATION
Eu gostaria de alterar a fonte, cor de fundo e texto tanto do painel quanto dos botões.
É possível? Caso afirmativo, teria como explicar como fazer?
Outra coisa estou compilando minha aplicação conforme linha abaixo do HBP mas ocorre o erro "undefined reference HB_FUN_MSGINFO" as demais funções funciona ok.
xhb.hbc
hbwin.hbc
hbct.hbc
gtwvg.hbc
Grato!!!
rgds,
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 15 Ago 2019 18:52
por JoséQuintas
Aqui eu uso, mas criei minhas próprias.
Se não me engano, também tem na HMG.
Na prática são a MessageBox() do Windows, apenas o ícone é que se altera.
No Harbour essa MessageBox() fica disponível na hbwin.
Nota: o nome das constantes pode variar conforme Harbour 3.2 ou 3.4
Código: Selecionar todos
FUNCTION MsgYesNo( cText )
LOCAL lValue
lValue := wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Confirmação", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 ) == WIN_IDYES
RETURN lValue
FUNCTION MsgExclamation( cText )
wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenção", WIN_MB_ICONASTERISK )
RETURN NIL
FUNCTION MsgWarning( cText )
wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenção", WIN_MB_ICONEXCLAMATION )
RETURN NIL
FUNCTION MsgStop( cText )
wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenção", WIN_MB_ICONHAND )
RETURN NIL
Se quiser diferente do Windows, só criando suas próprias rotinas, ou usando alguma que alguém tenha criado.
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 16 Ago 2019 13:30
por lwinter
Jose, consegui entender o conceito das mensagens. Mas não sei nem por onde começar para modificar minhas janelas. Teria como dar um exemplo ou apontar algum diretório do Harbour onde posso trabalhar?
Tentei verificar o fonte demowvg.prg mas ele precisa de threads e estou fugindo disso, hehehe...
Agradeceria muito se alguém pudesse me ajudar, inclusive colocarei o meu fonte final para todas degustarem.
obrigado.
rgds,
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 16 Ago 2019 14:41
por JoséQuintas
Me confundi.
É mensagens ou visual do aplicativo?
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 16 Ago 2019 14:49
por lwinter
Estou tenteando mudar a aparência da aplicação e por isso preciso mudar a aparência das mensagens. É possível?
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 16 Ago 2019 15:04
por JoséQuintas
Ué.. pode deixar os fontes preparados pra isso, e depois se concentra só no visual.
No meu caso tenho minha rotina tradicional, e essas da API
Código: Selecionar todos
Mensagem( "Digite campos, ESC sai" )
Mensagem( "Sim ou Não", "S,N" )
Mensagem( "Sim ou não ou ESC", "S,N, 27" )
Mensagem( "Sim ou Nao", "S,N", 1, 1 )
MsgYesNo( "Sim ou não" )
Mensagem()
Na tradicional, os parâmetros adicionais indicam se tem beep, ou se são no centro da tela.
Se no seu aplicativo ainda não usa rotina de mensagem, pode começar por aí.
Depois, pode alterar a rotina para o visual que quiser, e já altera todo aplicativo de uma vez.
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 16 Ago 2019 15:09
por JoséQuintas
E no fonte anterior que postei, se não usar GTWVG é só verificar a função correspondente que retorne o handle da janela atual.
Se deixar sem nada funciona, mas não fica vinculada à janela atual, pode até ficar atrás da janela atual, por isso o handle é importante.
Código: Selecionar todos
wapi_MessageBox( wvgSetAppWindow():hWnd, cText, "Atenção", WIN_MB_ICONASTERISK )
Se não me engano, hbwin tem equivalente a isso, pra retornar o hWnd da janela atual.
Dá uma testada e veja como fica.
Código: Selecionar todos
wapi_MessageBox( , cText, "Atenção" )
wapi_MessageBox( , cText, "Atenção", WIN_MB_ICONASTERISK )
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 16 Ago 2019 22:49
por JoséQuintas
Só pra deixar ilustrado....
Código: Selecionar todos
REQUEST HB_CODEPAGE_PTISO
#include "set.ch"
PROCEDURE Main
Set( _SET_CODEPAGE, "PTISO" )
SetMode(30,90)
SetColor("W/B")
CLS
Mensagem( "Digite campos, ESC Sai" )
Inkey(0)
Mensagem()
Inkey(0)
Mensagem( "Sim ou Não", "S,N" )
Mensagem( "Sim ou Não ou ESC", "S,N, 27" )
Mensagem( "Sim ou Não", "S,N", 1, 1 )
MsgYesNo( "Sim ou Não" )
Mensagem( "dshfksdhdkh dkslhklh kh kh kh kh kh kh kh kj hk hk hk hk jh kh k hk hk hl h" + ;
"kdskhdd fkhk hkhkj hkj hkj hkjh k hkh hk hk hkj h", " 13" )
Mensagem( "dshfksdhdkh dkslhklh kh kh kh kh kh kh kh kj hk hk hk hk jh kh k hk hk hl h" + ;
"kdskhdd fkhk hkhkj hkj hkj hkjh k hkh hk hk hkj h", " 13", 1, 1 )
RETURN

- mensagem1.png (11.68 KiB) Exibido 3816 vezes

- mensagem2.png (7.01 KiB) Exibido 3816 vezes

- mensagem3.png (10.61 KiB) Exibido 3816 vezes

- mensagem5.png (9.98 KiB) Exibido 3816 vezes

- mensagem7.png (11.19 KiB) Exibido 3816 vezes
É engraçado, mas a mensagem console está mais com a cara do Windows 10 do que a da API do Windows kkkkkk
A da API Windows parece velha kkkk
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 17 Ago 2019 19:14
por lwinter
Concordo com você Jose!
Este estilo chama-se flat design e é nele que estou me concentrando para fazer uma nova UI para console.
Vou criar uma nova função Alert ao estilo Flat com funcionalidade de mouse, e com alinhamento personalizado (esquerdo, direito, centralizado ou justificado). Tudo o que eu for desenvolvendo vou disponibilizar neste fórum.
rgds,
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 21 Ago 2019 19:51
por lwinter
Conforme prometido segue o meu fonte da minha função MsgAlert, similar ao Alert porem abre uma nova janela CRT por cima. Alem disso funciona com mudança de linha com o caracter ";" igual o alert mas a minha função pode justificar ou alinhar para a esquerda ou direita. Alem disso pode personalizar as cores dos botões. Eu deixei o padrão, vermelho e verde mas pode-se fazer com qualquer cor, basta alterar o fonte que esta bem simples.
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 22 Ago 2019 04:07
por lugab
Bom dia, Lwinter...
Faltou definir essa variavel
┌──────────────────────────────────────────────────────────────┐
│ Error BASE/1003 Variable does not exist: WIN_SW_RESTORE │
│ │
│ Quit Retry │
└──────────────────────────────────────────────────────────────┘
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 22 Ago 2019 04:59
por JoséQuintas
Talvez porque indicou LIBs e não HBC
gtwvg.hbc hbwin.hbc
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 22 Ago 2019 23:58
por Ana Mitoooo
Código: Selecionar todos
wvtwin.ch(287): #define SW_RESTORE 9
hbgtwvg.ch(143): #define HB_GTS_SW_RESTORE 9
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 24 Ago 2019 01:38
por JoséQuintas
Só pra curiosidade, a GTWVG.HBC
Código: Selecionar todos
description=GTWVG (an extension of GTWVT, win-only)
skip={!allwin}
incpaths=.
headers=hbgtwvg.ch wvgparts.ch wvtwin.ch
gt=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF}
libs=hbwin.hbc
gui=yes
mt=yes
skip={!allwin} significa que vai ser pulada se não for Windows
headers=hbgtwvg.ch wvgparts.ch wvtwin.ch são justamente os arquivos CH, que são adicionados no uso da GTWVG
libs=hbwin.hbc
Não concordo com essa parte, deveria ser só pelo #include mesmo.
É que se o aplicativo tratar GTWVG e outra LIB gráfica ao mesmo tempo, essa definição dentro do GTWVG.hbc vai atrapalhar, então melhor deixar manual.
O mesmo pra hbwin.hbc
Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.
Enviado: 27 Ago 2019 20:55
por lwinter
Me desculpe pela demora da resposta mas esta linha em questão não é necessária para a função MsgAlert. Se vocês tirarem vai funcionar normalmente. Eu herdei ela do exemplo da demowvg.prg e esqueci de tirar.