Mouse com Harbour - testes

Foto de Major Anilto

Categoria: 

O código abaixo compila no harbour 3.2 com windows 10, porém não assume o mouse do windows:


#include "inkey.ch"


Function Main()

    SET EVENTMASK TO HB_INKEY_ALL

    While LastKey() != K_ESC

        Clear Screen
        DispBox( 0, 1, 2, MaxCol(), Nil, "GR+/N" )
        DispBox( 3, 1, MaxRow(), MaxCol(), Nil, "G+/N" )

        @ 1,3  PROMPT "Finalizar"
        @ 1,16 PROMPT "Ag.financeira"
        @ 1,32 PROMPT "Contas bancárias"
        @ 1,52 PROMPT "Telefones"
        @ 1,66 PROMPT "Compromissos"

        MENU TO OPC

        If MRow() != 1
            Loop
        ElseIf LastKey() != K_ESC
            Alert( "Você clicou na opção: " + Hb_NToS( opc ) )
            InKey(5)
        EndIf

    EndDo

Return Nil

Agora, acrescentando um REQUEST HB_GT_WVT_DEFAULT, aceita o mouse no windows 10:


#include "inkey.ch"
REQUEST HB_GT_WVT_DEFAULT

Function Main()

SET EVENTMASK TO HB_INKEY_ALL

While LastKey() != K_ESC

Clear Screen
DispBox( 0, 1, 2, MaxCol(), Nil, "GR+/N" )
DispBox( 0, 1, 2, MaxCol(), Nil, "GR+/N" )


        @ 1,3  PROMPT "Finalizar"
        @ 1,16 PROMPT "Ag.financeira"
        @ 1,32 PROMPT "Contas bancárias"
        @ 1,52 PROMPT "Telefones"
        @ 1,66 PROMPT "Compromissos"

        MENU TO OPC

        If MRow() != 1
            Loop
        ElseIf LastKey() != K_ESC
            Alert( "Você clicou na opção: " + Hb_NToS( opc ) )
            InKey(5)
        EndIf

    EndDo

Return Nil

E por fim, acrescentando as opções de HBInfo dá para ajustar as acentuações e localização:


#include "inkey.ch"
/* HBGTInfo para maior controle do console */
#include "hbgtinfo.ch"
/* Mudando o padrão WIN (console antigo) para WVT (console após o Windows Vista - acho) */
REQUEST HB_GT_WVT_DEFAULT
/* Os REQUEST abaixo servem para carregar os detalhes da lingagem e página de códigos */
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_UTF8

Function Main()

    /* Chamando a linguagem previamente requisitada e a página de códigos */
    HB_LANGSELECT('PT')
    HB_CDPSELECT('UTF8')
    /* Opções de HBGTInfo */
    HB_GtInfo( HB_GTI_MAXIMIZED, .F. )
    HB_GtInfo( HB_GTI_FONTNAME, "Lucida Console" )
    HB_GtInfo( HB_GTI_WINTITLE, "Teste para Mouse" )
    /* Fim de opções de HBGTInfo */
    
    SET EVENTMASK TO HB_INKEY_ALL

    While LastKey() != K_ESC

        Clear Screen
        DispBox( 0, 1, 2, MaxCol(), Nil, "GR+/N" )
        DispBox( 3, 1, MaxRow(), MaxCol(), Nil, "G+/N" )

        @ 1,3  PROMPT "Finalizar"
        @ 1,16 PROMPT "Ag.financeira"
        @ 1,32 PROMPT "Contas bancárias"
        @ 1,52 PROMPT "Telefones"
        @ 1,66 PROMPT "Compromissos"

        MENU TO OPC

        If MRow() != 1
            Loop
        ElseIf LastKey() != K_ESC
            Alert( "Você clicou na opção: " + Hb_NToS( opc ) )
            InKey(5)
        EndIf

    EndDo

Return Nil

O Harbour funciona em pelo menos três contextos HB_GT: 
1. HB_GT_WIN, que trabalha com os padrões do console (CMD) tipo DOS e Windows até XP);
2. HB_GT_WVT, que trabalha com os consoles (CMD) dos WIndows modernos;
3. HB_GT_GUI, para interfaces gráficas tipo janelas.
Por padrão, se não usar REQUEST HB_GT_xxx, o compilador carrega o contexto HB_GT_WIN, por isso há problemas com mouse nos Windows modernos.

Compilando com IDEs HMG, provavelmente a IDE assuma automaticamente o contexto HB_GT_WVT no modo console, e HB_GT_GUI para modo janelas.

Total votes: 0