Wyświetlanie kontekstów urządzenia
Aplikacja uzyskuje kontroler domeny wyświetlania, wywołując funkcję BeginPaint, GetDClub funkcji GetDCEx i identyfikując okno, w którym zostaną wyświetlone odpowiednie dane wyjściowe. Zazwyczaj aplikacja uzyskuje kontroler domeny wyświetlania tylko wtedy, gdy musi rysować w obszarze klienta. Można jednak uzyskać kontekst urządzenia okna przez wywołanie funkcji GetWindowDC. Po zakończeniu rysowania aplikacji musi zwolnić kontroler domeny, wywołując funkcję EndPaint lub ReleaseDC.
Istnieją pięć typów kontrolerów domeny na potrzeby wyświetlania wideo:
- Klasa
- Wspólny
- Prywatny
- Okno
- Rodzic
Konteksty urządzeń klasy
Konteksty urządzeń klasy są obsługiwane ściśle w celu zachowania zgodności z 16-bitowymi wersjami systemu Windows. Podczas pisania aplikacji unikaj korzystania z kontekstu urządzenia klasy; Zamiast tego należy użyć kontekstu urządzenia prywatnego.
Typowe konteksty urządzeń
typowe konteksty urządzeń są wyświetlane kontrolery domeny przechowywane w specjalnej pamięci podręcznej przez system. Typowe konteksty urządzeń są używane w aplikacjach, które wykonują rzadko wykonywane operacje rysowania. Zanim system zwróci dojście kontrolera domeny, inicjuje wspólny kontekst urządzenia z domyślnymi obiektami, atrybutami i trybami. Wszystkie operacje rysowania wykonywane przez aplikację używają tych wartości domyślnych, chyba że jest wywoływana jedna z funkcji GDI, aby wybrać nowy obiekt, zmienić atrybuty istniejącego obiektu lub wybrać nowy tryb.
Ponieważ istnieje tylko ograniczona liczba typowych kontekstów urządzeń, aplikacja powinna je zwolnić po zakończeniu rysowania. Gdy aplikacja zwalnia wspólny kontekst urządzenia, wszelkie zmiany w danych domyślnych zostaną utracone.
Konteksty urządzeń prywatnych
konteksty urządzeń prywatnych są wyświetlane kontrolery domeny, które w przeciwieństwie do typowych kontekstów urządzeń zachowują wszelkie zmiany w danych domyślnych nawet po ich opublikowaniu przez aplikację. Konteksty urządzeń prywatnych są używane w aplikacjach, które wykonują wiele operacji rysowania, takich jak aplikacje projektowe wspomagane komputerowo (CAD), aplikacje do publikowania pulpitu, aplikacje do rysowania i malowania itd. Konteksty urządzeń prywatnych nie są częścią pamięci podręcznej systemu i dlatego nie muszą być zwalniane po użyciu. System automatycznie usuwa kontekst urządzenia prywatnego po usunięciu ostatniego okna tej klasy.
Aplikacja tworzy kontekst urządzenia prywatnego, najpierw określając styl klasy okien CS_OWNDC podczas inicjowania stylu składowej struktury WNDCLASS i wywołuje funkcję RegisterClass. (Aby uzyskać więcej informacji na temat klas okien, zobacz Klasy okien.)
Po utworzeniu okna za pomocą stylu CS_OWNDC aplikacja może wywołać funkcję GetDC, GetDCExlub BeginPaint funkcji raz, aby uzyskać dojście identyfikujące kontekst urządzenia prywatnego. Aplikacja może nadal używać tego dojścia (i skojarzonego kontrolera domeny), dopóki nie usunie okna utworzonego przy użyciu tej klasy. Wszelkie zmiany w obiektach graficznych i ich atrybutach lub trybach graficznych są zachowywane przez system do momentu usunięcia okna.
Konteksty urządzenia okna
Kontekst urządzenia okna umożliwia aplikacji rysowanie w dowolnym miejscu w oknie, w tym w obszarze innym niż klient. Konteksty urządzeń okien są zwykle używane przez aplikacje, które przetwarzają komunikaty WM_NCPAINT i WM_NCACTIVATE dla systemu Windows z niestandardowymi obszarami nieklienckimi. Korzystanie z kontekstu urządzenia okna nie jest zalecane w żadnym innym celu. Aby uzyskać więcej informacji; zobacz GetWindowDC.
Konteksty urządzeń nadrzędnych
Kontekst urządzenia nadrzędnego umożliwia aplikacji zminimalizowanie czasu niezbędnego do skonfigurowania regionu wycinków dla okna. Aplikacja zazwyczaj używa kontekstów urządzeń nadrzędnych, aby przyspieszyć rysowanie okien sterowania bez konieczności używania kontekstu urządzenia prywatnego lub klasowego. Na przykład system używa kontekstów urządzenia nadrzędnego do obsługi przycisków i edycji kontrolek. Konteksty urządzeń nadrzędnych są przeznaczone tylko do użytku z oknami podrzędnymi, nigdy w oknach najwyższego poziomu lub wyskakujących okienek. Aby uzyskać więcej informacji; zobacz konteksty urządzenia wyświetlania nadrzędnego.