Kontekst wejściowy
"Kontekst wejściowy" to wewnętrzna struktura utrzymywana przez program IMM. Zawiera on informacje o stanie IME i jest używany przez okna IME. Domyślnie system operacyjny tworzy i przypisuje kontekst wejściowy do każdego wątku. W wątku ten domyślny kontekst wejściowy jest zasobem udostępnionym i jest skojarzony z każdym nowo utworzonym oknem.
Aby pobrać lub ustawić informacje w edytorze IME, aplikacja obsługująca protokół IME musi najpierw pobrać uchwyt do kontekstu wejściowego skojarzonego z określonym oknem. Aplikacja pobiera dojście przy użyciu funkcji ImmGetContext. Może użyć pobranego uchwytu w kolejnych wywołaniach funkcji IMM, aby pobrać i ustawić wartości IME, takie jak styl okna kompozycji, styl kompozycji i położenie okna stanu. Po zakończeniu korzystania z kontekstu aplikacja musi zwolnić kontekst przy użyciu funkcji ImmReleaseContext.
Ponieważ domyślny kontekst wejściowy jest zasobem udostępnionym, wszelkie zmiany wprowadzone przez aplikację mają zastosowanie do wszystkich okien w wątku. Jednak aplikacja może zastąpić to domyślne zachowanie, tworząc własny kontekst wejściowy i kojarząc go z jednym lub większą częścią wątku. Zmiany wprowadzone w kontekście wejściowym specyficznym dla aplikacji dotyczą tylko okien skojarzonych z kontekstem.
Aplikacja może utworzyć kontekst wejściowy przy użyciu funkcji ImmCreateContext. Aby przypisać kontekst do okna, aplikacja wywołuje funkcję ImmAssociateContext. Ta funkcja zwraca uchwyt do wcześniej skojarzonego kontekstu wejściowego. Jeśli aplikacja nie skojarzyła jeszcze kontekstu wejściowego z oknem, zwracany uchwyt jest przeznaczony dla domyślnego kontekstu wejściowego. Zazwyczaj aplikacja zapisuje ten uchwyt, a później ponownie je skojarzy z oknem, gdy dostosowany kontekst wejściowy nie jest już potrzebny.
Po skojarzeniu kontekstu wejściowego z oknem system operacyjny automatycznie wybiera ten kontekst po aktywowaniu okna i odbiera fokus wejściowy. Styl i inne informacje w kontekście wejściowym mają wpływ na kolejne dane wejściowe klawiatury dla tego okna, określając sposób działania IME.
Przed zakończeniem działania aplikacja musi zniszczyć dowolny dostosowany kontekst wejściowy. Najpierw aplikacja usuwa kontekst wejściowy ze wszystkich skojarzeń wykonanych z oknami w wątku przy użyciu funkcji ImmAssociateContext. Następnie wywołuje funkcję ImmDestroyContext.
Tematy pokrewne