Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem 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,
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem 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,
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem por JoséQuintas »

Me confundi.
É mensagens ou visual do aplicativo?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem por lwinter »

Estou tenteando mudar a aparência da aplicação e por isso preciso mudar a aparência das mensagens. É possível?
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem por JoséQuintas »

Ué.. pode deixar os fontes preparados pra isso, e depois se concentra só no visual.

Código: Selecionar todos

IF MsgYesNo( "Exclui" )
   DELETE
ENDIF
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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem 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 )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem 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
mensagem1.png (11.68 KiB) Exibido 3817 vezes
mensagem2.png
mensagem2.png (7.01 KiB) Exibido 3817 vezes
mensagem3.png
mensagem3.png (10.61 KiB) Exibido 3817 vezes
mensagem5.png
mensagem5.png (9.98 KiB) Exibido 3817 vezes
mensagem6.png
mensagem7.png
mensagem7.png (11.19 KiB) Exibido 3817 vezes
mensagem8.png
É 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem 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,
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem 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.
Anexos
fontes-msgalert.rar
Fontes MsgAlert
(8.6 KiB) Baixado 213 vezes
Tela do MsgAlert
Tela do MsgAlert
tela msgalert.png (11.63 KiB) Exibido 3757 vezes
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem por lugab »

Bom dia, Lwinter...
Faltou definir essa variavel
┌──────────────────────────────────────────────────────────────┐
│ Error BASE/1003 Variable does not exist: WIN_SW_RESTORE │
│ │
│ Quit Retry │
└──────────────────────────────────────────────────────────────┘
lugab
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem por JoséQuintas »

Talvez porque indicou LIBs e não HBC
gtwvg.hbc hbwin.hbc
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Ana Mitoooo
Usuário Nível 3
Usuário Nível 3
Mensagens: 118
Registrado em: 17 Out 2018 10:00
Localização: Sobradinho/DF

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem por Ana Mitoooo »

Código: Selecionar todos

wvtwin.ch(287): #define SW_RESTORE         9
hbgtwvg.ch(143): #define HB_GTS_SW_RESTORE 9
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lwinter
Usuário Nível 3
Usuário Nível 3
Mensagens: 123
Registrado em: 07 Mar 2011 12:08
Localização: Campinas - SP

Customizar mensagens advertencias ex: MsfInfo, MsgStop, etc.

Mensagem 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.
Responder