Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [MFC] CEdit e Popup message

    Ciao a tutti, ho una casella di testo CEdit che dovrebbe contenere un intero compreso tra 0 e 99. Ho creato due variabili, una di controllo (CEdit) e una per il valore di tipo intero. Ho poi creato una gestione dell'evento killfocus con il seguente codice:
    codice:
    void CModify_Oem::OnEnKillfocusEditSetupFileNumber()
    {
    	tmp_i = m_filenumber_value;
    	this->UpdateData(TRUE);
    
    	if((m_filenumber.GetWindowTextLength() == 0) || (m_filenumber_value < SETUP_FILENUMBER_MIN) || (m_filenumber_value > SETUP_FILENUMBER_MAX))
    	{
    		CString s1, s2, error;
    		s1.LoadString(IDS_THE_RANGE_MUST_BE_BETW);
    		s2.LoadString(IDS_AND);
    		error.Format("%s %hd %s %hd", s1, SETUP_FILENUMBER_MIN, s2, SETUP_FILENUMBER_MAX);
    		::AfxMessageBox(error, MB_ICONSTOP);
    		m_filenumber_value = tmp_i;
    		m_filenumber.SetFocus();
    	}
    	this->UpdateData(FALSE);
    }
    Se inserisco un numero esterno al range, mi viene correttamente visualizzato il messaggio di errore e viene ripristinato il valore precedente.
    Il mio problema è il seguente, se non immetto nessun numero, mi si apre un popup con il seguente messaggio: "Immettere un valore integer", questo popup mi viene visualizzato due volte, poi appare il mio messaggio di errore per due volte e alla fine di ciò mi viene ripristinato il valore precedente.
    Perchè si comporta in questo modo? Io vorrei solo che apparisse il mio messaggio, sia nel caso il numero inserito sia fuori dal range, sia nel caso non abbia inserito nessun numero.
    Questa cosa pere funzionare se la variabile valore è di tipo CString invece che intera.
    Grazie.
    Enigma

  2. #2
    Nessuna idea sul possibile problema/soluzione?
    Grazie.
    Enigma

  3. #3
    Posso essere più preciso ed indicare dove viene "chiamato" il popup.
    Entrando nella UpdateData(TRUE) mi troverò a chiamare, ad un certo punto, la funzione DoDataExchange(), questa è ovviamente presente nella mia classe, il problema si presenta alla seguente linea:
    codice:
    DDX_Text(pDX, IDC_EDIT_SETUP_FILE_NUMBER, m_filenumber_value);
    che appunto mi gestisce il contenuto della CEdit.
    Però non saprei come risolvere...
    Grazie.
    Enigma

  4. #4
    Ho risolto, nel caso serva a qualcuno lascio il link con la possibile soluzione:
    http://www.ioprogrammo.it/printpage.html;topic=15760.0
    Ciao!
    Enigma

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.