Newsgroup: it.comp.programmare.win32
Titolo: [VC++ 6.0] Indicizzare una serie di Check Box ??

Programmo in VC++ 6.0 sotto Win 98 SE
Ho creato una form con una serie di Check Box (supponiamo 10).
E' possibile richiamarle in un ciclo utilizzando un indice per scorrerle
tutte?
Se si, come devo fare?
Io solitamente uso il nome intero della Check Box.
Grazie

"Diego" <l@p.i> ha scritto nel messaggio
news:iO4Od.851471$35.32...@news4.tin.it...

Usa CCheckListBox
ciao
JoGiò

 JoGiň
Per ciň che riguarda Platform SDK c'č qualcosa?
Grazie ancora

 Per ciò che riguarda Platform SDK c'è qualcosa?
Io direi che il modo piu' semplice e' assegnare ai vari check-box degli 
ID (interi) consecutivi, cosi' ti basta un semplice ciclo for...
...o forse non ho capito bene il problema...?
Ciao,
Dan

 Dan
No, hai capito bene, ma gli ID vengono salvati in un file .h come delle
#define ID        1100 (per esempio) e se non sbaglio le #define vengono
sostituite dal numero in tutto il codice dove viene trovata la stringa ID.
Quindi non creo che la cosa possa funzionare se io vado a mettere una
variabile (di un ciclo) al posto del nome ID.
Mi sono spiegato?
Dimmi se sbaglio.

 
Perché no?
se fai:
#define _MIO_NUMERO 100
if(_MIO_NUMERO==100)
{
	printf("E' uguale!);
}
non funziona?

 non funziona?
Lui se non sbaglio intendeva dare l'ID name uguale a un numero, e già credo
che non si possa fare, in quanto non si può fare una define del tipo:
#define 10    100
#define 11    101
e poi fare un ciclo for del tipo:
for (i=10;i<12;i++)
{
if (i==10)
...
...
}

 tutte?
Ti devi creare un array.
-- 
IBM: Imensa Bola De Manteca
News 2000 [v 2.06] / StopDialer / PopDuster - 
http://www.socket2000.com
Akapulce portal: 
http://www.akapulce.net

 variabile (di un ciclo) al posto del nome ID.
Perche' no?
Metti che il primo check-box abbia ID PRIMO_CHECK_BOX e che i check-box 
su cui ciclare siano N, allora puoi tranquillamente fare:
for ( int idCheckBox = PRIMO_CHECK_BOX; 
  idCheckBox < (PRIMO_CHECK_BOX+N-1); 
  idCheckBox++)
{
  // ... lavora su idCheckBox
}
Ovviamente, ribadisco che il codice di sopra presume che gli ID dei 
checkbox sia *consecutivi*.
...E' questo cio' che ti interessava?
Ciao,
Dan

   idCheckBox < (PRIMO_CHECK_BOX+N); 

 Ti devi creare un array.
Ok e come faccio? Mi puoi dare spiegazioni e magari scrivere una bozza di
codice?
Grazie

 >   idCheckBox < (PRIMO_CHECK_BOX+N);
Ok ho capito che intendi, devo però assicurarmi che i valori degli ID nel
file resource.h siano consecutivi e se non lo sono li dovrei modificare io
manualmente.
Giusto?

 manualmente.
Non so se modificare i valori direttamente nel resource.h sia una buona 
cosa (non so se qualcuno l'ha mai fatto...io no comunque). Devi poi 
accertarti di non andare in conflitto con altri ID...
Io di solito mi appoggio al resource editor del VC++ per questo genere 
di operazioni, lo ritengo piu' sicuro...
Ciao,
Dan

 codice?
Guarda che e' un compitino da asilo della programmazione
int checkBtnArr[] = {IDCB_CHK1, IDCB_CHK2, IDCB_CHK120, IDCB_CHK20,
                     IDCB_CHK1111, IDCB_CHK000, IIDCB_CHK12220,
IDCB_CHK200,
                     IDCB_CHK_AAAA, IDCB_CHK_TTTT};
.....
         while(idx < sizeof(checkBtnArr)/sizeof(checkBtnArr[0]))
         {
            CheckDlgButton(hwndDlg, checkBtnArr[idx], BST_CHECKED);
            idx++;
         }
E ti imposti tutti i check box che vuoi. Non e' necessario che gli
id siano consecutivi.
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Ho capito che intendevi, hai ragione, non ci avevo pensato
Grazie

 Dan
Leditor ti crea le checkBox con numeri crescenti, ma se decidi, dopo averne
creati altri da altre parti, di aggiungerne uno tra quelli che vuoi
indicizzare come fai?
Avrà come numero quello dell'ultimo creato + 1 e non quello dell'ultimo
degli indicizzati +1.
Come si può ovviare al problema secondo te?