Udostępnij za pośrednictwem


Podklasy i automatyczne tłumaczenie komunikatów

Podklasowanie to technika, która umożliwia aplikacji przechwytywanie i przetwarzanie komunikatów wysyłanych lub publikowanych w określonym oknie, zanim procedura okna będzie mogła je przetworzyć. System operacyjny automatycznie tłumaczy komunikaty na stronę kodową Windows (ANSI) lub formę Unicode , w zależności od postaci funkcji, która zdefiniowała podklasę dla procedury okna.

Następujące wywołanie funkcji SetWindowLongA zastępuje bieżącą procedurę okna skojarzoną z oknem zidentyfikowanym przez parametr hWnd. Alternatywnie aplikacja może używać SetWindowLongPtrA. Nowa procedura okna NewWndProc, będzie otrzymywać komunikaty z tekstem w formacie strony kodowej systemu Windows.

OldWndProc = (WNDPROC) SetWindowLongA(hWnd,
             GWL_WNDPROC, (LONG)NewWndProc); 

Po zakończeniu przetwarzania komunikatu NewWndProc używa funkcji CallWindowProc w następujący sposób, aby przekazać komunikat do OldWndProc.

CallWindowProc(OldWndProc, hWnd, uMessage, wParam, lParam);

Jeśli OldWndProc został utworzony przy użyciu stylu klasy UNICODE, komunikaty są tłumaczone z formularza strony kodowej systemu Windows otrzymanego przez NewWndProc do Unicode.

Podobnie, wywołanie funkcji SetWindowLongW lub SetWindowLongPtrW powoduje zmianę bieżącej procedury okna na procedurę, która oczekuje komunikatów tekstowych Unicode. W razie potrzeby tłumaczenie komunikatów jest wykonywane podczas przetwarzania funkcji CallWindowProc.

Aby uzyskać więcej informacji na temat subklasowania, odwołaj się do Window Procedures.

Unicode i zestawy znaków