Насколько я знаю - нет.
Каждое оконное сообщение - это редкая и уникальная вещь, которая может отличаться во многих отношениях. Ожидается, что некоторые сообщения будут опубликованы, другие отправлены.
Некоторые сообщения являются уведомлениями для окна пользователя proc, другие являются командами для обработчика (ов) DefXXXWindowProc - DefWindowProc, DefDlgProc, DefMDIChildProc и т. Д.
Некоторые обрабатываются одинаково в диалоговых и оконных процессах, некоторые должны обрабатываться по-разному.
WM_SETTEXT и WM_SETREDRAW фактически являются командами, которые DefWindowProc использует для изменения внутренних структур данных в структуре WND.
WM_SIZE - это просто уведомление - отправленное BY DefWindowProc в собственное окно - в ответ на WM_WINDOWPOSCHANGED.
Сообщения WM_MOUSExxx НЕОБХОДИМО публиковать, никогда не отправлять, поскольку окна часто входят в модальные состояния, когда сообщения читаются с помощью GetMessage / PeekMessage и обрабатываются напрямую, а НЕ публикуются.
Многие сообщения выглядят как уведомления, но ДОЛЖНЫ всегда передаваться в DefWindowProc, потому что они "тайно" используются для реализации оконного менеджера. (WM_ACTIVATE и друзья).
Большинство сообщений можно обработать в диалоговом процессе, возвращая FALSE (или ИСТИНА), некоторые с существенными результатами должны использовать SetDlgResult, другие автоматически обрабатываются (WM_CTLCOLOR *), поскольку диалоговое окно proc знает , ненулевой результат от DialogProc соответствует LRESULT для возврата.
Некоторые (WM_SYSCOMMAND) на самом деле вообще не являются сообщениями в окно, а просто обрабатываются DefWindowProc для выполнения задач типа менеджера окон (мозаика рабочего стола и т. Д.)
В официальной документации нет реальной попытки классифицировать эти различия.
Чтобы конкретно решить проблему WM_SET/GETFONT
, WM_SETFONT
, хотя и определенное сообщение, не обрабатывается DefwindowProc и, следовательно, не обрабатывается классами окна, которые явно его не поддерживают. Элементы управления (EDIT, STATIC и т. Д.) И диалоги поддерживают WM_SETFONT
и WM_GETFONT
. Для поддержки этого в зарегистрированном классе приложения потребуется предоставить фактический пользовательский WindowProc и обработать сообщение там.