Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Alcott
    Registrato dal
    Jul 2003
    Messaggi
    154

    [VC++] Box di caricamento

    Ciao raga,
    avrei la necessità di inserire nella mia applicazione un box senza pulsanti con la scritta "Caricamento..." (o roba del genere) e che, una volta terminato di caricare, questo si chiuda automaticamente.
    In pratica, prima di chiudere una pagina con l' EndModal(), devo eseguire delle operazioni e nell' attesa vorrei far visualizzare il box, che poi si chiude automaticamente.

    Grazie anticipatamente

  2. #2
    Puoi postare quello che hai scritto fino ad ora? Stai usando qualche framework (tipo MFC o ATL)?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di Alcott
    Registrato dal
    Jul 2003
    Messaggi
    154
    Ciao. Sto usando MFC.

    Appena entro rendo la finestra modale, dall OnInitDlg mi viene generato un thread.
    La schermata di caricamento dovrebbe apparire quando chiudo il thread, che aspetto per qualche secondo la chiusura di questu'ultimo.
    Eccoti lo spezzone di codice per la chiusura del thread (spero basti):

    codice:
    void RFAmbiente::Chiudi() {
    	GetDlgItem(IDC_CHIUDI_CONFIG_MMC)->ShowWindow(FALSE);
    	GetDlgItem(IDC_CHIUDI_CONFIG_MMC2)->ShowWindow(TRUE);
    	UpdateWindow();
    
    	go = false;
    	//MessageBox(L"qui!");
    	if (threadTerminato == false) {
    //		Sleep(5000);
    		TerminateThread(rfThread, -1);
    		Sleep(1000);
    		CloseHandle(rfThread);
    	}
    
    	Logger::log(L"RFAmbiente", L"OnChiudi 1", 9);
    
    //	if (hf!=NULL && modalita!=2 && modalita!=3) SIMUtil::ClosePort(hf);
    	if (hf != NULL) {
    		SIMUtil::GetCMD(hf, "AT*BRK");
    		Sleep(2000);
    		SIMUtil::GetCMD(hf, "AT*Q");
    		Sleep(3000);
    		SIMUtil::ClosePort(hf);
    		hf = NULL;
    	}
    
    	EndDialog(0);
    }
    
    void RFAmbiente::OnChiudiConfigMmc() {
    
    	if (modalita==0 || (salva==1 && result!=NULL) || modalita==3) {
    		MessageBox(L"QUI 1!");
    		if (modalita!=0 && salva!=1 && modalita!=3) {
    			MessageBox(L"QUI 2!");
    			if (SystemUtil::InputBox(
    				CString("I dati non verranno memorizzati; sei sicuro di voler abbandonare l'operazione di RFAmbiente?"),
    				MB_YESNO)==IDYES) {	
    					MessageBox(L"QUI 3!");
    					result = NULL;
    					Chiudi();
    			}
    		}
    		else {
    			MessageBox(L"QUI 4!");
    			Chiudi();
    		}
    	}
    	else {
    		MessageBox(L"QUI 5!");
    		if (SystemUtil::InputBox(
    		CString("I dati non sono stati ancora memorizzati; sei sicuro di voler abbandonare l'operazione di RFAmbiente?"),
    		MB_YESNO)==IDYES) {	
    			MessageBox(L"QUI 6!");
    			Chiudi();
    		}
    	}
    }
    Premendo sul pulsante di chiusura della finestra, mi viene richiamato il metodo OnChiudiConfigMmc().
    Per quanto riguarda il box, mi basta anche una cosa statica che ha solo la scritta senza elementi "dinamici" (tipo barre di caricamento etc).
    Un altra cosetta Nel primo IF del metodo Chiudi(), mi conviene usare secondo te il WaitForSingleObject() o va bene così?

    Grazie

  4. #4
    Be', non basta mostrare una normale finestra (in un thread separato) e poi chiuderla quando termini di attendere l'altro thread? Quanto alla seconda domanda, io userei una WaitForSingleObject.
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.