Clipper On Line • Ver Tópico - Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

GTWVG com API Windows somente no Harbour.
No Harbouir 3.4 está sendo usado pointer, aonde no 3.2 é numérico.

Moderador: Moderadores

 

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor Jairo Maia » 07 Out 2021 15:51

Wvt_DrawLabel( nRow, nCol, cLabel, nAlign, nAngle, cTextColor, cBackColor, ;
cFontFace, nFontHeight, nFontWidth, nFontWeight, nFontQuality, ;
nCharSet, lItalic, lUnderline, lStrikeout )
Por favor, alguém pode me explicar quais são os valores válidos para os parâmetros abaixo?:

nAlign - Quais posso usar e qual efeito? (chutei alguns números, o efeito é nada a ver... os que deram efeito foi coisa maluca mesmo)
nCharSet - Quais posso usar? (nem testei nada, não tenho ideia do que é um CharSet numérico)

Obrigado.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor marcosgambeta » 07 Out 2021 16:26

O parâmetro nAlign controla o alinhamento do texto. O 'default' é TA_LEFT.

Internamente, a função Wvt_DrawLabel chama a função SetTextAlign:

https://docs.microsoft.com/en-us/windows/win32/api/wingdi/nf-wingdi-settextalign

O arquivo wvtwin.ch contém estas constantes:

#define TA_NOUPDATECP                             0
#define TA_UPDATECP                               1

#define TA_LEFT                                   0
#define TA_RIGHT                                  2
#define TA_CENTER                                 6

#define TA_TOP                                    0
#define TA_BOTTOM                                 8
#define TA_BASELINE                               24
#define TA_RTLREADING                             256
#define TA_MASK                                   (TA_BASELINE+TA_CENTER+TA_UPDATECP+TA_RTLREADING)
#define VTA_BASELINE                              TA_BASELINE
#define VTA_LEFT                                  TA_BOTTOM
#define VTA_RIGHT                                 TA_TOP
#define VTA_CENTER                                TA_CENTER
#define VTA_BOTTOM                                TA_RIGHT
#define VTA_TOP                                   TA_LEFT
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor marcosgambeta » 07 Out 2021 16:33

No caso do parâmetro nCharSet, se refere ao conjunto de caracteres.

Internamente, é o membro lfCharSet da estrutura LOGFONT:

https://docs.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-logfonta

As constantes estão no arquivo wvtwin.ch:

#define ANSI_CHARSET                              0
#define DEFAULT_CHARSET                           1
#define SYMBOL_CHARSET                            2
#define SHIFTJIS_CHARSET                          128
#define HANGEUL_CHARSET                           129
#define HANGUL_CHARSET                            129
#define GB2312_CHARSET                            134
#define CHINESEBIG5_CHARSET                       136
#define OEM_CHARSET                               255
#define JOHAB_CHARSET                             130
#define HEBREW_CHARSET                            177
#define ARABIC_CHARSET                            178
#define GREEK_CHARSET                             161
#define TURKISH_CHARSET                           162
#define VIETNAMESE_CHARSET                        163
#define THAI_CHARSET                              222
#define EASTEUROPE_CHARSET                        238
#define RUSSIAN_CHARSET                           204
#define MAC_CHARSET                               77
#define BALTIC_CHARSET                            186


O valor 'default' é o valor do membro 'codepage' da estrutura HB_GTWVT. Inicialmente, é definido como OEM_CHARSET. Se o desenvolvedor não mudar, permanece este.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor Jairo Maia » 07 Out 2021 17:10

Olá Marcos Gambeta,

Há quanto tempo, legal vê-lo aqui novamente...

Muito obrigado pelas esclarecedoras respostas, mas não é assim...

Quanto ao CharSet ok, entendi, valeu.

Quanto a nAlign, quer seja usando TA_LEFT, TA_RIGHT, TA_CENTER, o resultado é: "Procure um psiquiatra...", rs...

Não funciona, o resultado é maluco mesmo...
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor JoséQuintas » 07 Out 2021 17:11

Talvez nos exemplos encontre alguma coisa.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor Jairo Maia » 07 Out 2021 17:58

JoséQuintas escreveu:Talvez nos exemplos encontre alguma coisa.
Já tentei, e muito. Não há nada para esclarecer.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor marcosgambeta » 07 Out 2021 18:41

Testei este exemplo aqui:

#include "wvtwin.ch"

PROCEDURE Main()

   wvt_setgui( .T. )

   SET COLOR TO N/W

   CLS

   wvt_settitle( "Teste com Wvt_DrawLabel" )

   wvt_drawlabel( 05, 10, "TA_LEFT", , , RGB( 255, 255, 255 ), RGB( 198, 158, 198 ), "Arial", 26, , , , , .T., .T. )

   wvt_drawlabel( 10, 10, "TA_RIGHT",  TA_RIGHT, , RGB( 255, 255, 255 ), RGB( 198, 158, 198 ), "Arial", 26, , , , , .T., .T. )

   wvt_drawlabel( 15, 10, "TA_CENTER", TA_CENTER, , RGB( 255, 255, 255 ), RGB( 198, 158, 198 ), "Arial", 26, , , , , .T., .T. )

   inkey(0)

RETURN


Usando como ponto de referência a linha/coluna inicial, notem que:

TA_LEFT: o texto parte do ponto de referência para a direita, ficando alinhado pela esquerda com ele

TA_RIGHT: o texto parte do ponto de referência para a esquerda, ficando alinhado pela direita com ele

TA_CENTER: o texto é centralizado usando o ponto de referência, ficando parte do texto à esquerda e parte à direita
Anexos
drawlabel.png
Exemplo em execução
drawlabel.png (6.5 KiB) Visualizado 1025 vezes
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor JoséQuintas » 07 Out 2021 19:28

Me dá a impressão de que está ao contrário.
A não ser que o alinhamento se refira ao espaço em branco, e não ao texto.

Pede à esquerda fica à direita, e vice-versa.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor JoséQuintas » 07 Out 2021 19:31

Só comentário:

Essas funções WVT_ são aquelas que precisa ficar repintando pra não sumirem, colocar no evento Paint.
Já as funções WVG_ são o contrário, precisa destruir pra elas sumirem.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor JoséQuintas » 07 Out 2021 19:40

Aproveitando do Marcos Gambeta, que está por aqui:

Por acaso deu uma olhada na parte interna da GTWVG?
Me refiro às funções wvg, com ponto de partida na wnd.prg, passando por dialog.prg, e depois as demais?
Não seria interessante expandir isso?
Fazer parte do Harbour pode facilitar uma adoção maior por parte dos usuários.
Mas a parte de compatibilidade com APIs Windows está diferente entre 3.2 e 3.4, em todas as LIBs Windows, incluindo WVT, WVG, WVW, hbwin.
Lembrando que não tem exemplo disso, não adianta procurar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor marcosgambeta » 08 Out 2021 14:57

Este segundo teste pode deixar mais claro o uso das constantes TA_LEFT, TA_RIGHT e TA_CENTER:

#include "wvtwin.ch"

PROCEDURE Main()

   wvt_setgui( .T. )

   SET COLOR TO N/W

   CLS

   wvt_settitle( "Teste com Wvt_DrawLabel" )

   wvt_paint()

   inkey(0)

RETURN

FUNCTION Wvt_Paint()

   wvt_drawlabel( 00, maxcol() / 2, "LABEL CENTRALIZADO NA PRIMEIRA LINHA",  TA_CENTER, , RGB( 255, 255, 255 ), RGB( 198, 158, 198 ), "Arial", 18, , , , , .T., .T. )

   wvt_drawlabel( maxrow() / 2, 02, "TA_LEFT", TA_LEFT, , RGB( 255, 255, 255 ), RGB( 198, 158, 198 ), "Arial", 26, , , , , .T., .T. )

   wvt_drawlabel( maxrow() / 2, maxcol() / 2, "TA_CENTER", TA_CENTER, , RGB( 255, 255, 255 ), RGB( 198, 158, 198 ), "Arial", 26, , , , , .T., .T. )

   wvt_drawlabel( maxrow() / 2, maxcol() - 2, "TA_RIGHT",  TA_RIGHT, , RGB( 255, 255, 255 ), RGB( 198, 158, 198 ), "Arial", 26, , , , , .T., .T. )

   wvt_drawlabel( maxrow(), maxcol() / 2, "LABEL CENTRALIZADO NA ULTIMA LINHA",  TA_CENTER, , RGB( 255, 255, 255 ), RGB( 198, 158, 198 ), "Arial", 18, , , , , .T., .T. )

RETURN 0


O ponto de referência é formado pela linha/coluna inicial. O sentido do texto vai depender da constante usada:

TA_LEFT: o texto começa no ponto de referência
TA_RIGHT: o texto termina no ponto de referência
TA_CENTER: o ponto de referência é o centro do texto

drawlabel2.png
Teste em execução
drawlabel2.png (10.24 KiB) Visualizado 959 vezes
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet [Resolvido]

Mensagempor Jairo Maia » 08 Out 2021 15:07

marcosgambeta escreveu:TA_LEFT: o texto começa no ponto de referência
TA_RIGHT: o texto termina no ponto de referência
TA_CENTER: o ponto de referência é o centro do texto
Olá Marcos Gambeta, mais uma vez obrigado.

Entrei no fórum e ia postar que Finalmente entendi como funciona os métodos de alinhamento na função Wvt_DrawLabel(), isso porque você já tinha postado algo similar mais acima, e foi com base em sua postagem anterior que entendi o "raciocínio" desse método de alinhamento.

Entendi, achei que tem razão prá ser assim, e principalemte: FUNCIONA!!! Quer seja com fonte mono-espaçada ou largura variável (com Kernel), dá certinho em ambos casos.

Muito obrigado Marcos Gambeta pelas dicas. Assunto resolvido.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor marcosgambeta » 08 Out 2021 15:10

JoséQuintas escreveu:Por acaso deu uma olhada na parte interna da GTWVG?
Me refiro às funções wvg, com ponto de partida na wnd.prg, passando por dialog.prg, e depois as demais?
Não seria interessante expandir isso?


Não me aprofundei (ainda) na parte das classes, mas acho que é uma biblioteca que vale a pena manter atualizada e funcional. Tem muitos recursos e há potencial para ser ampliada.

JoséQuintas escreveu:Fazer parte do Harbour pode facilitar uma adoção maior por parte dos usuários.
Mas a parte de compatibilidade com APIs Windows está diferente entre 3.2 e 3.4, em todas as LIBs Windows, incluindo WVT, WVG, WVW, hbwin.
Lembrando que não tem exemplo disso, não adianta procurar.


Algo que ajudaria seria uma biblioteca padrão de ligação com a API do Windows. Esta seria a única função da biblioteca: servir de ponte entre o [x]Harbour e a WINAPI. E quando uma biblioteca precisasse usar uma função da WINAPI, usaria esta biblioteca.

Mas como não existia algo assim quando as bibliotecas surgiram, cada uma implementou o que precisava na ocasião. Padronizar isto agora não é uma tarefa fácil.

No caso da gtwvg, o que poderia ajudar agora seria ter mais exemplos. Não um exemplo enorme, usando muitos recursos, mas sim exemplos curtos e simples demonstrando uma coisa específica. Pessoalmente, acho que assim fica mais fácil para estudo/aprendizado.
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Wvt_DrawLabel() - Parâmetros nAlign e nCharSet

Mensagempor JoséQuintas » 08 Out 2021 18:51

marcosgambeta escreveu:Algo que ajudaria seria uma biblioteca padrão de ligação com a API do Windows. Esta seria a única função da biblioteca: servir de ponte entre o [x]Harbour e a WINAPI. E quando uma biblioteca precisasse usar uma função da WINAPI, usaria esta biblioteca.

Mas como não existia algo assim quando as bibliotecas surgiram, cada uma implementou o que precisava na ocasião. Padronizar isto agora não é uma tarefa fácil.

No caso da gtwvg, o que poderia ajudar agora seria ter mais exemplos. Não um exemplo enorme, usando muitos recursos, mas sim exemplos curtos e simples demonstrando uma coisa específica. Pessoalmente, acho que assim fica mais fácil para estudo/aprendizado.


Pois é, no Harbour 3.4 o Viktor acrescentou definições no Harbour pra parâmetros de API do Windows.
Além disso, ele procurou mover tudo de chamadas à API Windows para a HBWIN, pra ficar padronizado e disponível pra uso geral.

Nesses fontes que mencionei, pode ver que é uma central de desenvolvimento GUI, nos moldes de HWGUI e outras.
Na prática nem tem exemplo nenhum dessa parte, e não dá pra saber se tudo está pronto pra uso.
wnd.prg é o fonte central das janelas
dialog.prg é o fonte da dialog pra usar GUI.
os demais são herdados, igual toda lib GUI faz, pra buttons, textbox, label, e até o tabcontrol.
NÃO se trata da parte de CUI, e sim de um ambiente GUI, escondido nos fontes da GTWVG, que por sua vez fazem parte do Harbour.
Por mais incrível que pareça, NÃO TEM nenhum exemplo que use essa parte "escondida".
Parece até que sou um dos únicos que viu, e usa, essa parte.

Nota: desculpem desviar o assunto, mas sabem que pra mim considero isso importante da GTWVG/Harbour.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para GTWVG

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro