Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CALLBACK - это stdcall или что? [D7, Win2k]


Fay ©   (2004-12-30 15:47:00) 

Что это означает-то хоть?


Fay   (2004-12-30 23:38:00) [1]

2 Sergey_Masloff   (30.12.04 21:09) [15]
> это видимо имелось в виду?
Видимо, да. Но я туда так и не добрался. Бывает 8(.


Sergey_Masloff   (2004-12-30 21:09:00) [2]

Fay ©   (30.12.04 19:26) [12]
>Ну вот я увидел (к примеру) следующее
>typedef DWORD (CALLBACK *EDITSTREAMCALLBACK)(DWORD_PTR >dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb);
>Какие выводы по сабжу я должен сделать?

Ну прототип функции принимающей 4 параметра и возвращающей dword и с соглашением о вызове CALLBACK

а, ты имеешь в виду что под CALLBACK? Ну там в среде можно сделать goto definition и увидеть что-то типа
#define CALLBACK    __stdcall

это видимо имелось в виду?


Fay   (2004-12-30 20:11:00) [3]

Да. Куда делать "paste"?


Суслик   (2004-12-30 19:58:00) [4]


> Какие выводы по сабжу я должен сделать?

умеешь пользоваться copy+paste


Fay   (2004-12-30 19:26:00) [5]

2 Суслик ©   (30.12.04 17:26) [11]
>> Бог в помощь
И Вам того же

>> Ну чтобы кода в с++ сидишь она искала в h из PSDK, а не из тех, с которыми была поставлена (студия в смысле).

Ну вот я увидел (к примеру) следующее
typedef DWORD (CALLBACK *EDITSTREAMCALLBACK)(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb);
Какие выводы по сабжу я должен сделать?


Суслик   (2004-12-30 17:26:00) [6]


> (кстати, "зарегистрируй ее" - кого?).

PSDK...
Ну чтобы кода в с++ сидишь она искала в h из PSDK, а не из тех, с которыми была поставлена (студия в смысле).


> Думаю, я воспользовался способом попроще и подешевле - спасибо
> МД 8).

Бог в помощь


Fay   (2004-12-30 16:52:00) [7]

2 Суслик ©   (30.12.04 16:44) [9]
Спасибо, никогда бы не догадался (кстати, "зарегистрируй ее" - кого?).
Думаю, я воспользовался способом попроще и подешевле - спасибо МД 8).


-=SS=-   (2004-12-30 16:44:00) [8]

Calling conventions
Directive Parameter order Clean-up Passes parameters in registers?
register Left-to-right Routine Yes
pascal Left-to-right Routine No
cdecl Right-to-left Caller No
stdcall Right-to-left Routine No
safecall Right-to-left Routine No

Т.е смотря с какой библиотеки ты узаешь кэлбэк функции


Суслик   (2004-12-30 16:44:00) [9]


>  [6] Fay ©   (30.12.04 16:09)
> 2 Digitman ©   (30.12.04 16:07) [4]
> Спасибо 8) А то в PSDK я не нашёл, нафиг они пишут CALLBACK.

Поставь VS (у меня 6ая версия), поставь PSDK, зарегистрируй ее.

СОздай проект и пользуйся "find declaration".

Очень удобно.


Sergey_Masloff   (2004-12-30 16:15:00) [10]

Fay ©   (30.12.04 15:47)  
>Что это означает-то хоть?
см. WinDef.h

Ну вобщем если пишешь не для MAC где это PASCAL то таки __stdcall


Fay   (2004-12-30 16:09:00) [11]

2 Digitman ©   (30.12.04 16:07) [4]
Спасибо 8) А то в PSDK я не нашёл, нафиг они пишут CALLBACK.


Fay   (2004-12-30 16:08:00) [12]

2 aus   (30.12.04 16:06) [3]
Ага. Именно поэтому я и задал вопрос. Так ты подумал?


Digitman   (2004-12-30 16:07:00) [13]


> Что это означает-то хоть?


в переводе с буржуйского

CALLBACK = обратный (встречный) вызов

stdcall = standard call = стандартное соглашение о вызове п/программы

в общем случае термины не имеют отношания друг к другу
в частном же (WinAPI) п/программы, определяемые и используемые как CALLBACK-п/программы, должны соблюдать stdcall-соглашение о вызове


aus   (2004-12-30 16:06:00) [14]

Fay ©   (30.12.04 15:47)
ты думаешь, что все, где есть CALL - одно и то же?


BillyJeans   (2004-12-30 15:49:00) [15]

пожалуй 1го января утром, это будет одно и тоже..


BillyJeans   (2004-12-30 15:48:00) [16]

:o)


Наверх

Титульная страница Поиск, карта сайта Написать письмо