Newsgroup: it.comp.programmare.win32
Titolo: DrawText

Ehi!
Ho iniziato proprio ieri a codare per win, quindi scusate se la mia 
domanda č una stra-FAQ.
Questo č il codice che non va:
        CPaintDC dc(this);
        CRect win;
        CBrush pennello;
        pennello.CreateSolidBrush(RGB(0,0,128));
        GetClientRect(&win);
        dc.FillRect(&win, &pennello);
         dc.DrawText(frasi[0], -1, &win,
                 DT_CENTER|DT_VCENTER|DT_SINGLELINE);
Il problema č che il testo appare scritto in nero su una striscia 
bianca in mezzo allo sfondo blu, mentre vorrei il solotesto scritto 
sullo sfondo. Suggerimenti?
Grazie.
-- 
Per l'e-mail rimuovere la frase in maiuscolo e gli underscore.

 Grazie.
ciao

 non so il corrispettivo mfc,ma l'api č SetBkMode
CDC::SetBkMode :)
nel tuo caso:
dc.SetBkMode(TRANSPARENT);
ciao, assa.
--
gosclient: 
http://members.xoom.it/gosclient/
join the mailing list: 
http://groups.yahoo.com/group/gosclient/join
icq: #215876894

 non so il corrispettivo mfc,ma l'api è SetBkMode
Sei un grande!!! Il wrapper MFC è CDC::SetBkMode().
Adesso avrei necessità di stampare degli archi, a simulare l'onde del 
mare; ho provato con ArcTo, ma di semiellissi nemmeno l'ombra. Tra 
l'altro, come si può impostare il colore dgli archi? ArcTo e Arc 
prendono solo coordinate, nessun CBrush*.
Suggerimenti???
Grazie e ciao


 Grazie e ciao
ciao

 Suggerimenti???
per stampare l'arco direi che potresti usare la funzione Arc (o CDC::Arc,
che poi sono la stessa cosa). non la conosco bene, guarda su MSDN le
specifiche.
per quanto riguarda i colori, devi sapere che sono dipendenti dal Device
Context su cui stai stampando. Infatti Windows per disegnare le linee usa
una penna, che deve essere associata al DC che usi. Se il tuo disegno deve
essere fatto tutto nello stesso colore puoi selezionare una sola penna
all'inizio e deselezionarla alla fine, altrimenti dovrai cambiare penna per
ogni colore.
Per creare una penna puoi usare la CreatePen o CreatePenIndirect. Queste
restituiscono un handle di tipo HPEN che può essere selezionato nel tuo DC
utilizzando SelectObject. SelectObject a sua volta restituisce l'handle alla
penna precedentemente selezionata nel DC, che e' buona norma salvarsi e
ripristinare alla fine delle operazioni (sempre utilizzando SelectObject).
Quando hai finito di usare una penna e questa non e' selezionata in nessun
DC devi distruggerla usando DestroyObject.
parlando in codice (no mfc):
//crea una penna di un pixel, nera
HPEN hPen = CreatePen(PS_SOLID, 1, 0);
//seleziona la penna nel DC (supponendo che sia hDC)
HPEN hOldPen = (HPEN)SelectObject(hDC, hPen);
//varie operazioni che disegnano con quella penna
bla bla bla...
//al termine riseleziona nel DC la penna originale
SelectObject(hDC, hOldPen);
//distrugge la penna
DestroyObject(hPen);
(mfc):
CPen pen(PS_SOLID, 1, 0);
//dc è un oggetto di tipo CDC
CPen* pOldPen = dc.SelectObject(&pen);
//operazioni su dc che usano la penna selezionata
bla bla bla...
dc.SelectObject(pOldPen);
//qui il destroy non e' necessario, il distruttore della classe CPen pensa a
chiamarlo per te alla fine della routine
questo a grandi linee e' il procedimento. ti consiglio di fare un bel giro
in msdn, guardati la classe CPen e tutte le varie funzioni che ti ho citato.


 del mare; ho provato con ArcTo, ma di semiellissi nemmeno l'ombra
le primitive per gli archi della GDI di Windows disegnano delle Bezier. 
Io non me ne intendo, e non so dirti se una semiellisse potrebbe essere 
disegnata con curve Bezier e come
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.2. C, C++ and ASM developers
                               and beta testers are welcome!

:
[cut]
Complimenti per l'esaustività!
Scusate se vario così tanto dall'argomento del primo post, ma avrei 
bisogno di sapere quale macro ON_WM o quali parametri devo dare alla 
ON_COMMAND per rendere sensibile al click del mouse tutta l'area 
client della finestra, indistintamente. E` possibile?
Grazie mille!


 potrebbe essere disegnata con curve Bezier e come
Mah, con Arc() ha funzionato, anche se ho penato un po' a trovare i 
giusti parametri.
Ciao


 client della finestra, indistintamente. E` possibile?
Presumo che ti interessi sapere ciň nel caso in cui la tua finestra sia
attiva o abbia l'input focus. Ci sono 21 messaggi per il mouse, ma solo 10
mi pare per l'area client.
Se il mouse viene spostato sulla finestra, la window procedure riceve il
messaggio WM_MOUSEMOVE. Per quanto riguarda i click non hai detto che tipo
di click cmq:
Se ti interessa quando viene premuto:
sinistro WM_LBUTTONDOWN
centrale WM_MBUTTONDOWN
destro WM_RBUTTONDOWN
se ti interessa quando viene rilasciato:
sinistro WM_LBUTTONUP
centrale WM_MBUTTONUP
destro WM_RBUTTONUP
hai parlato al singolare quindi non credo che ti interessino i doppi click.
Per tutte le altre costanti del caso, quindi anche i parametri passati alla
window procedure ti consiglio di andare a guardare sulle msdn seguendo i
messaggi che ti ho elencato prima, sicuramente saranno piů esaustive e
corrette delle mie. Spero di non aver sbagliato a scrivere qualcosa e di non
aver detto stupidate e che fosse quello che cercavi.
Luca

 hai detto che tipo di click cmq:
[cut]
Grazie; scusa se rispondo tardi, ma non ho potuto connettermi per 
quasi un mese.
Saluti
