Подклассы и автоматический перевод сообщений
Подклассы — это метод, позволяющий приложению перехватывать и обрабатывать сообщения, отправленные или отправленные в определенное окно, прежде чем оконная процедура может обработать их. Операционная система автоматически преобразует сообщения в кодовую страницу Windows (ANSI) или форму Юникода в зависимости от формы функции, которая подклассовала процедуру окна.
Следующий вызов функции SetWindowLongA создает подклассы текущей процедуры окна, связанной с окном, определенным параметром hWnd . Кроме того, приложение может использовать SetWindowLongPtrA. Процедура нового окна NewWndProc будет получать сообщения с текстом в формате кодовой страницы Windows.
OldWndProc = (WNDPROC) SetWindowLongA(hWnd,
GWL_WNDPROC, (LONG)NewWndProc);
Когда NewWndProc завершает обработку сообщения, он использует функцию CallWindowProc следующим образом для передачи сообщения в OldWndProc.
CallWindowProc(OldWndProc, hWnd, uMessage, wParam, lParam);
Если OldWndProc был создан в стиле класса ЮНИКОД, сообщения преобразуются из формы кодовой страницы Windows, полученной NewWndProc , в Юникод.
Аналогичным образом вызов функции SetWindowLongW или SetWindowLongPtrW создает подкласс текущей процедуры окна с процедурой окна, которая ожидает текстовые сообщения в Юникоде. При необходимости преобразование сообщений выполняется во время обработки функции CallWindowProc .
Дополнительные сведения о подклассах см. в разделе Процедуры окна.
Связанные темы