Per disegnare con le primitive grafiche dell’sdk di Windows in Visual C/C++ occore gestire il tutto con l’intercettazione del messaggio WM_PAINT che viene lanciato ogni volta che occorre aggiornare il disegno della finestra ( UpdateWindow ). L’inizio del disegno vero e proprio avviene tra la funzione BeginPaint, che restituisce l’handle del DC ( Device Context ) della finestra, ed EndPaint. Vediamo come implementare il tutto con il disegno di un’ellisse nell’applicazione utilizzata nella scorsa lezione.
... LONG FAR PASCAL WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); Ellipse(hdc, 200, 200, 500, 400); TextOut(hdc, 280, 245, "<- Ellisse", 10); ValidateRect(hWnd, NULL); EndPaint(hWnd, &ps); break; default: return DefWindowProc(hWnd, msg, wParam, lParam); } return 0; } ...
Osserviamo le funzioni all’interno del messaggio WM_PAINT e l’inizio del disegno con BeginPaint che, come dicevamo prima, ritorna l’handle del DC della client area della finestra. Una volta ottenuto l’handle al dispositivo possiamo disegnarci sopra con le funzioni grafiche dell’sdk, che vi invito a studiare. Ho utilizzato Ellipse, una funzione che vuole l’handle al device context ed il rettangolo in cui inscrivere l’ellisse, se vi venisse troppo grande potete diminuire i valori. Da notare che queste primitive grafiche vogliono sempre l’handle su cui scrivere, il device context è la lavagna su cui disegnare e le dimensioni, che si esprimono con gli assi cartesiani, il solito ascissa ed ordinata; in particolare nel nostro esempio sono left, top, right e bottom. Incluso nell’ellisse ho inserito anche del testo e poi ho chiuso il disegno. Una volta fatto tutto occorre salvare il device con ValidateRect e dargli NULL per validare tutta la client area della finestra.
<< Lezione Precedente – Inizio Corso – Lezione Successiva >>
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→