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


Функция обратного вызова WNDPROC (winuser.h)

Функция обратного вызова, определяемая в приложении, которая обрабатывает сообщения, отправленные в окно. Тип WNDPROC определяет указатель на эту функцию обратного вызова. Имя WndProc — это заполнитель для имени функции, определенной в приложении.

Синтаксис

WNDPROC Wndproc;

LRESULT Wndproc(
  HWND unnamedParam1,
  UINT unnamedParam2,
  WPARAM unnamedParam3,
  LPARAM unnamedParam4
)
{...}

Параметры

unnamedParam1

Тип: HWND

Дескриптор окна. Обычно этот параметр называется hWnd.

unnamedParam2

Тип: UINT

Сообщение. Обычно этот параметр называется uMsg.

Список системных сообщений см. в разделе " Системные сообщения".

unnamedParam3

Тип: WPARAM

Дополнительные сведения о сообщении. Обычно этот параметр называется wParam.

Содержимое параметра wParam зависит от значения параметра uMsg .

unnamedParam4

Тип: LPARAM

Дополнительные сведения о сообщении. Обычно этот параметр называется lParam.

Содержимое параметра lParam зависит от значения параметра uMsg .

Возвращаемое значение

Тип: LRESULT

Возвращаемое значение является результатом обработки сообщений и зависит от отправленного сообщения.

Замечания

Замечание

Параметры определяются в заголовке без имен: typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM); Поэтому блок синтаксиса перечисляет их как unnamedParam1 - unnamedParam4. Вы можете присвоить этим параметрам любое имя в приложении. Однако они обычно называются как показано в описаниях параметров. Шаблоны проектов Visual Studio будут использовать эти имена (или что-то подобное в зависимости от шаблона).

Если приложение выполняется в 32-разрядной версии операционной системы Windows, неуловимые исключения из обратного вызова будут переданы в обработчики исключений более высокого уровня приложения при наличии. Затем система вызывает необработанные фильтры исключений для обработки исключения до завершения процесса. Если pcA включен, оно предложит устранить проблему при следующем запуске приложения.

Однако если приложение выполняется в 64-разрядной версии операционной системы Windows или WOW64, следует учитывать, что 64-разрядная операционная система обрабатывает неописуемые исключения по-разному на основе архитектуры 64-разрядного процессора, архитектуры исключений и соглашения о вызовах. В следующей таблице приведены все возможные способы, которые 64-разрядная операционная система Windows или WOW64 обрабатывает неуловимые исключения.

Тип поведения Как система обрабатывает неуловимые исключения
1 Система подавляет все неуловимые исключения.
2 Система сначала завершает процесс, а затем помощник по совместимости программ (PCA) предлагает исправить его при следующем запуске приложения. Вы можете отключить устранение рисков PCA, добавив раздел совместимости в манифест приложения.
3 Система вызывает фильтры исключений, но подавляет все неуправляемые исключения при выходе из области обратного вызова без вызова связанных обработчиков.

В следующей таблице показано, как 64-разрядная версия операционной системы Windows и WOW64 обрабатывает неуловимые исключения. Обратите внимание, что тип поведения 2 применяется только к 64-разрядной версии операционной системы Windows 7 и более поздних версий.

Операционная система WOW64 64-разрядная версия Windows
Windows XP 3 1
Windows Server 2003 3 1
Windows Vista 3 1
Windows Vista с пакетом обновления 1 (SP1) 1 1
Windows 7 и более поздних версий 1 2

Замечание

В Windows 7 с пакетом обновления 1 (SP1) (32-разрядная, 64-разрядная или WOW64) система вызывает необработанные фильтры исключений для обработки исключения до завершения процесса. Если включен помощник по совместимости программ (PCA), он предложит устранить проблему при следующем запуске приложения.

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

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
Header winuser.h (include windows.h)

См. также