Оконная процедура является функцией, которая принимает и обрабатывает все сообщения, отправленные окну. Каждый класс окна имеет оконную процедуру, и каждое окно, созданное с этим классом, чтобы отвечать на сообщения, использует эту же самую оконную процедуру.
Система отправляет сообщение оконной процедуре, пересылая данные сообщения как параметры процедуры. Затем оконная процедура исполняет соответствующее действие с сообщением; она проверяет код сообщения и, при обработке сообщения, использует информацию, заданную его параметрами.
Оконная процедура обычно не игнорирует сообщение. Если она не обрабатывает сообщение, то должна отправить сообщение обратно системе для обработки по умолчанию. Оконная процедура делает это путем вызова функция DefWindowProc, которая исполняет заданное по умолчанию действие и возвращает какое-то значение, как результат обработки сообщения. Оконная процедура должна тогда возвратить это значение как свой собственный результат обработки сообщения. Большинство оконных процедур обрабатывает только несколько сообщений и передает остальные в систему путем вызова DefWindowProc.
Поскольку оконная процедура совместно используется всеми окнами, принадлежащими к одному и тому же классу, она может обрабатывать сообщения для нескольких различных окон. Чтобы идентифицировать заданное окно, на которое надо воздействовать сообщением, оконная процедура может проверить дескриптор окна, переданный с сообщением. Для получения дополнительной информации об оконных процедурах, см. тему Оконные процедуры.