Поделиться через


Подклассы и автоматический перевод сообщений

Подклассы — это метод, позволяющий приложению перехватывать и обрабатывать сообщения, отправленные или отправленные в определенное окно, прежде чем оконная процедура может обработать их. Операционная система автоматически преобразует сообщения в кодовую страницу 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 .

Дополнительные сведения о подклассах см. в разделе Процедуры окна.

Использование Юникода и наборов символов