diff --git a/harbour/ChangeLog b/harbour/ChangeLog index bc3cdde7e7..4498361cb3 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,13 @@ The license applies to all entries newer than 2009-04-28. */ +2011-05-09 12:06 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * contrib/hbwin/wapi_winbase.c + * contrib/hbwin/hbwin.hbx + + contrib/hbwin/tests/testdir.prg + + WAPI_GETWINDOWSDIRECTORY() -> + + WAPI_GETSYSTEMDIRECTORY() -> + 2011-05-09 09:49 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbide/ideedit.prg * contrib/hbide/idemisc.prg diff --git a/harbour/contrib/hbwin/hbwin.hbx b/harbour/contrib/hbwin/hbwin.hbx index 5c90ec68c0..216ded0f2c 100644 --- a/harbour/contrib/hbwin/hbwin.hbx +++ b/harbour/contrib/hbwin/hbwin.hbx @@ -114,11 +114,13 @@ DYNAMIC WAPI_GETSCROLLPOS DYNAMIC WAPI_GETSCROLLRANGE DYNAMIC WAPI_GETSHORTPATHNAME DYNAMIC WAPI_GETSUBMENU +DYNAMIC WAPI_GETSYSTEMDIRECTORY DYNAMIC WAPI_GETSYSTEMMENU DYNAMIC WAPI_GETSYSTEMMETRICS DYNAMIC WAPI_GETTEXTALIGN DYNAMIC WAPI_GETTEXTCOLOR DYNAMIC WAPI_GETTEXTFACE +DYNAMIC WAPI_GETWINDOWSDIRECTORY DYNAMIC WAPI_IMAGELIST_ADD DYNAMIC WAPI_IMAGELIST_ADDMASKED DYNAMIC WAPI_IMAGELIST_BEGINDRAG diff --git a/harbour/contrib/hbwin/tests/testdir.prg b/harbour/contrib/hbwin/tests/testdir.prg new file mode 100644 index 0000000000..785a0f073f --- /dev/null +++ b/harbour/contrib/hbwin/tests/testdir.prg @@ -0,0 +1,20 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * + * Copyright 2011 Viktor Szakats (harbour.01 syenar.hu) + * www - http://harbour-project.org + * + */ + +#include "simpleio.ch" + +PROCEDURE Main() + + ? ">" + wapi_GetWindowsDirectory() + "<" + ? ">" + wapi_GetSystemDirectory() + "<" + + RETURN diff --git a/harbour/contrib/hbwin/wapi_winbase.c b/harbour/contrib/hbwin/wapi_winbase.c index 38ae72c7e7..430481a8ab 100644 --- a/harbour/contrib/hbwin/wapi_winbase.c +++ b/harbour/contrib/hbwin/wapi_winbase.c @@ -400,3 +400,55 @@ HB_FUNC( WAPI_GETLONGPATHNAME ) } #endif } + +HB_FUNC( WAPI_GETSYSTEMDIRECTORY ) +{ +#if defined( HB_OS_WIN_CE ) + hb_retc_const( "\\Windows" ); +#else + UINT nLen = GetSystemDirectory( NULL, 0 ); + + if( nLen ) + { + LPTSTR buffer = ( LPTSTR ) hb_xgrab( ( nLen + 1 ) * sizeof( TCHAR ) ); + + nLen = GetSystemDirectory( buffer, nLen ); + hbwapi_SetLastError( GetLastError() ); + + HB_RETSTRLEN( buffer, nLen ); + + hb_xfree( buffer ); + } + else + { + hbwapi_SetLastError( GetLastError() ); + hb_retc_null(); + } +#endif +} + +HB_FUNC( WAPI_GETWINDOWSDIRECTORY ) +{ +#if defined( HB_OS_WIN_CE ) + hb_retc_const( "\\Windows" ); +#else + UINT nLen = GetWindowsDirectory( NULL, 0 ); + + if( nLen ) + { + LPTSTR buffer = ( LPTSTR ) hb_xgrab( ( nLen + 1 ) * sizeof( TCHAR ) ); + + nLen = GetWindowsDirectory( buffer, nLen ); + hbwapi_SetLastError( GetLastError() ); + + HB_RETSTRLEN( buffer, nLen ); + + hb_xfree( buffer ); + } + else + { + hbwapi_SetLastError( GetLastError() ); + hb_retc_null(); + } +#endif +}