Clipper On Line • Ver Tópico - Dicas pra entender/alterar comportamento de LIBs
Mudar para estilo Clássico
Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.
Postar uma resposta

Dicas pra entender/alterar comportamento de LIBs

30 Nov 2020 14:20

Tem algumas coisas que a gente acaba esquecendo, até mesmo por nunca ter usado.

HB_GTSYS - este fonte é procurado pra definir a GT default

ANNOUNCE HB_GTSYS - este comando é para que a prioridade ao procurar HB_GTSYS seja no fonte que contém isso.
As LIBs GUI costumam ter isso pra definir GT_GUI como default
Se colocar nos "seus" fontes, seu fonte passa a definir a lib default
Precisa atenção nisso se quiser, por exemplo, misturar GT com uma LIB GUI, porque se entra a da LIB GUI, a outra fica de fora.
Nesse caso trata-se apenas de uma GT pra usar como default, geralmente acompanhada por REQUEST HB_GT_xxx_DEFAULT
É isso que atrapalha usar outra GT misturada com a lib GUI.
Basta ajustar, entendendo como isso funciona, e tá tudo resolvido.

INIT PROCEDURE
INIT FUNCTION
Nunca usei isso, mas são rotinas obrigatoriamente executadas ao iniciar o EXE.
As LIBs GUI tem isso, pra iniciar certas coisas internas da LIB.
Na thread principal elas entram automático, mas em outras threads precisa chamar "manualmente".
Em HWGUI e HMG isso entra automático na thread principal, mas numa nova thread não, por isso acaba gerando erro.
Sem problemas, é só chamar novamente ao abrir outra thread, se precisar.
Também pra entender como uma LIB funciona é bom lembrar disso, porque poderia esconder o ponto de partida de tudo.

De um modo geral é disso que lembro no momento.
São coisas simples, mas podem fazer muita diferença.

Dicas pra entender/alterar comportamento de LIBs

30 Nov 2020 15:02

Faltou dizer:
INIT PROCEDURE e INIT FUNCTION, podem existir várias.
Todas serão executadas, sem ordem pré-definida, antes de executar Main.

E tem EXIT PROCEDURE, EXIT FUNCTION, que vão ser executadas na saída do EXE.

Num exemplo fictício, não é bom fazer isso, poderia carregar DLLs no início, e descarregar no final.
Melhor não fazer isso, senão pode ficar sem poder rodar o programa se faltar alguma DLL.
Foi apenas um exemplo.
Postar uma resposta