Programa abrindo janela console extra

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

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Programa abrindo janela console extra

Mensagem por JoséQuintas »

Estou começando a tentar sair da tela console, mas estou com um pequeno problema:
O programa abre normalmente em janela windows, mas abre uma janela console extra.
Alguém sabe o que pode estar errado?
HB 3.0, e BCC 5.5

No fonte:
Function HB_GTSYS()
REQUEST HB_GT_WVG_DEFAULT
REQUEST HB_GT_WVG
Return NIL

Compilação:
harbour jpa.prg -n -m -z -w0 -i\hb30\include
bcc32 -OS -d -c -I\hb30\include; -L\hb30\lib; jpa.c

Linquedição:
ilink32 @jpa.lnk

jpa.lnk:
-Ld:\hb30\lib\win\bcc\obj;d:\hb30\lib\win\bcc;d:\bcc55\lib;d:\bcc55\lib\psdk -Gn -Tpe -aa +
\hb30\lib\win\bcc\c0w32.obj +
jpa.obj +
, +
jpa.exe,,+
gtwvg.lib hbwin.lib png.lib hbextern.lib hbdebug.lib hbvm.lib hbrtl.lib hblang.lib hbcpage.lib +
gtcgi.lib gtpca.lib gtstd.lib gtwin.lib gtwvt.lib gtgui.lib hbrdd.lib hbuddall.lib hbusrrdd.lib +
rddntx.lib rddcdx.lib rddfpt.lib hbsix.lib hbmacro.lib hbcplr.lib hbpp.lib hbcommon.lib +
kernel32.lib user32.lib gdi32.lib advapi32.lib ws2_32.lib winspool.lib comctl32.lib comdlg32.lib +
shell32.lib uuid.lib ole32.lib oleaut32.lib mpr.lib winmm.lib mapi32.lib imm32.lib msimg32.lib +
wininet.lib hbpcre.lib hbzlib.lib cw32mt.lib import32.lib +
rddado.lib hbziparc.lib hbmzip.lib hbct.lib minizip.lib +
,, jpa.res +
;
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
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Programa abrindo janela console extra

Mensagem por sygecom »

Tente acrescentar antes do FUNCTION MAIN() a linha abaixo:
REQUEST HB_GT_GUI_DEFAULT
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Programa abrindo janela console extra

Mensagem por JoséQuintas »

Legal, isso não deu certo, mas ajudou a resolver.
Repeti as mesmas coisas de GTSYS e funcionou

request HB_GT_WVG
request HB_GT_WVG_DEFAULT

Colocando o HB_GT_GUI_DEFAULT, acabou deixando o programa zumbi, apenas ficou na lista de tarefas do windows.
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

Programa abrindo janela console extra

Mensagem por JoséQuintas »

Quanto mais eu mexo nessa parte de GUI, menos eu entendo....
Agora estou tentando voltar a console, retirei todas as partes que havia acrescentado nos fontes, e continua GUI, sem tela adicional de console
Vai entender... rs
Quero deixar a parte gráfica pro final, mas não resisto em mexer um pouco.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Programa abrindo janela console extra

Mensagem por asimoes »

Dá uma olhada no seu projeto (scirpt) se não há nenhuma referencia a lib gráfica e se existe a instrução -gtgui (tem que remover)
►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)
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

Programa abrindo janela console extra

Mensagem por Abel »

Jose Quintas,
estou com o mesmo problema que vc teve da janela extra.
estou usando a gtwvt,
como vc resolveu ?

desde ja agradeco.
Abel
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Programa abrindo janela console extra

Mensagem por Pablo César »

Abel não sei se é o seu caso, mas eu tenho utilizado:

REQUEST HB_GT_WIN_DEFAULT

Antes do Function Main e compilado através da HMG, inclusive aquele exemplo que postei no seu tópico foi compilado pela IDE da HMG para que pudesse ser em modo console.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

Programa abrindo janela console extra

Mensagem por Abel »

Pablo, para este comando qual biblioteca devo colocar no meu hbp ou qual include no meu prg.

coloquei e abriu apenas uma janela , mas o comando abaixo deixou de funcionar .
estou fazendo uns testes de tipo de letra para melhorar um pouco o visual do sistema (texto / modo console)

para funcionar a selecao de letra coloquei
REQUEST hb_gt_wvt_default

Código: Selecionar todos

rN_OPCAO=ALERT2('AZUL','ESCOLHA O TIPO DE LETRA',{"$COURIER NEW","$Lucida Console"})
 IF rN_OPCAO=1
   HB_GTINFO( HB_GTI_FONTNAME, "Courier New" )   
ELSE   
   HB_GTINFO( HB_GTI_FONTNAME, "Lucida Console") 
ENDI
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Programa abrindo janela console extra

Mensagem por Pablo César »

Oi Abel,

O exemplo que eu dei é porque o Harbour não tem embutido uma interface gráfica para o WinAPI. Você vai precisa adicionar uma biblioteca gráfica tais como HWGUI ou MiniGUI para passar seu aplicativo modo console para um ambiente gráfico WinAPI. Leia este artigo: http://patondata.com/harbour/gt.htm

A minha opinião é que se você deseja um aprimoramento visual utilize um ambiente gráfico, mas a programação é totalmente diferente. Desenvolver em modo console, só pode ser uma grande vantagem quando você se vê na necessidade de migrar seu sistema rapidamente para 32 bits. No ambiente GUI você não vai precisar controlar todos as ações do mouse nem ficar brigando com o mouse na sua tela, nesse ambiente já vem esse controle intrínseco. Por isso aconselho a mudar para uma programação gráfica.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

Programa abrindo janela console extra

Mensagem por Abel »

Vou ler a materia que vc me passou, quanto a mudar meu sistema, realmente preciso com urgencia, tenho clientes adquirindo maquinas win7 64 bits e por isso to sendo obrigado a deixar o clipper e passar para o harbour, o que eu estou querendo é aproveitar e ja incrementar alguns recursos que o harbour dispoe mesmo sendo modo console.
Para utilizar uma interface grafica nao da para usar a IDE HBIDE , tem que ser a IDE do Roberto Bastos para desenhar as telas ?

Nao imagino nem por onde comecar para fazer em modo grafico ..., mas com certeza mais para frente vou me dedicar a isso ...

Valeu !!!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Programa abrindo janela console extra

Mensagem por Pablo César »

Para utilizar uma interface grafica nao da para usar a IDE HBIDE , tem que ser a IDE do Roberto Bastos para desenhar as telas ?
Eu não conheço a IDE do Roberto Bastos. Tanto para ambiente gráfico como para o modo console, eu utilizo o HMG de Roberto Lopez, mas também utilizo o HMG Extended (MiniGUI) do Grigory Filatov.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

Programa abrindo janela console extra

Mensagem por Abel »

Ola pessoal, ainda nao consegui eliminar a janela extra,
estou usando harbour nigthy modo console.

alguem poderia mostrar quais comando e/ou procedure foram colocadas no fonte para a compilacao ?

Grato,
ABEL
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

Programa abrindo janela console extra

Mensagem por Abel »

Como sou novo e este forum tem me ajudado muito nestes meus primeiros passos de clipper para harbour e ainda compilando com -gui, segue mais uma questao.

o Problema de abrir 2 janelas quando executo o programa foi resolvido, mas eu descobri que so esta resolvido se eu recriar o atalho q o cliente tinha no windows, senao, continua abrindo 2 janelas.

antes o cliente tinha um atalho para um programa msdos em clipper
exemplo: c:\system\programa\programa.exe
este programa.exe é nome em clipper e tambem é o nome em harbour console compilado com -gui

se eu atualizar a versao do cliente e utilizar o atalho q ja estava criado, vai abrir duas janelas, uma msdos e a outra do programa q foi recompilado com harbour, se eu excluir o atalho e criar um novo atalho para
c:\system\programa\programa.exe vai abrir apenas uma janela.

eu queria que isso fosse automatico evitando recriar os atalhos, sera que alguem sabe se isso é possivel ?
vale dizer que ate as propriedades dos 2 atalhos sao diferentes ja que uma tem cara te atalho msdos nas propriedade e a outra nao.

Abracos,
ABEL
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Programa abrindo janela console extra

Mensagem por sygecom »

Olá Abel,
Eu passei por isso quando migrei meus aplicativos de CLIPPER para xHarbour, e geralmente os usuários criavam um atalho com um nome do próprio EXE ou com nome de SISTEMA, então eu fiz o sistema quando entrar verificar se tinha o novo atalho na Área de trabalho do usuário e procurar pelos antigos nomes e excluir. Claro que tive que abrir mão do antigo nome que se usava no atalho apenas o nome do EXE mantive o mesmo, mudança pequena como colocar um PONTO no final do nome para diferenciar o atalho novo do velho.

Veja como usava chamando apenas função: CRIAR_ATALHO_NOVO() , na próxima vez que ele entrar no sistema já estava com o ícone novo. Se esqueci de algo me fale...

Código: Selecionar todos

***************************
FUNCTION CRIAR_ATALHO_NOVO
***************************
Local aShortCut, oWSHShell
Local cPATH_DESKTOP:=GETENV('HOMEDRIVE')+GETENV('HOMEPATH')+'\Desktop'

Local aATALHOS1 := cPATH_DESKTOP+'\*.lnk" // todos os atalhos da area de trabalho
Local aATALHOS2 := Directory(aATALHOS1), nI

Local lREINICIA:=.F.

FOR nI = 1 TO LEN(aATALHOS2)
   IF UPPER(aATALHOS2[nI,1])='SISTEMA.LNK'  // aqui vai todos os nomes provaveis do antigo icone
      Ferase(cPATH_DESKTOP+'\'+aATALHOS2[nI,1])
      lREINICIA:=.T.
   ENDIF
NEXT

IF FILE(cPATH_DESKTOP+'\Novo_sistema.lnk') // se já existe o nome nem precisa fazer nada
   RETURN .T.
ENDIF

IF !MsgYesNo('Não foi localizado o Icone na area de Trabalho para o Sistema, Deseja Criar Agora ?')
   RETURN .F.
ELSE
   lREINICIA:=.T.
ENDIF

TRY
   oWSHShell:= CreateObject("WScript.Shell")
CATCH error
   ShowMsg('Não foi possivel criar o icone na area de trabalho, Favor revisar')
   RETURN .F.
END

IF IsDirectory(cPATH_DESKTOP) = .F.
   Release oWSHShell
   ShowMsg('Não foi possivel criar o icone na area de trabalho, Favor revisar')
   RETURN .F.
ENDIF
aShortCut:= oWSHShell:CreateShortcut(cPATH_DESKTOP+'\Novo_sistema.lnk')
aShortCut:TargetPath       := CAMINHO_EXE()+'\'+ Nomeexecutavel() //GETENV("HOMEDRIVE")+GETENV("HOMEPATH")+"\Desktop"
aShortCut:WorkingDirectory := CAMINHO_EXE()+'\'
//aShortCut:IconLocation     := "Z:\"+ Nomeexecutavel() //icone do sistema
aShortCut:Save()
Release oWSHShell

IF !FILE(cPATH_DESKTOP+'\Novo_sistema.lnk')
   ShowMsg('Não foi possivel criar o icone na area de trabalho, Favor revisar')
   Return .F.
ENDIF
IF lREINICIA
   MYRUN(Nomeexecutavel())  // ABRE O SISTEMA NOVAMENTE APARTIR DO EXE E NÃO PELO ATALHO
   QUIT // AQUI FECHA O APLICATIVO ATUAL
ENDIF
Return .T.

********************************************************************************
***********VEREFICA O NOME DO EXECUTAVEL E O CAMINHO DO MESMO*******************
*NomeExecutavel()    // verefica o nome
*NomeExecutavel(.t.) // verefica o caminho
********************************************************************************
FUNCTION NOMEEXECUTAVEL(lPath)
LOCAL nPos, cRet
If Empty(lpath)
   nPos:= RAT("\", hb_argv(0))
   cRet:= substr(hb_argv(0), nPos+1)
else
   cRet:= hb_argv(0)
endif
Return cRet
********************
*Retorna o caminho do EXE
FUNCTION CAMINHO_EXE
Return(Substr(Nomeexecutavel(.t.),1,(len(Nomeexecutavel(.t.))- len(Nomeexecutavel()))-1 ))
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Abel
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 14 Mar 2012 13:16
Localização: sao paulo / sp

Programa abrindo janela console extra

Mensagem por Abel »

Valeu, vou tentar e te aviso se deu certo,

desde ja agradeco.
ABEL
Responder