PDA

View Full Version : [C++] Usare l'edit


djpeppe
16-06-2007, 15:07
ciao,
qualcuno mi fa un esempio di come si trasporta un valore numerico da un camnpo edit di un dialog a una semplicissima variabile di tipo int?
facciamo che io ho questo edit
EDITTEXT TN,67,56,18,12,ES_AUTOHSCROLL | ES_NUMBER
e questo static
LTEXT "0",IDC_STATIC,40,20,11,11
e una dialog procedure

BOOL CALLBACK DlgProced(HWND hwndDlg,
UINT uMsg, WPARAM wParam, LPARAM lParam)
{int tn, risultato;
//punto 1
risultato=tn*2; //il fatto è molto più lungo ma...
//punto 2
}

mi servirebbe:
nel punto 1 un qualcosa che prenda il valore dell'edit e lo inserisca in tn;
nel punto 2 un qualcosa che inserisca il risultato nello static sopra espresso.

evitate di rispondermi con "vai a studiare" o "è meglio se le fai tu stesso"... battetemi queste poche righe pleeeaaaseeeeeeee

cionci
16-06-2007, 17:41
Con GetDlgItem recuperi l'handle dall'id della risorsa...
Con GetWindowText recuperi il testo tramite l'handle dell'edit...
Con SetWindowText scrivi il testo nello static tramite l'handle...

http://www.softzone.it/tutorials/showfaq.php?fldAuto=1

cionci
16-06-2007, 17:44
Ah...ovviamente devi trasformare il testo in numero, altrimenti non funziona...fare la moltiplicazione e ritrasformarlo in testo...

vizzz
16-06-2007, 17:57
oppure più semplicemente:
http://www.functionx.com/visualc/classes/dlgboxes/classwizard1.gif
da qui associ alla edit una variabile metodo di tipo int.
con UpdateData(TRUE) leggi il valore della edit e lo carichi nella variabile int, con UpdateData(FALSE) scrivi sulla edit il valore della variabile membro.

cionci
16-06-2007, 21:18
Non sta lavorando in MFC, ma con le API di Windows ;)

vizzz
17-06-2007, 00:41
Non sta lavorando in MFC, ma con le API di Windows ;)

e c'hai ragione cavolo...devo disintossicarmi dalle mfc.:D

djpeppe
17-06-2007, 14:40
ok ho risolto
ora ho una variabile int e la devo mandare nella messagebox
come faccio?


int x=88;
MessageBox(0, x, "Risultato", MB_OK);

vizzz
17-06-2007, 14:52
ok ho risolto
ora ho una variabile int e la devo mandare nella messagebox
come faccio?


int x=88;
MessageBox(0, x, "Risultato", MB_OK);

devi passare una stringa alla funziona messagebox, prova con sscanf

djpeppe
17-06-2007, 15:10
si lo so che devo passare una stringa, infati il codice che ho postato di sopra non funziona perchè messagebox non vuole un int.
come faccio a convertire l'int in stringa senza che mi vengano cose strane?

cionci
17-06-2007, 16:07
Questo non riguarda le API, ma il C e il C++, quindi se stai studiando le API almeno queste cose le dovresti saper fare.
Comunque in C puoi usare sprintf, mentre in C++ con ostringstream...

djpeppe
18-06-2007, 08:38
ok torniamo alle API...
ho un edit dove c'è testo.
con la funzione GetWindowText prendo il testo e lo inserisco nella variabile str in questo modo
LPTSTR str;
GetWindowText(hwndDlg, str, EOPEN);
spero che fin qui sia corretto. ora però devo converire la stringa di tipo LPTSTR in char. come faccio?
grazie