Unterklassen und automatische Nachrichtenübersetzung
Die Unterklassifizierung ist eine Technik, mit der eine Anwendung Nachrichten abfangen und verarbeiten kann, die an ein bestimmtes Fenster gesendet oder gesendet werden, bevor eine Fensterprozedur die Möglichkeit hat, sie zu verarbeiten. Das Betriebssystem übersetzt Nachrichten automatisch in eine Windows-Codepage (ANSI) oder unicode-Form , abhängig von der Form der Funktion, die die Fensterprozedur unterklassiert hat.
Der folgende Aufruf der Funktion SetWindowLongA unterklassiert die aktuelle Fensterprozedur, die dem durch den hWnd-Parameter identifizierten Fenster zugeordnet ist. Alternativ kann eine Anwendung SetWindowLongPtrA verwenden. 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 dem Klassenstil UNICODE erstellt wurde, werden Nachrichten aus dem Windows-Codepageformular, das von NewWndProc empfangen wurde, in Unicode übersetzt.
In ähnlicher Weise wird die aktuelle Fensterprozedur durch einen Aufruf der Unterklassen SetWindowLongW oder SetWindowLongPtrW mit einer Fensterprozedur ausgeführt, die Unicode-Textnachrichten erwartet. Die Nachrichtenübersetzung erfolgt bei Bedarf während der Verarbeitung der CallWindowProc-Funktion .
Weitere Informationen zur Unterklassen finden Sie unter Fensterprozeduren.
Zugehörige Themen