![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: нет Всего: 15 |
Я написал обертку для класса окна. В нем у меня как полагается есть функция обработки сообщений (WindowProc) окна. Вопрос может ли она быть не статичной? Если не может то почему? Мне хотелось бы понять причины почему именно так происходит. Вот пример того о чем идет речь: http://www.codeproject.com/win32/win32windowwrapperclass.asp
Добавлено @ 14:07 Кажется я просто не проснулся. В приведенной мною же статье есть ответ на этот вопрос. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Да, здесь есть часть ответа, но в конечном счете, компилятор можно всегда обмануть и указать любую другую функцию в качестве процедуры окна. Главная же причина в том, что очень умные люди просто придумали некий стандарт, который позволяет нам встраивать в Win32 свои оконные классы и, соответственно, окна. Стандарт этот говорит нам о том, что процедура окна имеет 16 байт параметров, которые опускаются в стек, а возвращает 4-х байтовый результат, с поднятием стека на те же 16 байт. Есть несколько стандартов вызова процедур и функций: fastcall, cdecl, stdcall, thiscall, pascal(Borland придумал) и т.д. Win32 использует stdcall, поэтому мы все тоже его используем. Напишет Microsoft винду с другим интерфейсом - и нам всем придется использовать именно его. thiscall весьма похож на cdecl, но не на stdcall, поэтому нужно использовать то, что нам диктует Microsoft. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: нет Всего: 11 |
Я бы не рекомендовал это делать -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
ну, это я утрирую, обмануть - в этом случае значит средствами преобразования адреса, привести его к требуемому виду.
это тоже преобразование, хотя и не явное. Все по закону, ни какого обмана. Аналогично нреобразуются 64-битные адреса в 32-битные. Не может же микрософт сама над собой глумиться. Это сообщение отредактировал(а) GremlinProg - 13.5.2006, 13:14 -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: нет Всего: 11 |
GremlinProg, в случае с преобразованиями указателей на функции последствия могут быть очень "веселыми". Программа будет падать, а почему это происходит придется искать очень долго
-------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
почему это происходит я описал в первом посте. Естественно, такие преобразования опасны, поэтому прибегать к ним нужно только со знанием дела, а не пытаться набить заплатку. Я просто показал, что это делать не запрещено и ни чего более. -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |