Newsgroup: it.comp.programmare.win32
Titolo: [MFC] Che differenza c'è...

...nel creare un qualsiasi controllo, ad esempio un edit box, nei seguenti
due modi?
1) Selezionandolo direttamente dalla tools box dell'editor di risorse e
disegnandolo sulla form;
2) Creandolo dinamicamente con il corrispondente metodo Create.
Quale modalità è preferita? E perchè?
Grazie
Sergio Mola

2) Creandolo dinamicamente con il corrispondente metodo Create.
Form dinamica (cambia a seconda di alcune 'variabili').
8)
Luc.

Luc <TOGL...@katamail.com-TOGLI> wrote in message
kml8ctse5kfemfau5...@4ax.com...

Ok....fin qui non c'era nessun problema, ma a me interessava la gestione
delle risorse del s.o. (ad esempio) e tante altre cose nascoste di non mia
conoscenza!
Sergio


Beh è una richiesta talmente generica che si potrebbe parlare dell'argomento
a lungo.
In genereale è decisamente più comodo creare la form attraverso l'editor
delle risorse perché il S.O. si prende la briga di gestire automaticamente
la creazione dei vari controlli secondo le varie proprietà.
In genere questo tipo di approccio è rservato alle dialog class.
Parlando del Visual C++, l'editor delle risorse gestisce il file .rc; è un
normale file di testo che gestisce le informazioni di tutte le risorse
gestite dal progetto. Se non l'hai mai aperto in modalità testo ti consiglio
di darci un'occhiata, è decisamente molto istruttivo.
Quando viene compilato il progetto esiste il compilatore delle risorse che
crea il file .res che se non sbaglio contiene tutte le risorse organizzate
in particolari strutture dati (ad esempio le varie dialgo sono organizzate
tramite la struttura DLGTEMPLATE o DLGTEMPLATEEX).
Se analizzi l'eseguibile compilato con un qualsiasi programma di analisi
degli eseguibili di solito le risorse sono impacchettate nel segmento di
sola lettura .rsrc.
La creazione dei vari controlli vie Create è decisamente più laboriosa, non
sfrutta la possibilià di gestire le risorse dialog e come ti è già stato
detto è consigliata in casi particolari in cui è necessario gestire a
run-time alcune caratteristiche della form.
Mi rendo conto di averti dato delle informazioni moooolto generiche (e non
so neache se è su queste cose che volevi argomentare) ma la tua richiesta è
stata veramente moooolto generica.
Ciao
Porlock.

Grazie per le tue informazioni (già in mia conoscenza).
Ok...vedrò di essere più chiaro!
Supponiamo che io voglia crearmi una dialog box con determinati controlli al
suo interno. Come decido di operare?
Allora, il metodo più sbrigativo sarebbe quello di :
1) disegnarsi la propria dialog box;
2) inserire i vari controlli;
3) creare tramite Class Wizard la classe derivata da CDialog per la d.b.;
4) sempre con Class Wizard, successivamente, associare ciascun controllo ad
un dato membro di tale classe affinchè le tecniche di Dialog Data Exchange
possano operare tranquillamente.
Secondo metodo:
1) Crearmi la dialog box tramite codice, si può fare vero?
2) attraverso i metodi create inserire a run-time i vari controlli.
So che la seconda tecnica è più laboriosa della prima ma avrei il gusto,
però, di aver creato tutto io, non ti pare?
Domanda: quali delle due tecniche sopra descritte spreca un minor numero di
risorse del sistema operativo, oppure non c'è differenza?
Sergio Mola


Non so risponderti.
Ad intuito ti direi la seconda perché eviti di realizzare la risorsa dialog
attraverso l'editor delle risorse.
Ma ammesso che ci sia questo risparmio non mi sembra un guadagno decisivo.
In effetti la risorsa dialog non è altro che una struttura dialog template
che passata alla API CreateDialogIndirect (o DialogBoxIndirect)  gestisce la
creazione della dialog e dei controlli in essa contenuti.
Io ho utilizzato entrambe le tecniche di creazione, con prevalenza della
prima.
La seconda tecnica ha uno svantaggio degno di nota: non è sensibile alla
gestione dei caratteri grandi/piccoli dello schermo.
Infatti quando crei i controlli a run-time specifichi l'origine e le
dimensioni in pixel, al contrario quando disegni la dialgo sull'editor delle
risorse lavori in unità di dialog calcolte sulle metriche del font della
dialog che tiene conto de DPI dello schermo.
Ciao.
Porlock.

 dialog che tiene conto de DPI dello schermo.
maquesto calcolo non credo sia impossibile da fare ;-) hehe...
ciao
xaero