Отвечает: X-MAN
Здравствуйте, Александр Михайлович!
WindowProc это функция для обработки сообщений, определяемая пользователем:
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
В принципе, она может называться как угодно. Используется для того чтобы вы могли обрабатывать сообщения. Если поступает сообщение, которое вы не хотите обрабатывать, его нужно передать для обработки в DefWindowProc. Эта ф-ция реагирует на сообщения "по умолчанию"(Например, сворачивает окно при нажатии на кнопку свернуть). Допустим, мы хотим обработать только сообщение WM_PAINT. Тогда надо сделсть так:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT:
// Тут что-нибудь рисуем
break;
default:
// Всё остальное по умолчанию
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
--------- Оптимисты начинают день с имунеле, реалисты - с кофе, а пессимисты - с водки!
Ответ отправил: X-MAN (статус: 6-ой класс)
Ответ отправлен: 19.05.2006, 03:15 Оценка за ответ: 5 Комментарий оценки: Понятно. Спасибо. Ну в общем я это как-бы знал. :) Просто не понял, зачем нужна WindowProc, если можно создать свою функцию с любым именем.
Отвечает: Morgion
Здравствуйте, Александр Михайлович!
Уточню ответ X-MAN`а- если твоё окно это диалог, то функция окна, если сообщение не обрабатывается,
должна возвращать 0, никакого вызова DefWindowProc быть не должно.
Ответ отправил: Morgion (статус: Студент)
Ответ отправлен: 19.05.2006, 04:23 Оценка за ответ: 4 Комментарий оценки: Не совсем понятно. Что за диалог? Диалоговое окно что-ли? Можно подробней.
Отвечает: Egor
Здравствуйте, Александр Михайлович!
DefWindowProc - это системная т.е. встроенная в винду процедура обработки сообщений..А WindowProc - это написанная пользователем хотя конечно назвать ее можно как угодно главное чтобы так же она была названа впри описании оконного класса (структура WndClass и WndClassEx).
Ответ отправил: Egor (статус: 3-ий класс)
Ответ отправлен: 19.05.2006, 16:56 Оценка за ответ: 4 Комментарий оценки: Пасиба