>
> hbwapi.h
> =======
> #define wapi_parwparam( n )  ( ( WPARAM )  ( HB_PTRDIFF ) hb_parnint( n ) )
> #define wapi_parlparam( n )  ( ( LPARAM )  ( HB_PTRDIFF ) hb_parnint( n ) )
> #define wapi_parhandle( n )  ( ( HANDLE )  ( HB_PTRDIFF ) hb_parnint( n ) )
> #define wapi_parhwnd( n )    ( ( HWND )    ( HB_PTRDIFF ) hb_parnint( n ) )
> #define wapi_parwndproc( n ) ( ( WNDPROC ) ( HB_PTRDIFF ) hb_parnint( n ) )
> #define wapi_parhdc( n )     ( ( HDC )     ( HB_PTRDIFF ) hb_parnint( n ) )
> #define wapi_parcolor( n )   ( ( COLORREF )( HB_PTRDIFF ) hb_parnint( n ) )
> #define wapi_parstruct( n ) ( hb_parc( n ) )


We should also allow for hb_parptr(). Also, I'd exactly replicate
the type name in the macro/function name (easier to recognize,
easier to grep):

#define wapi_par_WPARAM()  ( ( WPARAM ) ( ISNUM( iParam ) ? ( HB_PTRDIFF )
hb_parnint( n ) : hb_parptr( n ) ) )


> #define wapi_rethandle( n )  ( hb_retnint( ( HB_PTRDIFF ) n ) )


We should rather use hb_retptr() for handles and pointers.
hb_retnint() is meant for large numbers, or mixed use values.


> #define HB_HWND        HWND
> #define HB_COLORREF  COLORREF
> #define HB_HDC          HDC
> // etc.
>
> /*      IMO, we must avoid the direct API types at the API level       */


I'm not sure if this is necessary. Windows is one layer,
on the top of that comes the .prg interface, no need to add
another layer of abstraction IMO. This just makes maintenance
more complicated.


> wapi_gdi.c
> ========
> /*
>   All functions prefixed with WAPI_* will accept parameters in
>   the same order and types, including structures. Only in cases
>   where a complex structure is involved, an array of same number
>   of elements corresponding members of the structure. If both
>   can be implemented, the better it could be.
> */
> #include <windows.h>
> #include <gdi32.h>
> #include "hbwapi.h"


Instead of #include <windows.h>, we should still use
'#define HB_OS_WIN_USED', placed before the first
Harbour include file.

Also, please use /* ANSI C */ comments exclusively.

Brgds,
Viktor
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to