![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Объявление функции [D7, XP]
=Guest= © (2007-04-06 14:22:00)Как объявить эту функцию в Delphi
HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi);
Ega23 (2007-04-06 15:37:00) [1]
> обычно CALLBACK - это именно stdcall
Верю. Но #define надо всё-же смотреть...
Просто я тоже один раз вот так ошибку ловил полтора дня. А потом выяснилось, что вместо stdcall разработчик dll cdecl поставил.
MBo (2007-04-06 15:34:00) [2]из windef.h MSVS
#define CALLBACK __stdcall
обычно CALLBACK - это именно stdcall
Джо (2007-04-06 15:25:00) [3]> [8] Ega23 © (06.04.07 15:18)
>
> > У меня сейчас на компе нету сишных компилеров и исходников,
>
> > но вот посмотри описание любой колбэк-функции в МСДН,
> например:
> >
>
>
> Почему именно MSDN? Нет, я понимаю, что это шаблон, по которому
> stdcall может подставиться. Но пока объявления его не видно,
> утверждать этого нельзя.
> Или я не прав?
Да прав, прав, конечно :)
Это у меня тут аврал и голова забита чем угодно, но только не C++
Прошу мои домысли в этой ветке просто CALLBACK считать недействительными...
Ega23 (2007-04-06 15:18:00) [4]
> У меня сейчас на компе нету сишных компилеров и исходников,
> но вот посмотри описание любой колбэк-функции в МСДН, например:
>
Почему именно MSDN? Нет, я понимаю, что это шаблон, по которому stdcall может подставиться. Но пока объявления его не видно, утверждать этого нельзя.
Или я не прав?
Джо (2007-04-06 15:10:00) [5]> [5] Ega23 © (06.04.07 14:31)
>
> > function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint;
>
> > stdcall;
>
>
> Почему stdcall? Почему не cdecl?
У меня сейчас на компе нету сишных компилеров и исходников, но вот посмотри описание любой колбэк-функции в МСДН, например:
BOOL CALLBACKEnumWindowsProc( HWND hwnd,
LPARAM lParam
);
Джо (2007-04-06 15:09:00) [6]> [5] Ega23 © (06.04.07 14:31)
> Почему stdcall? Почему не cdecl?
Ну... потому, что stdcall :)
> [4] =Guest= (06.04.07 14:29)
> объясните если Вам не составит труда что значит HRESULT
> CALLBACK
HRESULT — это тип возвращаемого результата, HRESULT = type Longint. Можно даже HRESULT сразу писать, он уже описан в System.pas.
CALLBACL - это такая директива (не помню, как точнее), которая описывает функцию как stdcall (то есть, определяет способ передачи параметров при вызове).
Ega23 (2007-04-06 14:31:00) [7]
> function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint;
> stdcall;
Почему stdcall? Почему не cdecl?
=Guest= (2007-04-06 14:29:00) [8]
DLLVERSIONINFOструктура а *pdvi Указатель на структуру. Джообъясните если Вам не составит труда что значит HRESULT CALLBACK
Джо (2007-04-06 14:27:00) [9]Блин, сорри за опечатки, двоеточие забыл.
Джо (2007-04-06 14:26:00) [10]function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint;
Что такое DLLVERSIONINFO — понятия не имею, тебе виднее.
Джо (2007-04-06 14:26:00) [11]То есть:
function DllGetVersion (var VerInfo: DLLVERSIONINFO) Longint; stdcall;