Clipper On Line • Ver Tópico - LIB console imitando gráfico

LIB console imitando gráfico

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

Moderador: Moderadores

 

LIB console imitando gráfico

Mensagempor JoséQuintas » 05 Mai 2016 13:34

Aquele link que coloquei mostra como fazer isso.
Também é wapi_SendMessage()

O problema é: Como criar esta variável no Harbour?

typedef struct _LV_ITEM {  
    UINT   mask;        // attributes of this data structure
    int    iItem;       // index of the item to which this structure refers
    int    iSubItem;    // index of the subitem to which this structure refers
    UINT   state;       // Specifies the current state of the item
    UINT   stateMask;   // Specifies the bits of the state member that are valid.
    LPTSTR  pszText;    // Pointer to a null-terminated string
                        // that contains the item text
    int    cchTextMax;  // Size of the buffer pointed to by the pszText member
    int    iImage;      // index of the list view item's icon
    LPARAM lParam;      // 32-bit value to associate with item
} LV_ITEM;


Se fosse uma rotina em C com o Harbour apenas colocando os valores, atenderia qualquer LIB.
Essa parte, só com ajuda de quem programa em C pra "traduzir".
Ajuda pra criar uma variável desse tipo.
Ou... se isso equivale a array, uma rotina que vai criar qualquer array nesse estilo, e já resolve tudo que aparecer.

Nesse caso, aparentemente são coisas simples que faltam.
Sei o que é, mas não sei fazer.
Tem nos fontes da minigui, hwgui e até nesse link, mas em C, pra usar em C.
Então faltam só duas funçõeszinhas pra fazer a mesma coisa no Harbour, sem precisar LIB.
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 05 Mai 2016 16:46

Quanto mais eu vejo, menos entendo.
Trecho de um arquivo no VS2010, windowsx.h

#define Button_GetCheck(hwndCtl)            ((int)(DWORD)SNDMSG((hwndCtl), BM_GETCHECK, 0L, 0L))
#define Button_SetCheck(hwndCtl, check)     ((void)SNDMSG((hwndCtl), BM_SETCHECK, (WPARAM)(int)(check), 0L))
#define Button_GetState(hwndCtl)            ((int)(DWORD)SNDMSG((hwndCtl), BM_GETSTATE, 0L, 0L))
#define Button_SetState(hwndCtl, state)     ((UINT)(DWORD)SNDMSG((hwndCtl), BM_SETSTATE, (WPARAM)(int)(state), 0L))


No C.... usam o nome das funções.

Traduzido pra Harbour:

FUNCTION Button_GetCheck( hWnd ) ;            RETURN wapi_SendMessage( hWnd, BM_GETCHECK, 0, 0 )
FUNCTION Button_SetCheck( hWnd, Check ) ;    RETURN wapi_SendMessage( hWnd, BM_SETCHECK, Check, 0 )
FUNCTION Button_GetState( hWnd ) ;              RETURN wapi_SendMessage( hWnd, BM_GETSTATE, 0, 0 )
FUNCTION Button_SetState( hWnd, State ) ;     RETURN wapi_SendMessage( hWnd, BM_SETSTATE, State, 0 )


A única explicação seria para o caso disso mudar a cada versão do Windows, mas não sei se acontece.
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 05 Mai 2016 19:01

Também dá pra usar rotinas da minigui/oohg.
'Só não sei se isso poderia ser incorporado ao Harbour, ou quem daria manutenção nisso, considerando rotinas em C.
Quebraria o galho até ter uma rotina própria do Harbour.
Digo isso, porque certamente há regras pra fontes no Harbour, e pode acontecer do fonte não atender essas regras.
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 05 Mai 2016 19:12

Uia... joguei um default no tstText:
Como vou usar no console... pego a cor default.
Nada impede de alterar a cor durante ou depois de criar o controle, pra qualquer cor do Windows.
Alterando a cor do texto pra azul:

   SetColor( "B/W" )


gtwvg.png


Fiz isso criando esta parte:

METHOD new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
   ::clr_FG := Substr( SetColor(), 1, At( ",", SetColor() ) + 1 )
   ::clr_BG := ::Clr_FG
   ::tstAny:new( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
   RETURN Self


Apesar de mais interessante FontColor, ForeColor, BackColor, parece que isso é padrão XbpParts, a GTWVG usa clr_FG e clr_BG.
Então melhor seguir o padrão, até mesmo pra continuar compatível.
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor alxsts » 05 Mai 2016 23:41

Olá!

Belo trabalho de pesquisa e desenvolvimento!

Existem outros controles disponíveis? Ex: TreeView, Panel, Slider,StatusBar...
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 06 Mai 2016 10:14

Se tem o Harbour, então tem a pasta GTWVG

3state.prg
activex.prg
bitmap.prg
checkbox.prg
class.prg
combobox.prg
crt.prg
dataref.prg
dialog.prg
drawarea.prg
genrc.prg
htmlview.prg
listbox.prg
menubar.prg
mle.prg
paint.prg
parthdlr.prg
progrbar.prg
pushbut.prg
radiobut.prg
scrollbr.prg
sle.prg
statbar.prg
static.prg
syswnd.prg
tabpage.prg
toolbar.prg
treeview.prg
tstpushbut.prg
wnd.prg


Panel - Não sei qual é

Slider - O que a minigui chama de slider é o trackbar, vai encontrá-lo na tela que foi mostrada

Nota: os que apresentei não tem nada a ver com esses existentes na GTWVG
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 06 Mai 2016 10:26

Tava aqui pensando numa coisa....

Se a "conversa" entre os controles é por mensagens do Windows....
E com os fontes podemos deixar iguais as propriedades/métodos existentes...
O que impede juntar GTWVG e OOHG?
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 10 Mai 2016 01:46

Nem sei o que pensar. O fonte:

 #include "inkey.ch"

PROCEDURE Main

   LOCAL nCont, aControl, nRow := 1, nCol := 1

   aControl := { "COMCTL.Slider", "COMCTL.TabStrip", "COMCTL2.UpDown", "Control0.PauseButton", ;
   "Control0.Axis", "Control0.Cube", "Control0.Knob", "Control0.LEDMeter", "Control0.Effect", ;
   "Control0.SurroundLED", "COntrol0.LEDMeter.1" }

   SetMode(40,100)
   CLS
   FOR nCont = 1 TO Len( aControl )
      BuildActivex( nRow, nCol, aControl[ nCont ] )
      nRow += 5
      IF nRow > MaxRow() - 5
         nRow := 1
         nCol += 20
      ENDIF
   NEXT
   Inkey(0)
   RETURN

FUNCTION BuildActivex( nRow, nCol, cNome )

   LOCAL oCom

   oCom := WvgActiveXControl():New( wvgSetAppWindow(), , { -nRow, -nCol }, { -4, -15 }, , .T. )
   oCom:CLSID := cNome //
   oCom:create()
   RETURN NIL


o resultado na tela:

teste.png


Vai criar controle no Harbour pra que?
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor asimoes » 16 Mai 2018 10:31

Voltando ao assunto:

Tem como criar uma progressbar em harbour com percentual indicativo no meio da barra ?

Ex.:

images.jpg
images.jpg (7.16 KiB) Visualizado 3622 vezes
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 16 Mai 2018 11:38

Sempre tem a opção de criar um controle próprio.
Ou usa a "pintura" automática do Windows, ou cria rotina própria pra isso.
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor asimoes » 16 Mai 2018 12:00

Esse tipo de progressbar eu procurei na hwgui e na minigui e não achei exemplo.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 16 Mai 2018 12:03

Talvez com ajuda da Bostaurus?
Desenhar o gradiente indicando o retângulo desejado, e escrever o texto do percentual por cima.
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: 18011
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor Itamar M. Lins Jr. » 28 Ago 2018 18:55

Ola!
As únicas libs que na minha opinião merecem atenção é a Hwgui e Minigui e a QtContribs essa porque leio nos foruns o pessoal afirmando que usa sem problemas.
Essas outras só aparecem para pulverizar mais os usuários.
Para ver se uma LIB gráfica presta para uso é só testar o BROWSE e se tem alguma IDE, caso contrário fico aguardando o amadurecimento.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

LIB console imitando gráfico

Mensagempor Itamar M. Lins Jr. » 29 Ago 2018 13:33

Ola!
Vc está na fronteira, rsrsr
Infelizmente na minha minha época de usar essas libs, a única que funcionava no Linux/Win era a WVT.
Eu fiz algumas telas para simular o ambiente windows/Linux com fundo/bordas lateral direita e a borda de baixo usando 'w/+w'...
Na época usava nCurses no Linux. Ficava bem parecido com essas telas que vc postou.
Mas no caso das telas do Norton pode esquecer, VGA... Nem compensa ficar "encurralado" nessas antigas "ideias" na minha opinião.
sci.png


**********************************************************
Function Janela(l,c,altura,larg,men,core,cord,corm,sombra)
**********************************************************

* Paramentros passados
*                                                 |--------------
* Linha,Coluna,Altura,Largura,Menssagem(opcional),core,cord,corm(opcionais)
*
*PARAMETERS l,c,altura,larg,men,core,cord,corm,sombra
PRIVATE linha1,linha2,linha3,borda1,borda2,borda3,N,titulo
*IF PCOUNT() = 4
*   l --
*   altura ++
*ENDIF
//HB_CDPSELECT([PT850])
if valtype(cord)= "U"
   cord = 'n/w'
endi
if valtype(core)= "U"
  core = 'w+/w'
endi
if valtype(corm)= "U"
  corm = 'w+/b'
endi
if valtype(sombra)="U"
  sombra = .f.
endif

linha1 := eval({|| "Ú"+REPLICATE("Ä",larg) })
linha2 := "³"+space(larg) //REPLICATE(CHR(32),larg)
linha3 := eval({||REPLICATE("Ä",larg)+"Ù" })
borda1 := "¿" //CHR(191)
borda2 := "³" //CHR(179)
borda3 := "À" //CHR(192)
//Wvt_DrawLine( maxrow()-2,0,maxrow()-2,maxcol(),WVT_LINE_HORZ,WVT_LINE_RECESSED,WVT_LINE_BOTTOM )
@ l,c        say linha1 color core
@ l,larg+c+1 say borda1 color cord

for N := 1 to altura
    @ l+N,c        say linha2 color core
    @ l+n,larg+c+1 say borda2 color cord
next

@ l+n,c+1 say linha3 color cord
@ l+n,c   say borda3 color core
if sombra
   sombra(l,c,l+altura+1,c+larg+1)
endif

if valtype(men) # 'U'
   @ l+1,c+2 say repl(" ",larg-2) color corm
   @ l+1,c+3 say men color corm
endif
//HB_CDPSELECT([PTISO])
Return  .t.


ml := maxrow()/2
mc := (maxcol()-40)/2

janela(ml  ,mc  ,5,40,,'w+/w','n/w','w+/w',.t.)
janela(ml+1,mc+1,3,38,,'n/w','w+/w','n/w')


******************************
Function confirma(texto,opcao)
******************************
*
*
largjan:=len(texto)+1
if largjan<25
   largjan:=25
endif
ces:=(maxcol()-largjan)/2
les:=maxrow()-9

telavelha := savescreen(les,0,les+6,79)
CorVf     := setcolor('n/w')

janela(les,ces,4,largjan,,'w+/w','n/w','w+/w',.t.)
@ les+1,ces+1 say texto color 'n/w'
coluna:=(largjan-9)/2
janela(les+2,ces+6,1,3,,'w+/w','n/w','w+/w')
janela(les+2,ces+15,1,3,,'w+/w','n/w','w+/w')

@ les+3,ces+7  prom "Sim" //color "r/w,+w/r,r/w,r/w"
@ les+3,ces+16 prom "Nao" //color "r/w,+w/r,r/w,r/w"

if opcao
   confirm=2
endif
menu to confirm
if confirm = 1
   janela(les+2,ces+6,1,3,,'n/w','w+/w','n/w')
   @ les+3,ces+7  say "Sim" color 'n/w'
else
   janela(les+2,ces+15,1,3,,'n/w','w+/w','n/w')
   @ les+3,ces+16 say "Nao" color 'n/w'
endif
INKEY(.1)
setcolor(CorVf)
restscreen(les,0,les+6,79,telavelha)
return confirm


Ps; Nessa época ainda usava Joiner.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

LIB console imitando gráfico

Mensagempor portelainfo » 19 Nov 2018 09:46

Olá!

E, se houvesse um jeito de "capturar" as funções TUI dos programas antigos (PC Tools/Norton), sem ter que decompilar?

Eu encontrei um projeto no github que faz basicamente isso. Mas, pelo que vi, roda em linux.

O link é: github.com/endrazine/wcc

Tem um vídeo onde o desenvolvedor menciona o projeto. Voces podem encontrar no canal "Papo Binário" com o título: "Papo Binário #12 - Engenharia Reversa e Witchcraft Compiler Collection".
Portela Info (Mauricio Portela)
portelainfo
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 10
Data de registro: 24 Ago 2014 02:23
Cidade/Estado: Vitoria da Conquista/Bahia
Curtiu: 4 vezes
Mens.Curtidas: 0 vez

Anterior Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Bing [Bot], HASA e 9 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