Desidero scrivere una funzione che deve impostare l'area di ritaglio su una CC, ma ripristinare una regione di ritaglio esistente sul controller di dominio quando è terminata.uso corretto di GetClipRgn?
Quindi ho trovato GetClipRgn
che sembra esattamente quello che voglio ma sembra confusionario. Non sono riuscito a trovare alcun esempio di utilizzo e Petzold non aveva nulla da offrire.
Quello che mi è venuta è stato questo:
void DrawStuff(HDC hDC)
{
HRGN restoreRegion = CreateRectRgn(0, 0, 0, 0);
if (GetClipRgn(hDC, restoreRegion) != 1)
{
DeleteObject(restoreRegion);
restoreRegion = NULL;
}
//
// Set new region, do drawing
//
SelectClipRgn(hDC, restoreRegion);
if (restoreRegion != NULL)
{
DeleteObject(restoreRegion);
}
}
Sembra proprio strano che ho bisogno di creare una regione al fine di ottenere l'area corrente.
È corretto l'uso?
C'è un modo migliore per ottenere lo stesso effetto?
Avete veramente bisogno di una "piccola" regione (generalmente chiamata "Regione di interesse - ROI) che è una sotto-parte dell'area cliente completa?" GetClientRect() vi darà l'intera area disegnabile. ottenere una parte di quella zona – JustBoo
Sì, è una funzione strana.Il tuo codice sembra ok –
@Hans - grazie Mi sento meglio ora ... Probabilmente la funzione win32 più strana che abbia mai usato ... – markh44