PDA

View Full Version : WINAPI و CALLBACK



ICEMAN
سه شنبه 07 خرداد 1387, 11:59 صبح
سلام...
فرق اين دو با هم چيه تعريف هر دو به صورت هست روش و جاي صحيح استفاده از هر كدوم كجاست


ممنون

simul8or
چهارشنبه 08 خرداد 1387, 15:52 عصر
دوست عزیز WINAPI و CALLBACK تعریفی از یک قرارداد فراخوانی (calling convention) به نام stdcall__ هستند که در فایل windef.h به صورت زیر تعریف شده اند:

#define CALLBACK __stdcall
#define WINAPI __stdcall

قراردادهای فراخوانی در تعاریف تابع استفاده می شوند و چگونگی عملیات یک تابع را مشخص می کنند. مثلا اینکه پارامترها در register قرار بگیرند یا در stack ، کدام resister ها مورد استفاده قرار گیرند، پاک کننده ،Callee باشد یا caller و چند حالت دیگر...
به تعریف زیر دقت کنید:
int APIENTRY _tWinMain(parameters)
APIENTRY تعریفی از WINAPI است و WINAPI تعریفی از __stdcall
calling convention عبارتند از:
cdecl
stdcall
fastcall
thiscall
و چند قرارداد دیگر که توسط شرکت های microsoft و borland تعین شده است.

ICEMAN
شنبه 11 خرداد 1387, 10:00 صبح
پس:
WINAPI
CALLBACK
APIENTRY
مي دونم CAlling Convention چيه مي خوام بدونم وقتي تعريف اينها يك جور هست كارايي شون هم يكي هست

simul8or
شنبه 11 خرداد 1387, 19:42 عصر
پس:
WINAPI
CALLBACK
APIENTRY
مي دونم CAlling Convention چيه مي خوام بدونم وقتي تعريف اينها يك جور هست كارايي شون هم يكي هست
:متعجب:!!!

If you don't like the word __stdcall, you can use the CALLBACK ,WINAPI or APIENTRY macro
WINAPI is equivalent to CALLBACK