Página 1 de 1
Duvida API do windows e Restscreen no GTWVG
Enviado: 09 Mar 2018 16:15
por porter
Olá pessoal,
Estou observando aqui, que se usar uma API do Windows para fazer uma pergunta SIM ou NAO, o RestScreen não restaura a tela
salva com SAVESCREEN, mas se usar um GET, o restscreen restaura corretamete a tela desejada, isso compilando com GTWVG,
não da erro, mas não restaura corretamente.
No caso do GTWVT, restaura corretamente com API ou com GET.
Código: Selecionar todos
tlclientes := SAVESCREEN(0,0,24,79)
Baixar := "N"
IF !PERGUNTA("Confirma Baixa dessa parcela ? ","BAIXAR UMA PARCELA") // Com essa linha o RestScreen nao funciona
*@05,03 SAY "BAIXAR" GET BAIXAR PICT "@!"
*IF BAIXAR = "N"
UNLOCK
RESTSCREEN(0,0,24,79,tlclientes) // Não restaura corretamente se pergunta for uma API DO WINDOWS, com GET da certo
ENDIF
Function Pergunta( cMsg, cTitle )
cTitle := HB_ANSITOOEM(cTitle)
#define IDYES 6
#define WIN_MB_YESNO 0x00000004
#define WIN_MB_DEFBUTTON2 0x00000100 // para que o foco fique no segundo botão
#define WIN_MB_ICONQUESTION 0x00000020
#define WIN_MB_SYSTEMMODAL 0x00000020
RETURN wapi_MessageBox( wapi_GetActiveWindow(), cMsg, hb_defaultValue( cTitle, "Confirma ?" ), WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 ) == IDYES
Duvida API do windows e Restscreen no GTWVG
Enviado: 09 Mar 2018 16:47
por JoséQuintas
Não sei se isso é parte do uso, mas pra esse exemplo nem precisaria de salvar/restaurar tela, porque a API cria uma janela separada da atual.
Quanto ao save/restore screen:
Veja se resolve mexer neste parâmetro, tem a ver com compatibilidade Clipper pra salvar/restaurar tela
Duvida API do windows e Restscreen no GTWVG
Enviado: 09 Mar 2018 17:24
por porter
Não deu certo, a variavel tlclientes é criada no começo da rotina do sistema,
compilei novamente com GTWVT e funciona corretamente da forma como está,
talvez resolva o problema criando uma BOX SIM NAO com GTWVG.
Todos rotinas do sistema, que estiver usando API DO Windows, terei que tirar
porquê o RestScreen não está dando certo.
Obrigado JoséQuintas.
Duvida API do windows e Restscreen no GTWVG
Enviado: 09 Mar 2018 18:16
por JoséQuintas
porter escreveu:Todos rotinas do sistema, que estiver usando API DO Windows, terei que tirarporquê o RestScreen não está dando certo.
Não sei o que tem a ver, porque usar API do Windows nem sequer mexe com a tela atual, nem precisa save screen/restore screen
Testou o compatible?
Duvida API do windows e Restscreen no GTWVG
Enviado: 09 Mar 2018 18:26
por JoséQuintas
Sem save/restore screen
Usei um fonte que eu tinha pra testar.
Com certeza não tem a ver com API.
Apenas durante os GETs que já existiam (pra ter tela preenchida) chamei suas rotinas.


Código: Selecionar todos
#include "inkey.ch"
PROCEDURE Main
LOCAL codigo := 1, descricao := SPace(25), complemento := Space(25)
LOCAL CST := 0, ncm := 0, cfop := 0, GetList := {}, nCont
SETMODE(33,80)
CLS
FOR nCont = 0 TO 33
@ nCont, 0 SAY Replicate("W", 80)
NEXT
SAVE SCREEN
SetColor( "W/B,B/W,,,W/B")
@ 8, 10 CLEAR TO 17, 50
@ 8, 10 TO 17, 50 COLOR "G+/B"
@ 9, 11 SAY Padc( "UMA JANELA", 39) COLOR "W/B"
@ 10, 11 TO 10, 49 COLOR "G+/B"
@ 11,11 SAY "Codigo:" GET codigo PICTURE "99999" VALID OkCodigo( @Codigo )
@ 12,11 SAY "Descricao:" GET descricao PICTURE "@!"
@ 13,11 SAY "Compl:" GET complemento PICTURE "@!"
@ 14,11 SAY "CST:" GET cst PICTURE "9999999999" VALID OkCst( @Cst )
@ 15,11 SAY "NCM:" GET ncm PICTURE "99999999"
@ 16,11 SAY "CFOP:" GET cfop PICTURE "9999"
Testando()
READ
RESTORE SCREEN
RETURN
PROCEDURE HB_GTSYS
REQUEST HB_GT_WVG_DEFAULT
RETURN
FUNCTION OkCodigo( mCodigo )
LOCAL oCrt, GetList := {}, oGT
IF mCodigo != 0
RETURN .T.
ENDIF
oGT := hb_gtSelect()
oCrt := wvgCrt():New(,,{ 2, 2 }, { 20, 20 }, .T. )
oCrt:Create()
@ 2, 1 GET mCodigo
READ
oCrt:Destroy()
hb_gtSelect( oGt )
RETURN .F.
FUNCTION OkCst( mCst )
RETURN mCst == mCst
FUNCTION Testando()
//tlclientes := SAVESCREEN(0,0,24,79)
//Baixar := "N"
IF ! Confirma( "Confirma Baixa dessa parcela ? ", "BAIXAR UMA PARCELA" )
*@05,03 SAY "BAIXAR" GET BAIXAR PICT "@!"
*IF BAIXAR = "N"
//UNLOCK
//RESTSCREEN(0,0,24,79,tlclientes) // Não restaura corretamente se pergunta for uma API DO WINDOWS, com GET da certo
ENDIF
RETURN NIL
//#define IDYES 6
//#define WIN_MB_YESNO 0x00000004
//#define WIN_MB_DEFBUTTON2 0x00000100 // para que o foco fique no segundo botão
//#define WIN_MB_ICONQUESTION 0x00000020
//#define WIN_MB_SYSTEMMODAL 0x00000020
FUNCTION Confirma( cMsg, cTitle )
//cTitle := HB_ANSITOOEM(cTitle)
RETURN wapi_MessageBox( wapi_GetActiveWindow(), cMsg, hb_defaultValue( cTitle, "Confirma ?" ), WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 ) == IDYES
Duvida API do windows e Restscreen no GTWVG
Enviado: 09 Mar 2018 18:32
por JoséQuintas
porter escreveu:Não deu certo, a variavel tlclientes é criada no começo da rotina do sistema,
Chamou a atenção isso.
Como ter certeza do conteúdo da variável?
Mas alterando o fonte... colocando save/restore screen, mesma coisa, exatamente igual.
NENHUM PROBLEMA com API Windows ou com save/restore screen.
Provavelmente deve ser a variável em vários locais, e ficando com conteúdo errado.
Código: Selecionar todos
FUNCTION Testando()
LOCAL tlclientes := SAVESCREEN(0,0,24,79)
//Baixar := "N"
IF ! Confirma( "Confirma Baixa dessa parcela ? ", "BAIXAR UMA PARCELA" )
*@05,03 SAY "BAIXAR" GET BAIXAR PICT "@!"
*IF BAIXAR = "N"
//UNLOCK
RESTSCREEN(0,0,24,79,tlclientes) // Não restaura corretamente se pergunta for uma API DO WINDOWS, com GET da certo
ENDIF
RETURN NIL
Duvida API do windows e Restscreen no GTWVG
Enviado: 09 Mar 2018 18:50
por JoséQuintas
E finalmente, mesma coisa com GTWVT, que nem sei mais se é GTWVT, devido a comentário em outro post.... rs
Duvida API do windows e Restscreen no GTWVG
Enviado: 10 Mar 2018 12:47
por porter
Obrigado JoséQuintas, por sua atenção.
Agora deu certo, para resolver tive que comentar o
Wvt_SetGui( .t. ),
não sei qual a finalidade desse comando, tenho que dar uma procurada.
Código: Selecionar todos
STATIC FUNCTION EXPANDE(linhas,colunas)
HB_GtInfo( HB_GTI_ALTENTER, .F. )
HB_GtInfo( HB_GTI_RESIZABLE, .F. ) // Esta linha é necessária. Sem ela a tela não expande...
* Wvt_SetGui( .t. ) // Comentei essa linha para dar certo
ConfTela()
SetMode(linhas, colunas)
@01,00 CLEAR TO maxrow()-1, maxcol()
Return Nil
Duvida API do windows e Restscreen no GTWVG
Enviado: 10 Mar 2018 16:09
por JoséQuintas
wvt_SetGui(.T.) indica que será usado ambiente GUI, e é desligada a atualização automática de tela.
Ou em outras palavras: se usar isso em console, o default é a tela ficar SEM atualização.