Clipper On Line • Ver Tópico - Duvida API do windows e Restscreen no GTWVG

Duvida API do windows e Restscreen no GTWVG

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

Moderador: Moderadores

 

Duvida API do windows e Restscreen no GTWVG

Mensagempor porter » 09 Mar 2018 16:15

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.

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
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Duvida API do windows e Restscreen no GTWVG

Mensagempor JoséQuintas » 09 Mar 2018 16:47

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

   hb_gtInfo( HB_GTI_COMPATBUFFER, .F. )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Duvida API do windows e Restscreen no GTWVG

Mensagempor porter » 09 Mar 2018 17:24

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.
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Duvida API do windows e Restscreen no GTWVG

Mensagempor JoséQuintas » 09 Mar 2018 18:16

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Duvida API do windows e Restscreen no GTWVG

Mensagempor JoséQuintas » 09 Mar 2018 18:26

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


#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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Duvida API do windows e Restscreen no GTWVG

Mensagempor JoséQuintas » 09 Mar 2018 18:32

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.

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Duvida API do windows e Restscreen no GTWVG

Mensagempor JoséQuintas » 09 Mar 2018 18:50

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

PROCEDURE HB_GTSYS

   REQUEST HB_GT_WVT_DEFAULT

   RETURN
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Duvida API do windows e Restscreen no GTWVG

Mensagempor porter » 10 Mar 2018 12:47

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.

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
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Duvida API do windows e Restscreen no GTWVG

Mensagempor JoséQuintas » 10 Mar 2018 16:09

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro