Página 1 de 2
Programa abrindo janela console extra
Enviado: 22 Set 2011 00:04
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 +
;
Programa abrindo janela console extra
Enviado: 22 Set 2011 00:15
por sygecom
Tente acrescentar antes do FUNCTION MAIN() a linha abaixo:
REQUEST HB_GT_GUI_DEFAULT
Programa abrindo janela console extra
Enviado: 22 Set 2011 10:59
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.
Programa abrindo janela console extra
Enviado: 22 Set 2011 12:58
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.
Programa abrindo janela console extra
Enviado: 22 Set 2011 13:27
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)
Programa abrindo janela console extra
Enviado: 16 Mar 2012 15:52
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
Programa abrindo janela console extra
Enviado: 16 Mar 2012 16:59
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.
Programa abrindo janela console extra
Enviado: 18 Mar 2012 22:23
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
Programa abrindo janela console extra
Enviado: 19 Mar 2012 09:34
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.
Programa abrindo janela console extra
Enviado: 20 Mar 2012 00:30
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 !!!
Programa abrindo janela console extra
Enviado: 20 Mar 2012 08:34
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.
Programa abrindo janela console extra
Enviado: 16 Abr 2012 12:33
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
Programa abrindo janela console extra
Enviado: 05 Jun 2012 21:21
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
Programa abrindo janela console extra
Enviado: 06 Jun 2012 12:49
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 ))
Programa abrindo janela console extra
Enviado: 06 Jun 2012 20:10
por Abel
Valeu, vou tentar e te aviso se deu certo,
desde ja agradeco.
ABEL