Has anyone got a small code snip of successful use of GdipCreateFont GDI plus command ?

My calls to GdipCreateFontFamilyFromName and GdipIsStyleAvailable return success (0) but I just can't seem to get GdipCreateFont to do anything I keep getting an invalid number of arguments DF error which suggest my definition is not quite right but it looks OK to me

If I only pass 4 args rather than 5 then I seem to get an error back from he function via it's return value (i.e. DF made the call) which seems to suggest it only takes 4 args but evertything I see on the web is 5 args


Code snip

Code:
#IFNDEF get_GdipCreateFont
External_Function GdipCreateFont "GdipCreateFont" gdiplus.dll ;
    Pointer  pFamily ;
    Real     rEmSize ;
    Integer  iStyle ;
    UInteger uiUnit ;
    Pointer  pFontCollection ;
    Returns  gpStatus
#ENDIF


#IFNDEF get_GdipCreateFontFamilyFromName
External_Function GdipCreateFontFamilyFromName "GdipCreateFontFamilyFromName" gdiplus.dll ;
    String  sFont ;
    Pointer pFontCollection ;
    Pointer ppFontFamily ;
    Returns gpStatus
#ENDIF


#IFNDEF get_GdipIsStyleAvailable
External_Function GdipIsStyleAvailable "GdipIsStyleAvailable" gdiplus.dll ;
    Pointer pFontFamily ;
    Integer iStyle;
    Pointer pStyleAvailable;
    Returns gpStatus
#ENDIF



            Pointer pFont pCurFont ppCurFont
            String sFontName
            Boolean bIsAvailable

            Move (StrToWStr("Tahoma")) to sFontName
            Move 0 to pFont
            Move 0 to pCurFont
            Move (AddressOf(pCurFont)) to ppCurFont
            Move (GdipCreateFontFamilyFromName(sFontName, 0, AddressOf(pFont))) to iResult  / 0 = OK
            Move False to bIsAvailable
            Move (GdipIsStyleAvailable(pFont, 0, AddressOf(bIsAvailable))) to iResult  / 0=OK and bIsAvailable is True
            Move (GdipCreateFont(pFont, Real(12), 0, 3, ppCurFont)) to iResult // just can't get this or any other combo to work yet