Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2012, 21:33   #1
Dexter_
 
Регистрация: 12.08.2012
Сообщений: 9
По умолчанию Возвращение значения оконной процедурой

Доброго времени суток. С недавнего времени начал изучать winapi и появился такой вопрос: иногда, в функции оконной процедуры мы должны возвращать определенное сообщение, например
Код:
case WM_CTLCOLORDLG:
HBRUSH hbrush = CreateSolidBrush (RGB(250, 250, 250));
return (LONG)hbrush;
Тут понятно, что меняется цвет фона окна, но вот куда именно именно идет возвращаемое значение hbrush? Вообще интересует куда именно передаются возвращаемые параметры с оконной процедуры.
Гуглить пытался, но ничего толком не нашел.
Dexter_ вне форума Ответить с цитированием
Старый 12.08.2012, 22:09   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
но вот куда именно именно идет возвращаемое значение hbrush?
А теперь задумайтесь над вопросом - "кто вызывает оконну процедуру?"
p51x вне форума Ответить с цитированием
Старый 12.08.2012, 23:57   #3
Dexter_
 
Регистрация: 12.08.2012
Сообщений: 9
По умолчанию

Я так понимаю, что процедура привязана к определенному классу окна и вызывается уже непосредственно функцией DispatchMessage в цикле, но что тогда происходит в самой функции DispatchMessage, выходит, что функция DispatchMessage определяет куда отправлять полученный результат с WindowProc?
Dexter_ вне форума Ответить с цитированием
Старый 13.08.2012, 00:07   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
и вызывается уже непосредственно функцией DispatchMessage в цикле
Нет. DispatchMessage -
Цитата:
Dispatches a message to a window procedure. It is typically used to dispatch a message retrieved by the GetMessage function.
Зачем-то у оконной процедуры в прототипе указано CALLBACK?..

П.С. Это книги такие сейчас пишут или вы ничего не читали? Раньше хоть вскольз ноупоменали об этом.
П.С.С. Подумал тут... забейте, главное, что возвращаемое значение DispatchMessage совпадает с возвращаемым оконной.

Последний раз редактировалось p51x; 13.08.2012 в 00:25.
p51x вне форума Ответить с цитированием
Старый 13.08.2012, 01:57   #5
Dexter_
 
Регистрация: 12.08.2012
Сообщений: 9
По умолчанию

Та книги по winapi я еще не читал, вот уже нормально так писал консольные приложения на чистом си, читал K&R, уже захотелось перейти на оконные и для начала решил выучить нормально winapi, перед тем как учить ооп и переходить на плюсы или шарп. Начал изучение winapi с msdn и пытался не просто копипастить , а понимать как все работает. Вот насчет CALLBACK и WINAPI не могу понять, что это дает, не могу найти где про это подробно написано, только слышал, что это модификаторы которые определяют как передаются параметры в функцию, но как это реально используется, можете подсказать?
Dexter_ вне форума Ответить с цитированием
Старый 13.08.2012, 07:49   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Вот насчет CALLBACK и WINAPI не могу понять, что это дает, не могу найти где про это подробно написано, только слышал, что это модификаторы которые определяют как передаются параметры в функцию, но как это реально используется, можете подсказать?
CALLBACK сейчас равно WINAPI а оно равно stdcall.
это соглашение о вызове.
Цитата:
Та книги по winapi я еще не читал
а стоит.
Цитата:
выходит, что функция DispatchMessage определяет куда отправлять полученный результат с WindowProc?
ну типо того, она отправляет в итоге отправителю сообщения.(если ему нужен результат)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.08.2012, 10:14   #7
Dexter_
 
Регистрация: 12.08.2012
Сообщений: 9
По умолчанию

А можете посоветовать с какой книги лучше начинать учить winapi?
Dexter_ вне форума Ответить с цитированием
Старый 13.08.2012, 17:50   #8
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Цитата:
Сообщение от Dexter_ Посмотреть сообщение
А можете посоветовать с какой книги лучше начинать учить winapi?
Ю. Щупак "Win32 API. Эффективная разработка приложений". или Румянцев "Азбука программирования в Win32 API "
Затем можете почитать Рихтера. Еще можно Петцольда, но его книга уже сравнительно старая.
rmv240899 вне форума Ответить с цитированием
Старый 13.08.2012, 18:04   #9
Dexter_
 
Регистрация: 12.08.2012
Сообщений: 9
По умолчанию

Ок, буду читать Всем большое спасибо за помощь. Еще напоследок хочу спросить какую литературу кто-то может посоветовать где было бы доступно и комплексно написано о таких понятиях как calling convention, стек вызовов, потоки и тд, просто не знаю как назвать эту тему. Начал читать про соглашения вызовов, но появилась куча других терминов.
Dexter_ вне форума Ответить с цитированием
Старый 13.08.2012, 18:16   #10
rmv240899
Форумчанин
 
Регистрация: 18.02.2012
Сообщений: 155
По умолчанию

Цитата:
Сообщение от Dexter_ Посмотреть сообщение
Ок, буду читать Всем большое спасибо за помощь. Еще напоследок хочу спросить какую литературу кто-то может посоветовать где было бы доступно и комплексно написано о таких понятиях как calling convention, стек вызовов, потоки и тд, просто не знаю как назвать эту тему. Начал читать про соглашения вызовов, но появилась куча других терминов.
Попробуйте Джонсона Харта "Системное программирование". Я точно не знаю, есть ли там то что Вам нужно, но примерно по теме. А из сайтов порекомендую http://cplusplus.com, http://firststeps.ru.
rmv240899 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
exec() - проблема с запуском в оконной сесии The SCS PHP 1 03.07.2012 12:15
возвращение функции значения TStringSream Lokos Общие вопросы Delphi 6 24.11.2010 12:42
Про возвращение значения... 2face2 Помощь студентам 15 25.01.2010 14:42
Про возвращение значения ... 2face2 Помощь студентам 0 24.01.2010 22:19
Описание структур и массивов в оконной форме mdrake Общие вопросы C/C++ 2 15.05.2008 14:18