Newsgroup: it.comp.programmare.win32
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
---------------------------------------------------

Prima risposta: per disegnare una linea di colore diverso da quello di
default (nero) devi creare un oggetto CPen, impostargli poi gli attributi e
selezionarlo nel DC o meglio CDC. A quel punto usi le funzioni come vuoi:
//codice di esempio;
/*dc è un oggetto di tipo CDC già definito.
   pt è una struttura di tipo POINT già definita
*/
CPen pn( PS_SOLID, 1, RGB(/*RED*/, /*GREEN*/, /*BLUE*/));
dc.SelectObject(&pn);
dc.LineTo(pt);

Seconda risposta:
HCURSOR SetCursor(HCURSOR hCursor);



grazie per entrambe le risposte.


 wrote:

Ho provato a usarla ma non mi funziona :
HCURSOR SetCursor(IDC_CURSORE); //IDC_CURSORE è il nome del cursore
//che ho inserito nel resource file.
Ho anche provato a lavorarci un po' sù ma ottenendo risulatati
negativi. Il rpoblema è che mi dà errore IDC_CURSORE 


negativi. Il rpoblema è che mi dà errore IDC_CURSORE 
L'argomento deve essere un HCURSOR non l'id della risorsa, devi prima
caricarla con LoadCursor.
Ciao
Marco Barisione (ICQ 84277092)

 //che ho inserito nel resource file.
SetCursor riceve un parametro di tipo HCURSOR (che è un handle a un cursore).
IDC_CURSORE è solo l'identificatore della risorsa.
il cursore lo devi caricare con LoadCurosr in questo modo:
HCURSOR hCursor = LoadCursor(hInstance, MAKEINTRESOURCE(IDC_CURSORE));
e poi:
SetCursor( hCursor);
ciao
xaero

Speravo che lo capisse da solo che un conto è una variabile di tipo HCURSOR
e un altro è una di tipo UINT!! Prossima volta inseriro tutto il codice ab
ovo!

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));
}
( per risolvere l'identificatore IDC_MIOMOUSE devi includere il file
"resource.h" )
Nel momento in cui vorrai usare il tuo cursore dovrai:
    m_PrecedenteCurs = SetCursor ( m_MioCursor );
Per riattivare quello precedente
    SetCursor ( m_PrecedenteCursor );
Spero che le mie spiegazioni siano state abbastanza chiare,
Dario.
-- 
Posted from 
it.bnsmc.com
 [207.242.11.38] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Davvero, credo che scoprire l'acqua calda sia stato più facile.