Newsgroup: it.comp.programmare.win32
Titolo: [VC++, MFC] Cambiare colore del testo in una casella di testo statico

Salve a tutti,
mi sto dilettando nella scrittura di un piccolo programmino per Windows.
Ho pero' un problema: ho una finestra con una casella di testo statico
(classe CStatic) che fa da titolo. Non riesco a cambiare il colore del testo
contenuta in tale casella. Riesco a ridimensionare il testo ed a impostare
il font (usando funzione membro SetFont), ma non capisco quale funzione
usare per un semplice cambio di colore del testo contenuto. Che funzione
devo usare??? Qualcuno mi da una dritta? Grazie in anticipo.
CIAO!!!

 Ho pero' un problema
Classe CLabel su 
codeguru.com
 
-- 
Luc

 devo usare??? Qualcuno mi da una dritta? Grazie in anticipo.
SetTextColor() perň devi specializzare la tua OnCtlColor(). Cerca un po', il
meccanismo č piů facile a farsi che a dirsi.
Ciao!!

 Ciao!!
Ho cercato, ma non riesco a capire come funziona il tutto. Io ho i seguenti
elementi:
Una casella di testo statico, con ID = "IDC_STITOLO" e come caption,
mettiamo "TITOLO".
m_ctrAppTitle = variabile di controllo riferita alla suddetta casello di
testo statico. Tale variabile č membro della classe di finestra di
visualizzazione CMiaAppView, che deriva da CFormView.
Ora, per settare il font ho agito in questo modo: ho innanzitutto creato una
variabile membro della classe CFormView di tipo CFont, sono andato nella
funzione CMiaAppView::OnInitialUpdate() e tramite la funzione membro
"CreateFont" della classe CFont appena creata ho impostato un font Tahoma
25. L'ho poi impostato nella casella di testo statico con la chiamata della
funzione membro "SetFont" da parte di m_ctrAppTitle. Fin qui tutto ok, l'app
visualizza il titolo correttamente, con il font ingrandito che mi interessa.
Pero' ora vorrei cambiare il colore del testo visualizzato e non capisco
come fare con gli elementi che ho a disposizione, senza ricorrere a forma
alternative (tipo visualizzare il titolo dell'App con funzioni come TextOut
e simili). Inizializzare un oggetto CPen non serve a un tubo (credo) perchč
non va ad infuenzare la caption della casella di testo. Ho anche cercato di
usare la funzione di tipo OnCtlColor ma anche qui non comprendo quali
parametri devo passare. Devo fare l'overriding della funzione OnCtlColor()
di CFormView? Riguardo ai parametri che le devo passare, avrei bisogno di
una mano. L'help mi dice che la funzione OnCtlColor ha un prototipo del
tipo:
afx_msg HBRUSH OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor);
Il primo parametro, se non ho capito male, č un puntatore al contesto di
dispositivo corrente (si riferisce a CMyAppView?).
Il secondo parametro č un puntatore alla finestra del controllo che richiede
il colore. Corretto?
Il terzo parametro specifica il tipo di controllo e nel mio caso, dovrebbe
essere CTLCOLOR_STATIC
Domande:
Che tipo di dato č HBRUSH?
Come la chiamo sta benedetta funzione e dove?
Grazie e scusa per il tempo che ti faccio perdere, ma vorrei capire...
CIAO!!!

 ha scritto nel messaggio
news:MPG.19f9b362d...@tornado.fastwebnet.it...

Ciao, grazie per la risposta e per la dritta. Ho scaricato il sorgente,
pero' vorrei prima capire come funzionano i meccanismi senza ricorrere a
comode "scorciatoie". Se non riesco a cambiare il colore del testo a
"manina" senza impazzire mi butto sulla CLabel.
CIAO!!!

 "manina" senza impazzire mi butto sulla CLabel
Non ho detto per forza di usarla, ma di capirne il codice ;) 
-- 
Luc

 semplice cambio di colore del testo contenuto
Windows ha una funzione SetTextColor, e suppongo che MFC abbia qualcosa 
di simile
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.4. C, C++ and ASM developers
                               and beta testers are welcome!

di simile
si c'e', ma e' una funzione di un Context Device.
anche io ho provato a cambiare colore ad un testo CStatic ma nn ci
sono riuscito.
Credo si faccia prima a disegnare il testo con il context device con
le funzioni TextOut(..,..,..) e SetTextColor(...)
ciao
Chucky.

 le funzioni TextOut(..,..,..) e SetTextColor(...)
Si', con quello riesco, non è difficile e, sicuramente sarà possibile anche
con una casella di testo statico, ma io non ci arrivo. Ieri ho riprovato, ma
nada, quel fo***to testo resta nero come la pece, e alla fine ho rinunciato.
Ho anche guardato il sorgente della classe CLabel, ma non ho cavato un ragno
dal buco. Oltretutto non capisco come faccia a chiamare la funzione
SetTextColor su CLabel, essendo CLabel classe derivata di CStatic...
Vabbè, torno a studiare, nel frattempo se a qualcuno avanzasse un po' di
tempo e postasse la soluzione gli sarei grato.
Un saluto

"Chucky" <chucky...@GRAZIEkatamail.com> ha scritto nel messaggio
news:3172pvksnnsq2rrsf...@4ax.com...

Uhm, sto sperimentando sulla mia pelle che non serve a un tubo studiare e
perdere tempo a cercare se non hai i testi giusti. Sto guardando su
"Programming Windows using MFC 2nd Ed." (a detta di molti la bibbia delle
MFC, testo complesso ma ottimo) e sembra tutto molto piu' chiaro.
Pirla io a non leggerlo prima.
Se riesco a far funzionare il tutto e ti interessa ancora la soluzione te la
mando.
CIAO!!!

 mando.
E' talmente una vaccata che ci sono gia' riuscito. E pensare che ho ci ho
perso delle ore ieri.
/me prende una pietra grande e pesante e se la scaglia violentemente sulle
palle.

mando.
ben accettata se la spedisci :)
ciao
Chucky.