testar se janela é main
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
testar se janela é main
Como eu faço o teste pra saber se a janela é main ou não?
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/
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/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
testar se janela é main
Ola!
O nome do objeto. Como é o nome da Janela Main ?
Saudações,
Itamar M. Lins Jr.
O nome do objeto. Como é o nome da Janela Main ?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
testar se janela é main
Ok, é que estava tentando entender o comportamento da hwgui na mistura.
Mas já entendi.
Mas já entendi.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
testar se janela é main
Aviso: testes como este podem deixar o programa zumbi, e ter que fechar no gerenciador de tarefas.
Consegui uma luz:
Mesmo com erro, significa que aparentemente funcionou.
Se usar hb_gtReload("WVG") sem multithread, isso equivale a uma janela MODAL.
Significa que a janela anterior vai ficar congelada, até que a atual seja liberada.
Se usar em multithead, a coisa fica interessante.
Aí acontece o contrário: nada segurou a janela Main(), nem nada segurou a rotina Main(), fechou Main() fechou tudo.
A conclusão é:
- uma rotina segura a janela que criou.
- uma janela MODAL prende a janela anterior, porque as rotinas NÃO tem multithread.
- uma janela NÃO MODAL, não fica presa à rotina, parece livre, mas está presa à janela Main()
hb_gtSelect() justamente retorna a rotina de eventos da janela, e isso acaba valendo igual a transformar uma janela pai da outra.
Resumindo:
O que impediu de fechar TODA GTWVG, foi a variável nGT.
E o que impediu de fechar TODA HWGUI, foi a variável oMainW.
Isso manteve as duas Main() de cada uma aberta.
Agora pensar em como usar isso a meu favor.
É porque TODAS as próximas janelas dependem dessas.
Consegui uma luz:
Código: Selecionar todos
#include "hwgui.ch"
FUNCTION Main
LOCAL oMainW, nGT
nGT := hb_gtSelect()
hb_ThreadStart( { || test() } )
INIT WINDOW oMainW ;
TITLE "Dummy Main Window" AT 0,0 SIZE 0 , 0
hwg_Msginfo(Transform( nGT,"" ) )
oMainW:Close()
RETURN NIL
function Test()
LOCAL nGT
nGT := hb_gtSelect()
hb_gtReload( "WVG" )
CLS
? nGT
Alert( "WVG" )
return ""
Se usar hb_gtReload("WVG") sem multithread, isso equivale a uma janela MODAL.
Significa que a janela anterior vai ficar congelada, até que a atual seja liberada.
Se usar em multithead, a coisa fica interessante.
Aí acontece o contrário: nada segurou a janela Main(), nem nada segurou a rotina Main(), fechou Main() fechou tudo.
A conclusão é:
- uma rotina segura a janela que criou.
- uma janela MODAL prende a janela anterior, porque as rotinas NÃO tem multithread.
- uma janela NÃO MODAL, não fica presa à rotina, parece livre, mas está presa à janela Main()
hb_gtSelect() justamente retorna a rotina de eventos da janela, e isso acaba valendo igual a transformar uma janela pai da outra.
Resumindo:
O que impediu de fechar TODA GTWVG, foi a variável nGT.
E o que impediu de fechar TODA HWGUI, foi a variável oMainW.
Isso manteve as duas Main() de cada uma aberta.
Agora pensar em como usar isso a meu favor.
É porque TODAS as próximas janelas dependem dessas.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
testar se janela é main
Correção: isso manteve as duas Main() funcionando, mesmo sem janela visível.JoséQuintas escreveu:Isso manteve as duas Main() de cada uma aberta.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
testar se janela é main
E fechando GTWVG fecha GTWVG, e fechando HWGUI fecha HWGUI.
Não importa a ordem !
Esse é o ponto de partida agora pra encontrar solução.
A partir daí, janelas hwgui vão ficar presas à Main HWGUI, e janelas GTWVG vão ficar presas à janela Main da GTWVG.
Como eu já disse, GTWVG já estou craque.
Falta confirmar:
- o que realmente segura a main() hwgui
- o que muda se o aplicativo iniciar pela gtwvg
- o que acontece com hwgui em multithread
Esta última é porque multithread pode causar confusão pra hwgui.
É porque se uma thread não enxerga a outra, a hwgui pode não enxergar a própria janela Main(), e criar outra Main().
Não importa a ordem !
Esse é o ponto de partida agora pra encontrar solução.
A partir daí, janelas hwgui vão ficar presas à Main HWGUI, e janelas GTWVG vão ficar presas à janela Main da GTWVG.
Como eu já disse, GTWVG já estou craque.
Falta confirmar:
- o que realmente segura a main() hwgui
- o que muda se o aplicativo iniciar pela gtwvg
- o que acontece com hwgui em multithread
Esta última é porque multithread pode causar confusão pra hwgui.
É porque se uma thread não enxerga a outra, a hwgui pode não enxergar a própria janela Main(), e criar outra Main().
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
testar se janela é main
Qual a forma correta de definir nas janelas, que vão ser todas isoladas?
Ou quais as opções existentes pra:
janela modal e não modal
Como fica pra isso: a janela main e as demais janelas?
MDI, CHILD, etc.
Ou quais as opções existentes pra:
janela modal e não modal
Como fica pra isso: a janela main e as demais janelas?
MDI, CHILD, etc.
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/
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/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
testar se janela é main
Olá!
Tá lá no exemplo dentro do TUTOR.
Uma janela comum, dentro de outra comum.
Até hoje faço confusão com isso. Pq uma DIALOG aberto não deixa o usuário minimizar a MAIN, são detalhes que só usando para ver, mesmo com explicações, só com uso para ver como é o comportamento.
Saudações,
Itamar M. Lins Jr.
Tá lá no exemplo dentro do TUTOR.
Código: Selecionar todos
#include "hwgui.ch"
Function Test
Local oMain
/* MENUPOS clause sets the submenu, where items with child windows names
will appear. It is set by position, starting with 0. */
INIT WINDOW oMain MDI TITLE "MDI window" AT 100, 100 SIZE 400, 300 ;
MENUPOS 1
MENU OF oMain
MENU TITLE "&File"
MENUITEM "&Create Child" ACTION CreateChildWindow()
SEPARATOR
MENUITEM "&Exit" ACTION oMain:Close()
ENDMENU
MENU TITLE "&Windows"
// Rearrange child windows
MENUITEM "&Tile" ACTION hwg_Sendmessage(HWindow():GetMain():handle,WM_MDITILE,MDITILE_HORIZONTAL,0)
ENDMENU
MENU TITLE "&Help"
MENUITEM "&About" ACTION hwg_Msginfo( HwG_Version(), "About" )
ENDMENU
ENDMENU
ACTIVATE WINDOW oMain
Return Nil
Function CreateChildWindow
Local oChildWnd
INIT WINDOW oChildWnd MDICHILD TITLE "Child "+Time()
// Here may be any controls...
oChildWnd:Activate()
Return Nil
Até hoje faço confusão com isso. Pq uma DIALOG aberto não deixa o usuário minimizar a MAIN, são detalhes que só usando para ver, mesmo com explicações, só com uso para ver como é o comportamento.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
testar se janela é main
Zé,
Não entendi bem, mas veja esse exemplo abaixo, usamos para identificar as DIALOG, MDI E MDIMAIN abertas, talvez lhe ajude.
oWnd = objeto da tela principal do sistema.
Não entendi bem, mas veja esse exemplo abaixo, usamos para identificar as DIALOG, MDI E MDIMAIN abertas, talvez lhe ajude.
oWnd = objeto da tela principal do sistema.
Código: Selecionar todos
***************************************
FUNCTION FECHA_JANELAS(oWnd,lFECHATUDO)
***************************************
LOCAL oDLGS := HDIALOG():ADIALOGS
LOCAL oDLGSMODAL := HDIALOG():aModalDialogs
LOCAL oDLGSMDI := HWindow():aWindows
LOCAL nHANDLE := oWnd:handle
LOCAL lRET :=.T.
LOCAL nI, nI2
IF lFECHATUDO=NIL
lFECHATUDO:=.F.
ENDIF
IF LEN(oDLGS)>0
FOR nI= 1 TO LEN(oDLGS)
IF lFECHATUDO
oDLGS[nI]:close()
ELSE
lRET:=.F.
ENDIF
NEXT
ENDIF
IF LEN(oDLGSMODAL)>0
FOR nI= 1 TO LEN(oDLGSMODAL)
IF lFECHATUDO
oDLGSMODAL[nI]:close()
ELSE
lRET:=.F.
ENDIF
NEXT
ENDIF
FOR nI2= 1 TO LEN(oDLGSMDI)
IF nI2 > 3
IF nHANDLE != oDLGSMDI[nI2]:handle
lRET:=.F.
//ShowMsg(valtoprg(oDLGSMDI[i]:handle))
//oDLGSMDI[i2]:close()
ENDIF
ENDIF
NEXT
RETURN(lRET)Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
testar se janela é main
Valeu.
Com a lista de janelas, dá pra ver se tem Main
Com a lista de janelas, dá pra ver se tem Main
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/
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/
testar se janela é main
Mas pode fazer Hide() na MAINItamar M. Lins Jr. escreveu:Até hoje faço confusão com isso. Pq uma DIALOG aberto não deixa o usuário minimizar a MAIN, são detalhes que só usando para ver, mesmo com explicações, só com uso para ver como é o comportamento.
oThisFormMain:Hide()
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
testar se janela é main
Pera aí....Itamar M. Lins Jr. escreveu: Pq uma DIALOG aberto não deixa o usuário minimizar a MAIN,
Deixei passar...
Se não pode minimizar, então também não pode abrir com Main oculta.
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/
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/
testar se janela é main
Pode fazer hide()JoséQuintas escreveu:Pera aí....
Deixei passar...
Se não pode minimizar, então também não pode abrir com Main oculta.
►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)
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)
testar se janela é main
Outra forma de "esconder" a janela main
Esconder
Exibir
Esconder
Código: Selecionar todos
ThisformMain:Move( 0, 0, 0, 0 )
Código: Selecionar todos
With Object ThisformMain
:Move( 0, 0, ::nWidth, ::nHeight )
:Restore()
End
►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)
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)
testar se janela é main
Parâmetros do Move
Código: Selecionar todos
Move(nCol, nRow, nWidth, nHeight)
►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)
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)
