Visualizzazione window

Moderator: Enrico Maria Giordano

Visualizzazione window

Postby Ugo » Wed Feb 24, 2010 8:25 am

Ciao a tutti,

per far si che la procedura venga lanciata una sola volta ho ripreso questo codice che funziona egregiamente:
Code: Select all  Expand view  RUN
OpenExe( cWINDOW, nValue )
   LOCAL hWnd := GETWINDOW( GETDESKTOPWINDOW(), GW_CHILD ), lExist := .F.

   DEFAULT nValue := SW_MAXIMIZE

   IF ! Empty( cWindow )
      cWINDOW := Upper( cWINDOW )
      WHILE hWnd != 0
         IF cWINDOW $ UPPER( GETWINDOWTEXT( hWnd ) )
            ShowWindow( hWnd, nValue )
            lExist := .T.
            Exit
         ENDIF
         hWnd = GETWINDOW( hWnd, GW_HWNDNEXT )
      ENDDO

   ENDIF

   RETURN lExist

Ciò che non funziona è la ri-visualizzazione della window precedente se questa è nascosta o sotto altre window.
In pratica vorrei che quando viene rilanciata la procedura e questa sente che una è già in esecuzione dovrebbe riportare il fuoco su quella già aperta e poi chiudersi.

Attualmente si chiude senza portare in primo piano quella già aperta.
Ho provato con SW_SHOW, SW_SHOWNORMAL, SW_MAXIMIZE senza alcun risultato.

E' possibile?

Grazie per l'aiuto.
Ciao, best regards,
Ugo
User avatar
Ugo
 
Posts: 283
Joined: Sat Oct 15, 2005 6:40 am
Location: Turin, Italy

Re: Visualizzazione window

Postby Enrico Maria Giordano » Wed Feb 24, 2010 4:37 pm

Io uso questo:

Code: Select all  Expand view  RUN
IF ISEXERUNNING( CFILENOEXT( HB_ARGV( 0 ) ) )
    SHOWWINDOW( FINDWINDOW( 0, "Titolo tua finestra" ), 9 )
    SETFOREGROUNDWINDOW( FINDWINDOW( 0, "Titolo tua finestra" ) )
    RETURN NIL
ENDIF


EMG
User avatar
Enrico Maria Giordano
 
Posts: 8718
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Visualizzazione window

Postby Ugo » Mon Mar 01, 2010 9:42 am

Enrico Maria Giordano wrote:Io uso questo:

Code: Select all  Expand view  RUN
IF ISEXERUNNING( CFILENOEXT( HB_ARGV( 0 ) ) )
    SHOWWINDOW( FINDWINDOW( 0, "Titolo tua finestra" ), 9 )
    SETFOREGROUNDWINDOW( FINDWINDOW( 0, "Titolo tua finestra" ) )
    RETURN NIL
ENDIF
Ciao Enrico,
funziona! :)
L'unico neo è che l'applicazione normalmente è aperta a tutto schermo e, dopo la "riapertura" no!
Nel senso che diventa una finestra normale.
Togliendo la SHOWWINDOW funziona come mi aspetto.
Grazie.
Ciao, best regards,
Ugo
User avatar
Ugo
 
Posts: 283
Joined: Sat Oct 15, 2005 6:40 am
Location: Turin, Italy

Re: Visualizzazione window

Postby Enrico Maria Giordano » Mon Mar 01, 2010 9:58 am

Il problema è che se la finestra è iconizzata credo che non la ripristina. Prova invece con

Code: Select all  Expand view  RUN
SHOWWINDOW( FINDWINDOW( 0, "Titolo tua finestra" ), 3 )


EMG
User avatar
Enrico Maria Giordano
 
Posts: 8718
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Visualizzazione window

Postby Ugo » Mon Mar 01, 2010 2:44 pm

Enrico Maria Giordano wrote:Il problema è che se la finestra è iconizzata credo che non la ripristina. Prova invece con ...
Enrico,
si adesso però la apre sempre a schermo intero!

Non capisco come generare da software il comando di click sul bottone della barra per ripristinare la window iconizzata.

Al momento avrei risolto così nel codice normale:
Code: Select all  Expand view  RUN
OpenExe( "NomeDellaFinestra" ) // per aprire a schermo intero
oppure
Code: Select all  Expand view  RUN
OpenExe( "NomeDellaFinestra", .F. ) // per aprire come finestra

e questa è la funzione OpenExe():
Code: Select all  Expand view  RUN
FUNCTION OpenExe( cTitle, lWindows )

   LOCAL hWnd

   DEFAULT lWindows := .T.   // Default per finestra a tutto schermo.

   IF ISEXERUNNING( CFILENOEXT( HB_ARGV( 0 ) ) )
      hWnd := FINDWINDOW( 0, cTitle )
      IF IsIconic( hWnd )
         SHOWWINDOW( hWnd, IF( lWindows, 3, 1 ) )
      ENDIF
      SETFOREGROUNDWINDOW( hWnd )
      QUIT
   ENDIF

   RETURN Nil
Ciao, best regards,
Ugo
User avatar
Ugo
 
Posts: 283
Joined: Sat Oct 15, 2005 6:40 am
Location: Turin, Italy

Re: Visualizzazione window

Postby Enrico Maria Giordano » Mon Mar 01, 2010 2:53 pm

In teoria il valore 9 che avevo messo dovrebbe fare proprio quello. Boh.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8718
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Visualizzazione window

Postby Ugo » Wed Mar 03, 2010 5:04 pm

Enrico Maria Giordano wrote:In teoria il valore 9 che avevo messo dovrebbe fare proprio quello. Boh.
Enrico,
non mi ricordavo più, l'avevo fatto un po' di tempo fa ma non ricordo dove l'ho trovato o se è farina del mio sacco la cosa importante è che funziona! :D

In pratica devi lanciare 2 volte showwindow, una con SW_MINIMIZE e una con SW_RESTORE! :wink:
Probabilmente si deve ripristinare una situazione prima di SW_RESTORE.
A me funziona perfettamente sia se iconizzato che no.
Fammi sapere se è lo stesso per te.
Ciao, best regards,
Ugo
User avatar
Ugo
 
Posts: 283
Joined: Sat Oct 15, 2005 6:40 am
Location: Turin, Italy

Re: Visualizzazione window

Postby Enrico Maria Giordano » Wed Mar 03, 2010 8:30 pm

Non ho prove da fare al momento ma comunque buono a sapersi, grazie.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8718
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia


Return to All products support

Who is online

Users browsing this forum: No registered users and 5 guests