Olá Josivan,
Apenas respondendendo suas perguntas, e da minha parte para encerrar este assunto.
Josivan Nascimento escreveu:Amigo jairo vc baixou o anexo e leu os fontes?
Sim.
Josivan Nascimento escreveu:vc vai ver que é gtwvT realmente
Mil perdões... Isso não consigo ver mesmo!
Veja as funções usadas no exemplo para exibir a imagem:
handle := OpenGraphic(x) // abre a imagem
DisplayGraphic( handle, 10,10 ) // exibe a imagem
CloseImage(handle) // fecha o handle da imagem
Veja o comentário que precede a função
DisplayGraphic(), usada para exibir a imagem:
/* * Exibe o grafico indicado em nHandle, nas coordenadas especificadas na tela.
* Ela converte ROW e COL para coordenadas em PIXELs e chama a rotina em C para
* exibir a imagem.
*/
FUNCTION DisplayGraphic( nHandle, Row, Col )
LOCAL a := Wvt_GetXYFromRowCol( Row, Col )
DisplayGraphicEX( nHandle, WIN_GETDC(WVT_GETWINDOWHANDLE()), a[1], a[2] )
RETURN nil
No exemplo que passei, trato apenas o Chr(26) porque uso apenas imagens JPG, que são aproximadamente 11 vezes menores que as imagens BMP, mas se quiser também salvar imagens BMP, basta tratar também o caractere Chr(0), como as funções criadas pelo Vailton em puro código xBase, usadas no exemplo que você postou:
************************************************
* FROM BRGUI Project Source Code *
************************************************
* O Pulo-do-gato para armazenar imagens *
* em arquivos DBF utilizando campos DBT *
* *
* by Vailton Renato - 30/07/2004 = 22:32hs *
************************************************
function MaskBinData(x) // salva a imagem
x := StrTran(x,chr(26),'\\#26//')
x := StrTran(x,chr(00),'\\#00//')
return x
function UnMaskBinData(x) // recupera a imagem
x := StrTran(x,'\\#26//',chr(26))
x := StrTran(x,'\\#00//',chr(00))
return x
Resumindo, da WVT são usadas apenas duas funções, que são:
Wvt_GetXYFromRowCol( <Row>, <Col> ) e
WVT_GETWINDOWHANDLE(), respectivamente uma de conversão de coordenadas e a outra de retorno de controle.
Reiterando, WVT não exibe imagens.