hi, PASCAL is used in all exported function declarations, indicating to the compiler that Pascal rather than C ordering is used for all arguments (values) pushed onto the stack. While C commonly uses inverted order, placing the least-significant bytes first on the stack , Windows uses Pascal ordering that, like Unix, places the most-significant bytes first. There is another small but crucial difference. Exported functions are functions that will be called from outside the class or in the case of a DLL from other applications outside the unit (library). In a Windows application where subroutines are called from Windows itself or where a member function in one class is called from outside the class, even if both belong to the same application, the Pascal calling order is necessary. On the other hand, all internal function declarations (functions and subprocedures called directly from other procedures within the application) will expect arguments to appear in standard C order and should not be declared using the PASCAL specification. As far as how argument lists are declared in the procedure definitions, it makes absolutely no difference whether the Pascal or C calling conventions are used. These conventions affect only how the arguments are handled internally that is, on the stack and do not in any way affect how the programmer constructs the argument lists. However APIENTRY will end up defined as WINAPI when you include windows.h in version 6 , WINDOWS.H now supports the WINAPI macro, which translates to the appropriate calling convention for the target. Use WINAPI where you previously used PASCAL or __far __pascal. for the actual definitions see windef.h -- Basic Windows Type Definitions cheers