Newsgroup: it.comp.programmare.win32
Titolo: "Customizzare" Windows...

Già già, dopo aver visto all'opera programmi del calibro di WindowBlinds,
Litestep & soci (che modificano quasi ogni aspetto dell'interfaccia grafica
di Win dalla taskbar, ai vari bottoni, e via dicendo...) mi è venuta voglia
di saperne di + su come Windows gestisce tutte queste cose per poi (in un
looooooontanissimo futuro! date le mie ancora scarse conoscenze...ugh) poter
fare applicazioni simili... vabbè forse ho esagerato, ma se qualcuno mi
disse una mano gliene sarai grato!
Grazie in anticipo!!!
Mau X

 wrote in message 7rbo8b$4dp$1...@nslave1.tin.it...



Thanks! ma io intendevo se esiste una documentazione (SDK et simili...)
sull'argomento (ho dato un occhiata al sorgente di LiteStep, but è un po'
incasinato x me... soprattuto senza riferimenti! anche nell'help del mio
Visual C++ 6.0, non mi pare di aver trovato nulla di attinente... forse ho
cercato male), in poche parole se voglio modificare l'aspetto dei bordi
delle finestre oppure i bottoni di maximize, Minimize,etc. la loro
disposizione nella barra del titolo e via dicendo... che devo fare?? (senza
riscrivermi l'explorer.exe daccapo...!)
thankS Again!
Mau X

 wrote in message 7rd2rg$41i$1...@nslave1.tin.it...



Ok, Thanks!

Vedi, in ambito Unix la shell grafica ha un aspetto modificabile perché è
stato pensata perché ciò avvenisse. Inoltre se programmi un'applicazione, ti
appoggi a qualche set di librerie, non c'è mai qualcosa di davvero standard.
Questa è la forza ma anche il tallone d'Achille di quel sistema. Io infatti
non lo apprezzo, perché non so come la mia applicazione apparirà all'utente.
Sistemi come Windows, invece, hanno un'interfaccia standard e non
modificabile, e così dovrebbe rimanere per non sviare l'utente. Al massimo
puoi customizzare la tua applicazione, ma in genere già questo è fastidioso.
In pratica: se ti piace poter scegliere il look&feel della tua GUI usa Unix
(o Linux, naturalmente) sennò usa Windows (o MacOS).
Bye,
Lorenzo

Windows usa le windows procedure per gestire le finestre (finestre vere e
propie, bottoni, list-box, combo-box e così via). Per ridisegnare lo stile di
queste finestre (o anche creartene delle proprie) devi intercettare alcuni di
questi messaggi e riscriverne il codice. Per l'aspetto devi modificare il
messaggiio WM_PAINT. Purtroppo così facendo le modifiche resteranno tali solo
nel tuo programma.
Mau X ha scritto:


nel tuo programma.
Immaginavo una cosa del genere...!!!
ma esaminando L'help del VC++6, non ho trovato una spiegazione Esauriente  e
approfondita su come lavora la WinProc e sui relativi messaggi x la gestione
delle finestre (Frame...), bho... forse ho cercato male (la mia consocenza
della lingua inglese č rimasta a livelli scolastici o poco +) eppoi c'č il
"piccolo" problema che io finora ho sempre solo lavorato con le MFC! le API
le ho appena sfiorate (giusto i concetti base...) e non mi sembrano le piů
appropiate (le MFC) x questo genere di Apps.
Ad ogni modo  grazie  a tutti x l'aiuto!! (e per la pazienza con sto povero
neofita!!!)
Mau X

Per modificare l'aspetto di TUTTE le finestre occorre installare un System
Hook che intercetti tutti i messaggi di ridisegno dell'area Non Client della
Finestra (quindi si applica un filtro). Con tale tecnica ho visto un
programma che sfumava tutte le finstre di windows 95 (effetto poi presente
in windows98).

...

Ehm, scusa la mia ignoranza (sono veramente agli inizi della programmazione
Win32), ma cos'è un System Hook?
Sai dove posso reperire il sorgente del suddetto programma?
Thanks!
Mau X

 wrote in message 7rkupe$qoe$1...@nslave1.tin.it...

Questa la so . Uno hook è letteralmente un gancio che ti permette di
reindirizzare determinati eventi per poi filtrarli e gestirli con delle
funzioni scritte da te. Esistono diversi tipi di hook : hooks che
intercettano messaggi ( es. Spy++ )  , hooks per il debugging di sistema
 SoftIce utilizza uno di questi hook ) , hooks per monitorare i tasti
premuti da tastiera e mouse e altri .
La peculiarità di questi hook è di poter controllare eventi a livello di
sistema e non solo limitatamente al thread della tua applicazione
In questo modo potresti magari intercettare tutti i messaggi WM_PAINT e, non
so come , fare in modo che i programmi assumano una grafica da te stabilita.
Il problema è che hooks a livello di sistema rallentano un pò le prestazioni
, perchè , in pratica tutti i messaggi dovrebbero passare per una funzione
che funge da filtro . Prova per esempio a monitorare tutti i messaggi di
tutto il systema con Spy++, dopo un pò se non subito il sistema va a
rallentatore .
Comunque , un pò di documentazione si trova su MSDN . Se non ce l'hai prova
sul sito Microsoft . La guida però fa quasi pena.
Ciao

Ok, mettiamo il caso che io voglia modificare l'aspetto di tutti i
"bottoni"...(spero di non sparare una cazzata...gulp!), in modo che abbiano
l'aspetto definito da me (ad es. una bmp personalizzata... anche se mi pare
che questo si possa già fare in un altro modo...) o che magari emettano un
suono caratteristico...
...se facessi il SubClassing della Window Class "BUTTON"? funzionerebbe?
Grazie x le risposte e non fucilatemi!! non è facile raccapezzarsi con
Win...!!!
Mau X

L'hook è un meccanismo simile (concettualmente) al subclassing, soltanto che
i messaggi vengono "trattati" ancor prima di giungere all'applicazione.
L'hook permette di intercettare un evento indirizzato verso un'applicazione
e gestirlo come si vuole potendo anche non notificarlo all'applicazione
stessa.
Ci sono 12 tipi di hook ognuno dei quali si interssa soltanto di una parte
dei numerosi messaggi della piattaforma Win32 (in pratica fa da filtro)
Dai un'occhiata alle funzioni
FilterFunc ()
SetWindowHookEx ()
UnHookWindowEx ()
CallNextHookEx()
Inferno