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.
Tematy pokrewne