Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    VC++6.0. Come mantenere un’applicazione sempre in primo piano?

    Premessa:
    Per motivi di lavoro ho aperto programmi del tipo: Gestione Risorse, Visual Studio, Word…


    Problema:
    Ho un’applicazione Prog1.exe che in un ciclo chiama Prog2.exe (un secondo programma di elaborazione che produce a video i risultati dell’elaborazione, entrambi i programmi sfruttano le MFC).
    Al termine del ciclo io mi attenderei di trovarmi a video Prog1, mentre mi ritrovo a seconda i casi su: Gestione risorse, Visual Studio o altri… Uno dei programi presenti nella barra delle applicazioni.
    Quindi devo riselezionare dalla barra delle applicazioni Prog1.exe.


    Domanda:
    Come posso fare che al termine del ciclo resti il controllo a Prog1.exe?




  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Alla fine dell'esecuzione di Prog2, fai in modo che Prog1 ottenga il focus (con un SetFocus o simili).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Alla fine dell'esecuzione di Prog2, fai in modo che Prog1 ottenga il focus (con un SetFocus o simili).
    No.... Cosa dovrei fare quindi???

  4. #4
    Ho provato


    CWnd::SetFocus();


    ma non dà i risultati sperati....

    :master:

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dipende dal contesto in cui l'hai usato ... bisognerebbe esaminare tutto il codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Ho provato

    CWnd::SetFocus();

    ma non dà i risultati sperati....
    CWnd::SetForegroundWindow(); ?

  7. #7
    E' una banale funzione (in Prog1.exe) che chiama in un ciclo for ( i = 1;..... ) l'applicazione Prog2.exe.
    Al termine del ciclo mi ritrovo in uno dei programmi aperti e non in Prog1.exe.


    :master:

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da IlViandante2960
    E' una banale funzione (in Prog1.exe) che chiama in un ciclo for ( i = 1;..... ) l'applicazione Prog2.exe.
    Al termine del ciclo mi ritrovo in uno dei programmi aperti e non in Prog1.exe.
    Ma prog2 che tipo di applicazione e'? Console?

    Dove hai posto la SetFocus in prog1?

    Ascolta ... senza vedere parte del codice di prog1 e' praticamente impossibile darti una soluzione ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    codice:
    void CView::OnEseguiAnalisi() 
    {
    
       ......................
       ........................
    
    	sprintf(Percorso, "%s%s",conf.DirProgrammi,"\\Analisi.exe");
    	STARTUPINFO         si; 
    	PROCESS_INFORMATION ProcessInfo; 
    
    	BeginWaitCursor();
    	for ( i = 0; i <= NElem; i++ )
    	{
    		pA = Stru::ind2p(i);
    		if ( pA == NULL )
    		   continue;
    
    		IdA = pA->getId();
    		Ts  = pA->getTipoStrutturale();
    		
    		if ( Ts != 99 ) 
    		   continue;
    			
    		Dati(); //Pre-Analisi
    		
    		si.cb = sizeof(STARTUPINFO); 
    		si.lpReserved  = NULL; 
    		si.lpTitle     = NULL; 
    		si.lpDesktop   = "WinSta0\\Default"; 
    		si.dwX = 10, si.dwY = 10;
    		si.dwXSize = si.dwYSize = 0L; 
    		si.dwFlags     = 0; 
    		si.wShowWindow = SW_SHOW; 
    		si.lpReserved2 = NULL; 
    		si.cbReserved2 = 0; 
    
    		if (!CreateProcess(Percorso
    				,NULL //lpszCmdLine
    				,NULL
    				,NULL
    				,FALSE
    				,0
    				,NULL 
    				,NULL
    				,&si
    				,&ProcessInfo)) //Attiva Analisi.exe
    		{ 
    			// Gestione errori
    			AfxMessageBox("Errore nell'attivazione Analisi.EXE");
    
    			CloseHandle(ProcessInfo.hProcess); 
    			CloseHandle(ProcessInfo.hThread); 
    			break;
    		} 
    
    		WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    
    		CloseHandle(ProcessInfo.hProcess); 
    		CloseHandle(ProcessInfo.hThread); 
    
    		}
    	}
    	
    	EndWaitCursor();
    
    	CWnd::SetFocus(); //Non funziona...
    
    }

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma la finestra che deve ricevere il focus qual e'?

    Con il codice che hai mostrato non si capisce la situazione in cui operi (finestra singola? mdi child? ...) ...

    Prova semplicemente con

    SetFocus();
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.