Opções:
1) Wvt_Paint()
Uma opção é usar uma rotina com o nome WVT_Paint()
Essa rotina seria a DesenhaGrafico() mostrada no exemplo fictÃcio anterior.
A todo instante, o texto apaga tudo, e o que for gráfico é desenhado novamente.
Outro exemplo fictÃcio:
aDesenhos := {}
DO WHILE .T.
CLS
DesenhaTexto()
DesenhaGrafico( aDesenhos )
ENDDO
Internamente é isso que acontece mas, como o Windows otimiza a atualização de tela, não se enxerga a "repintagem".
Pra acabar com o desenho, teria que limpar a lista em aDesenhos
E se não usar Wvt_Paint()... os desenhos vão sumir (buttons, e tudo mais)
2) Controles WVG/GUI
Os controles que começam com wvg são iguais a qualquer ambiente GUI, eles são janelas que ficam por cima da outra.
Ao atualizar o texto da janela GTWVG que apaga tudo que é gráfico, essa janela que fica por cima não é apagada.
Resultado: se é um button, pode limpar a tela (CLS) que o button não vai ser apagado - é outra janela.
Então temos dois métodos diferentes.
No primeiro método temos que ficar repintando o gráfico senão o gráfico some.
No segundo método temos que retirar o gráfico quando não quisermos mais, porque CLS não resolve.
Porque isso de retirar o gráfico?
Numa LIB GUI é criada uma janela pra cada módulo, já na GTWVG, geralmente o usuário usa a mesma janela pra tudo.
Se é a mesma janela, cabe ao usuário controlar os gráficos que ficam ou que saem.
Mas então não dá no mesmo os dois métodos?
Não.
No primeiro método, o programa tem que ficar repintando a tela toda hora - digamos 1 vez por segundo, mas na prática é a cada atualização.
No segundo método o Windows cuida disso, igual qualquer LIB GUI, ou seja, o programa não repinta nenhuma vez.