Newsgroup: it.comp.lang.c++
Titolo: COLORARE LINEE e CAMBIARE PUNTATORE MOUSE [MFC]

Come posso fare per colorare una linea creata con le funzioni 
MoveTo e LineTo delle MFC? 
Un'altra domanda: come faccio a cambiare il puntatore del mouse
durante l'esecuzione del programma?
---------------------------------------------------
messaggio di: credici
---------------------------------------------------

Dario.
Impara a postare ASCII e IT.
Luc.





E` molto semplice !


Quando lavori con Windows devi immaginare un po` di 
essere come un pittore che ha davanti a se la tavolozza dei colori ( vuota 
), e deve farsi tutto da se. Quindi dovra` scegliere il tipo di pennello, 
il colore etc etc. Windows non usa i vecchi pennelli , ma le penne.


 


Premetto che per maggiorni chiarimenti e` 
importante fare riferimento sempre all'help di MFC.


1ma di tutto devi dichiararti nella tua classe 
finestra ( nel file .h ) una variabile membro di tipo 
CPen, 

cosi`:


 


    
private:


        
CPen    m_MyPen;


 


Poi nel costruttore della classe ( .cpp ) , crei la 
penna secondo le tue necessita` ( supponiamo che tu ne voglia una che scriva una 
linea spessa e di colore blu)


 


    


    
m_MyPen.CreatePen ( 

PS_SOLID
 ,3,RGB(0,0,255) );


 


E` molto importante per selezionare la penna da 
usare chiamare la funzione 
SelectObject
 cosi`


 


    
SelectObject ( &m_MyPen 
);


 


Da questo momento tutte le funzioni di disegno 
utilizzeranno questa Penna.


La tecnica e` di crearsi prima la tavolozza degli 
oggetti e poi al momento dell'uso 
selezionarli ( SelectObject 
)
.


Molto Importante:
 Nel distruttore 
della tua classe finestra dovrai chiamare la 
DeleteObject(), 

cosi`:


 


    

m_MyPen.DeleteObject();


 


 


Come cambiare puntatore del mouse in 
una finestra


 


1ma di tuttto devi crearti una risorsa grafica di 
tipo Cursore e te la disegni tu a proprio piacimento(Caso A), a meno che tu non 
voglia usare un cursore di quelli gia` preesistenti( caso B).


 


Caso A:


Menu Insert/Resource... sleziona Cursor e poi il 
bottone New.


Ti editi la risorsa nuova e te la salvi facendo 
attenzione di battezzarla con un nome che poi ricorderai ( es. IDC_MIOMOUSE 
).


 


Caso B:


Esistono degli identificatori predefiniti che ti 
consentono di switchare i vari puntatori mouse preesistenti di Windows ( ad es. 
IDC_ARROW,IDC_WAIT etc etc vedi help cercando 
LoadCursor
 
).


 


come lavorare:


 


Innanzitutto devi dichiarare nella tua classe ( .h 
) un membro HCURSOR ed uno che conterra` il cursore precedente, 
cosi`:


 


    
HCURSOR    
m_MioCursor;


    HCURSOR    
m_PrecedenteCurs;


 


Devi fare l'overloading del metodo 

OnCreate 
nella tua classe finestra all'interno del quale 
aggiungerai:


 


void CMyWindow::OnCreate(...)


{


    m_MioCursor = LoadCursor ( 

AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDC_MIOMOUSE));


}


 


Nel momento in cui vorrai usare il tuo cursore 
dovrai:


 


    
m_PrecedenteCurs = SetCursor 
( m_MioCursor );


 


Per riattivare quello precedente


    


    SetCursor ( m_PrecedenteCursor 
);






Che parlando come magno che vorrdi` 
?



Vuol dire che sui newsgroup si scrive con testo normale e non in HTML, e
che i problemi legati ad una specifica implementazione, ovvero ad
esempio Windows e MFC, non sono argomento di questo newsgroup. Vi invito
a girare la discussione su it.comp.programmare.win32
Ciao,
Nicola