Newsgroup: it.comp.programmare.win32
Titolo: Window Procedure delle finestre di dialogo

Ho creato una semplice applicazione che crea una finestra di dialogo. Questa
in risposta al messaggio WM_INITDIALOG nella dialog procedure modifica
l'icona della propria classe con SetClassLong. Io pensavo che, dato che la
window class delle finestre di dialogo è registrata in win, le modifiche
avrebbero interessato l'intero sistema. Invece ho rilevato che solo le
dialogbox della mia applicazione riflettevano il cambiamento. Come mai?
Qualcuno sa darmi una spiegazione?
Grazie in anticipo per l'interessamento
Ciao, Giuseppe

 wrote in message
7mak6g$5ee$1...@hermes.iol.it...




>Qualcuno sa darmi una spiegazione?
Hai createo una finestra di classe DIALOG?
Se non sbaglio...
Windows usa le classi delle finestre piu' come un template durante la creazione della finestra, nel senso che ne copia le caratteristiche per creare la finestra. Se cambi la classe solo le finestre nuove sono interessate. Solo della tua applicazione? Probabilmente di tutte. Ma le finestre di Windows sono della classe DIALOG o sono di tipo (sparo) WINDIALOG?
Ciao.

toccata.
Come non puo essere toccata?! La funzione SetClassLong va a buon fine e
infatti nella mia applicazione tutte le finestre di dialogo (i common dialog
Apri, Salva oltre alla mia dialog principale) si ritrovano con la mia
iconcina sulla barra del titolo. Il fatto strano è che questo cambiamanto
non si ripercuote sull'intero sistema. Qualcuno sa darmi una spiegazione?
PS. Se si credete posso benissimo postare i sorgenti
Grazie a chi si interesserà
Ciao Giuseppe

Solo della tua applicazione? Probabilmente di tutte. Ma le finestre di
Windows sono della classe DIALOG o >sono di tipo (sparo) WINDIALOG?
Il nome della classe non fa differenza. Proprio come dici tu tutte le
finestre in Win di classe DIALOGCLASS (chiamiamola così) dovrebbero subire
le mie modifiche. Ma questo stranamente non succede e non ne capisco il
motivo..... Qualcuno lo sa?
Grazie a chi si interesserà.
Ciao, Giuseppe


Non mi pare di ricordare che USER32 abbia sezioni di PE marcate come
shared, quindi ogni moifica a una zona "scrivibile" della mappatura
della tua DLL e' valida solo per il processo corrente, dato che
tali scritture in DLL  (anche di sistema) vengono gestite con il
meccanismo del copy-on-write.
Per farlo a livello di sistema dovresti scrivere un USER32 fantasma,
che forwardi tutte le chiamate a USER32, dopo aver opportunamente
modificato al caricamento l'icona che ti interessa.
Si fa prima ad andare di editor di risorse e cambiarlo una volta per
sempre.
Sent via Deja.com 
http://www.deja.com/
Share what you know. Learn what you don't.

sempre.
L'editor di risorse del VC++ non lo permette (dovrei andare a  modificare il
file .rc  manualmente). Risulta molto piů facile fare tutto a run-time.
Ciao e grazie, Giuseppe

L'editor di risorse del VC++ non lo permette
Sotto a Win95 (e forse anche 98) hai ragione, ma sotto a NT le risorse si
possono anche modificare. Il motivo e` che sotto a NT ci sono delle API
apposite per farlo, che il Visual C++ sfrutta opportunamente.
Bye! Lorenzo Lutti (
http://members.tripod.it/fidocad
)

apposite per farlo, che il Visual C++ sfrutta opportunamente.
Ho controllato le API riguardanti le risorse e ho visto che alcune non sono
supportate in Win9x. Però credo di non averti capito bene: ti riferivi
proprio a queste API da utilizzare a run-time o alle funzionalità
dell'editor di risorse del VC++?
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
---------------------------------------------------------------------------

dell'editor di risorse del VC++?
A entrambe le cose: l'editor del VC++ usa appunto quelle API. :-)
Immagino che i programmatori del VC++ siano stati pigri e, dato che sotto a
Win9x non c'erano le funzioni gia` pronte, se ne siano semplicemente
fregati... :)


fregati... :)
Grazie per le informazioni
