Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 244
от 24.05.2006, 00:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 332, Экспертов: 36
В номере:Вопросов: 1, Ответов: 3


Вопрос № 43526: Добрый время суток Эксперты. Подскажите чем отличается WindowProc от DefWindowProc. Спасибо....

Вопрос № 43.526
Добрый время суток Эксперты. Подскажите чем отличается WindowProc от DefWindowProc. Спасибо.
Отправлен: 19.05.2006, 00:15
Вопрос задал: Александр Михайлович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: 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
Комментарий оценки:
Пасиба


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное