Как сделать WndPro c встроенным? - PullRequest
0 голосов
/ 27 января 2020

Возможно ли, и если да, то как сделать WndPro c встроенным?

То есть я бы хотел обработать Windows сообщений WM _... в WinMain, чтобы казалось бы избежать ненужные вызовы функций.

Спасибо.

1 Ответ

1 голос
/ 27 января 2020

Вы не можете встроить оконную процедуру. Это сделано специально.

Вы можете легко увидеть архитектурное ограничение при регистрации класса окна. Это делается путем вызова RegisterClassExW , передавая структуру WNDCLASSEXW . Эта структура требует действительного lpfnWndProc. Вы не можете взять адрес встроенной функции.

Есть и другие аспекты, которые требуют, чтобы оконная процедура была реальной функцией. Например, адрес хранимой процедуры окна служит точкой настройки и позволяет элементам управления субклассами , например, для настройки поведения стандартного элемента управления.

Вы ничего не можете сделать, чтобы избежать вызова функции , Если вы хотите ограничить область видимости переменных, вы можете присвоить результат лямбда-выражения члену lpfnWndProc. Visual Studio обеспечивает синтез правильной сигнатуры функции.

...