Duvida API do windows e Restscreen no GTWVG

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Duvida API do windows e Restscreen no GTWVG

Mensagem 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 
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Duvida API do windows e Restscreen no GTWVG

Mensagem 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

Código: Selecionar todos

   hb_gtInfo( HB_GTI_COMPATBUFFER, .F. )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Duvida API do windows e Restscreen no GTWVG

Mensagem 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.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Duvida API do windows e Restscreen no GTWVG

Mensagem 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?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Duvida API do windows e Restscreen no GTWVG

Mensagem 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.
tela1.png
tela2.png

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Duvida API do windows e Restscreen no GTWVG

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Duvida API do windows e Restscreen no GTWVG

Mensagem por JoséQuintas »

E finalmente, mesma coisa com GTWVT, que nem sei mais se é GTWVT, devido a comentário em outro post.... rs

Código: Selecionar todos

PROCEDURE HB_GTSYS

   REQUEST HB_GT_WVT_DEFAULT

   RETURN
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

Duvida API do windows e Restscreen no GTWVG

Mensagem 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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Duvida API do windows e Restscreen no GTWVG

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder