Unterklassen und automatische Nachrichtenübersetzung
Unterklassen sind eine Technik, die es einer Anwendung ermöglicht, Nachrichten abzufangen und zu verarbeiten, die an ein bestimmtes Fenster gesendet oder an ein bestimmtes Fenster gesendet werden, bevor eine Fensterprozedur diese verarbeiten kann. Das Betriebssystem übersetzt Nachrichten automatisch in Windows (ANSI)-Codepage oder Unicode-Formular, abhängig von der Form der Funktion, die die Fensterprozedur untergliedert hat.
Der folgende Aufruf der SetWindowLongA-Funktion untergliedert die aktuelle Fensterprozedur, die dem durch den hWnd-Parameter identifizierten Fenster zugeordnet ist. Alternativ kann eine Anwendung SetWindowLongPtrAverwenden. Die neue Fensterprozedur NewWndProc empfängt Nachrichten mit Text im Windows Codepageformat.
OldWndProc = (WNDPROC) SetWindowLongA(hWnd,
GWL_WNDPROC, (LONG)NewWndProc);
Wenn NewWndProc die Verarbeitung einer Nachricht abgeschlossen hat, wird die CallWindowProc-Funktion wie folgt verwendet, um die Nachricht an OldWndProc zu übergeben.
CallWindowProc(OldWndProc, hWnd, uMessage, wParam, lParam);
Wenn OldWndProc mit einem Unicode-Klassenstil erstellt wurde, werden Nachrichten aus dem von NewWndProc empfangenen Windows Codepageformular in Unicode übersetzt.
Auf ähnliche Weise wird bei einem Aufruf der Funktion SetWindowLongW oder SetWindowLongPtrW die aktuelle Fensterprozedur mit einer Fensterprozedur klassifiziert, die Unicode-Textnachrichten erwartet. Die Nachrichtenübersetzung wird bei Bedarf während der Verarbeitung der CallWindowProc-Funktion ausgeführt.
Weitere Informationen zum Unterklassening finden Sie unter Window Procedures.