Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-02-2004, 09:19   #1
fabiot
Member
 
Iscritto dal: Apr 2003
Città: Roma
Messaggi: 204
[VC++] Mancato aggiornamento se metto in attesa il programma

Ho un problema, sto realizzando una applicazione in VC++ dialog based. Ho la necessità di eseguire un programma esterno (un programma che si esegue nel prompt dei comandi) mettendo in attesa il programma principale.

Il mio problema sta nel fatto che prima della partenza del programma si deve aggiornare la finestra di dialogo, ma questo non avviene.
Cioè se scrivo

m_messaggio="Questo messaggio deve essere visualizzato prima dell'esecuzione del programma");
UpdateData(FALSE);

SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = NULL;
shExecInfo.lpFile = "programma.exe";
shExecInfo.lpParameters = NULL;
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_HIDE;
shExecInfo.hInstApp = NULL;
if(!ShellExecuteEx(&shExecInfo))
{
AfxMessageBox("Errore nell'esecuzione !!!");
return;
}
WaitForSingleObject(shExecInfo.hProcess, INFINITE);


La finestra di dialogo viene aggiornata solo dopo l'esecuzione del programma.
Come risolvo questo problema?
Grazie
fabiot è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2004, 12:01   #2
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
quando è bloccato sul wait, il programma accoda tutti i messaggi inviati alla finestra nella coda, ma non vegono processati fino al ritorno della funzione
per fare quello che vuoi fare dovresti crearti un thread parallelo che esegua il programma e ne monitori lo stato, tenendo così libera la coda dei messaggi
ri è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2004, 17:35   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Prova a forzare il ridisegno della finestra... Usa RedrawWindow...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2004, 19:58   #4
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
se usa la WaitForSingleObject non può eseguire altre operazioni, è come se fosse bloccato in un getch
ri è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2004, 23:37   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Prima di WaitForSingleObject... Altrimenti può sempre usare un thread e fare la WaitForSingleObjcet da quel thread...con le ovvie precauzioni...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2004, 07:56   #6
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
e io che ho detto?

oppure...

Codice:
while(WaitForSingleObject(shExecInfo.hProcess, 1000) == WAIT_TIMEOUT)
{
    // rinfresco il dialogo
}

// se sei qui il processo ha terminato
ri è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2004, 11:10   #7
fabiot
Member
 
Iscritto dal: Apr 2003
Città: Roma
Messaggi: 204
l'ultima soluzione non funziona...

Scusate ma sono abbastanza ignorante in materia... se potete fornirmi degli esempi..

Rispiego il problema, probabilmente qualcuno può fornirmi una soluzione:

ho un programma dialog based che deve lanciare una applicazione dal prompt dei comandi. Questa applicazione al temine scrive un file di testo. Questo file di testo deve essere letto dal programma principale. Quindi il programma principale deve per forza aspettare che il programma figlio termina.
Quando però lancia il programma, deve aggiornare la finestra di dialogo con una scritta.
Il problema che se metto in attesa il programma principale con WaitForSingleObject la finestra non si aggiorna più.

qualcuno mi ha parlato di creare thread paralleli, ma come si fa??
vi prego, se potete fornitemi degli esempi.

...se non trovo la soluzione non mi laureo più....
fabiot è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2004, 11:17   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quello che ti ha detto ri dovrebbe funzionare (l'attesa non è infinta, ma hai provato comunque con RedrawWindow prima di chiamare WaiForSingleObject ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 19-02-2004, 09:29   #9
fabiot
Member
 
Iscritto dal: Apr 2003
Città: Roma
Messaggi: 204
si ho provato RedrawWindow, ma che parametri devo passare?
Ho usato solo RedrawWindow();
fabiot è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2004, 09:00   #10
fabiot
Member
 
Iscritto dal: Apr 2003
Città: Roma
Messaggi: 204
please...
up!
fabiot è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2004, 09:26   #11
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
il while va bene solo se lo incapsuli in un thread... questo perchè se lo fai all'interno della funzione ti tiene bloccata la coda dei messaggi... tutti i tuoi redraw vengono accodati ma mai eseguiti fino al termine della funzione che li ha richiamati
per non creare un thread puoi usare il TIMER del dialogo, e invece di fare un while usare un if, in quel modo non blocchi la coda dei messaggi e i redraw possono essere processati
ri è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2004, 09:38   #12
fabiot
Member
 
Iscritto dal: Apr 2003
Città: Roma
Messaggi: 204
grazie per la risposta, ma purtroppo non so come si usano i TIMER di cui mi parli.
Mi puoi fare un esempio,
grazie infinite
fabiot è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2004, 10:46   #13
ri
Senior Member
 
L'Avatar di ri
 
Iscritto dal: Feb 2003
Città: fra casa e lavoro
Messaggi: 1061
nell'InitDialog:
#define ID_EVENTO 1234
SetTimer(ID_EVENTO, 1000); // ogni 1s

nel class wizard intercetta il messaggio WM_TIMER
quindi nell'OnTimer:
if(WaitForSingleObject(shExecInfo.hProcess, 1000) == WAIT_TIMEOUT)
{
// rinfresco il dialogo
}
ri è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Android Auto, il nuovo lettore porta in ...
I nuovi MacBook con display OLED potrebb...
Windows 11: l'aggiornamento KB5124010 fa...
iPhone Duo, la pellicola protettiva del ...
Memorie più costose, NVIDIA aumen...
TSMC potrebbe affiancare Intel nel proge...
Windows 11, un solo simbolo può risparmi...
Niente cloud, niente abbonamenti, niente...
Prime o meno, Amazon è piena di o...
Kindle in offerta: e-reader base a 89€ e...
Hackerato l'account ufficiale Microsoft ...
Tutti i dispositivi Ring: videocamere 2K...
Memorie HBM, la domanda si concentra su ...
Dash cam 70mai 4K da 74,99€: A800 Nano, ...
Nuovi rincari da Fastweb: l'operatore ha...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:43.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v