PDA

View Full Version : [VC++] Edit box preassegnata


MisterW2
06-09-2002, 20:18
Salve a tutti,
dovrei inserire nell'interfaccia VC++ due edit box contenenti il valore (da mettere INT) 5100 e 5200 (ma ovviamente modificabile da utente). Mi serve poi registrare questi interi in delle variabili per usarle nel seguito del programma.
Chi mi aiuta?
Lo so che è una semplice operaizone per chi maneggia bene il VC++....
grazie mille.

cionci
07-09-2002, 01:41
Se stai usando MFC si fa in questo modo...

Vai sul dialog ci metti una editbox -> Tasto DX -> Proprietà e gli cambi l'ID (in modo che sia comprensibile)...
Tasto Dx->Class Wizard->Member Variables->Selezioni l'ID che hai appena modificato->Dippio Click->metti il nome della variabile dopo m_, selezioni value, selezioni il tipo di dati che dovrà contenere -> Ok -> Ok

Nel costruttore relativo alla classe del dialogo (solitamente finisce in Dlg) cambi il valore con cui verranno inizializzate le EditBox...

Prima di usare uno (o più) variabili membro così create (m_nomeCheGliHaiAssegnato) dovrai utilizzare la funzione UpdateData()...mentre se vuoi che i valori che sono nelle variabili membro vengano visualizzati sul dialogo devi usare UpdateData(FALSE) dopo aver cambiato i valori...

MisterW2
07-09-2002, 08:20
Grazie, in effetti, smanettando qua e là ci ero già riuscito.
Grazie mille cmq.!

MisterW2
10-09-2002, 01:08
Scusami ancora se ti disturbo...
ho l'ultimo problemino....

Quello che tu dici funziona bene se mi trovo nella nomeprogrammaDlg.cpp ma considriamo un altro caso. Supponiamo che un certo bottone mi faccia partire la funzione eleborazione(....) ed in essa debba aggiornare un campo testuale m_text.
per ora ho fatto così: elaborazione(....., CString m_text)....
poi in elaborazione

m_text="....";
però questo non appare nell'edit, occorre dunque un UpdateData(FALSE), comando che non viene accettato (undeclare identifier).
Ho provato a metterci in questo file cpp anche
#include "stdafx.h" ma non ricolve nulla.
Quel è il modo per aggiornare i dati sullo schermo in funzioni/file diverse dal dialog?
Grazie mille.

cionci
10-09-2002, 07:38
Devi passare alla funzione il puntatore al dialogo (CDialog *dlg)...

Poi fai una semplice funzione membro del dialogo tipo questa :

void CTuoDialogoDlg::cambiaValoreEditBox(LPCTSTR str)
{
m_EditBox = str;
UpdateData(FALSE);
}

MisterW2
10-09-2002, 09:31
Scusami.. ma qualcosa non mi funziona.... vediamo s eho fatto bene.
Ho modificato così:

nel nomeDlg.h ho aggiunto nella parte class CnomeDlg dopo il protected
afx_msg void cambiavalore(LPCTSTR str);

nel nomeDlg.cpp ho aggiunto nella funzione del bottone:
CDialog *dlg;
elaborazione(.......,dlg);

ho aggiunto anche:
void CnomeDlg::cambiavalore(LPCTSTR str)
{
m_serverip = str;
UpdateData(FALSE);
}

all'interno di elaborazione.cpp e all'interno della funzione elaborazione :
dlg->cambiavalore(nome);

ma mi dà errore dicendo che cambiavalore is not a member of Cdialog. Cosa ho toppato?
Grazie mille.

cionci
10-09-2002, 09:38
cambiaValore deve essere pubblico...altrimenti la funzione elaborazione non essendo parte della classe non ci può accedere...

L'ultimo parametro di eleaborazione deve essere un CnomeDlg *
E per passare il puntatore all'oggetto corrente devi fare :

elaborazione(..., this);

Ma visto che lo richiami da dentro la classe perchè elaborazione non lo fai membro della classe ?

MisterW2
10-09-2002, 10:31
Oddio ora si che ho le idee confuse....
Mi manderesti un'email
così ti mando uno stralcio d'esempio. Ti volevo poi mandare anche degli shots delle interfacce server-client e avere consigli, se hai tempo.
Grazie mille ;).