2008-06-17 18:49 UTC+0200 Viktor Szakats (harbour.01 syenar hu)

* source/rtl/gtclip.c
     ! Fixed get/set clipboard when UNICODE is #defined.
       (WinCE mostly).
     ! Fixed get/set clipboard when format is CF_UNICODETEXT.
       (untested, please someone review me)
     ! Fixed get clipboard when CF_TEXT/CF_OEMTEXT format 
       is used, so that an additionaly zero byte won't be 
       appended anymore to the returned string.
       [TOMERGE RC1 if correct]

   * source/rtl/gtwvt/gtwvt.c
     * "HARBOUR_WVT" -> "Harbour WVT". This text is visible, 
       so it's better to make it "desktop friendlier"".
       [TOMERGE RC1]
This commit is contained in:
Viktor Szakats
2008-06-17 16:54:05 +00:00
parent ebc5ce782c
commit 1d0e0dee30
3 changed files with 59 additions and 19 deletions

View File

@@ -8,6 +8,22 @@
2008-12-31 13:59 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2008-06-17 18:49 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* source/rtl/gtclip.c
! Fixed get/set clipboard when UNICODE is #defined.
(WinCE mostly).
! Fixed get/set clipboard when format is CF_UNICODETEXT.
(untested, please someone review me)
! Fixed get clipboard when CF_TEXT/CF_OEMTEXT format
is used, so that an additionaly zero byte won't be
appended anymore to the returned string.
[TOMERGE RC1 if correct]
* source/rtl/gtwvt/gtwvt.c
* "HARBOUR_WVT" -> "Harbour WVT". This text is visible,
so it's better to make it "desktop friendlier"".
[TOMERGE RC1]
2008-06-17 13:28 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/hbmzip/hbmzip.ch
* contrib/hbmzip/hbmzip.c

View File

@@ -100,15 +100,23 @@ BOOL hb_gt_w32_setClipboard( UINT uFormat, char * szClipData, ULONG ulLen )
EmptyClipboard();
/* Allocate a global memory object for the text. */
hglbCopy = GlobalAlloc( GMEM_MOVEABLE, ulLen + 1 );
hglbCopy = GlobalAlloc( GMEM_MOVEABLE, uFormat == CF_UNICODETEXT ? ( ulLen + 1 ) * sizeof( wchar_t ) : ulLen + 1 );
if( hglbCopy )
{
/* Lock the handle and copy the text to the buffer. */
lptstrCopy = ( LPTSTR ) GlobalLock( hglbCopy );
if( lptstrCopy )
{
HB_TCHAR_SETTO( lptstrCopy, szClipData, ulLen );
lptstrCopy[ ulLen ] = '\0';
if( uFormat == CF_UNICODETEXT )
{
hb_mbtowcset( lptstrCopy, szClipData, ulLen );
lptstrCopy[ ulLen * sizeof( wchar_t ) ] = L'\0';
}
else
{
memcpy( lptstrCopy, szClipData, ulLen );
lptstrCopy[ ulLen ] = '\0';
}
fResult = TRUE;
}
GlobalUnlock( hglbCopy );
@@ -122,27 +130,44 @@ BOOL hb_gt_w32_setClipboard( UINT uFormat, char * szClipData, ULONG ulLen )
BOOL hb_gt_w32_getClipboard( UINT uFormat, char ** pszClipData, ULONG *pulLen )
{
HGLOBAL hglb;
LPTSTR lptstr;
*pulLen = 0;
*pszClipData = NULL;
if( IsClipboardFormatAvailable( uFormat ) && OpenClipboard( NULL ) )
{
hglb = GetClipboardData( uFormat );
HGLOBAL hglb = GetClipboardData( uFormat );
if( hglb )
{
lptstr = ( LPTSTR ) GlobalLock( hglb );
LPTSTR lptstr = ( LPTSTR ) GlobalLock( hglb );
if( lptstr != NULL )
{
*pulLen = GlobalSize( hglb );
if( *pulLen )
switch( uFormat )
{
*pszClipData = ( char * ) hb_xgrab( *pulLen + 1 );
HB_TCHAR_GETFROM( *pszClipData, lptstr, *pulLen );
( *pszClipData )[ *pulLen ] = '\0';
case CF_UNICODETEXT:
*pulLen = wcslen( lptstr );
if( *pulLen )
*pszClipData = hb_wctomb( lptstr );
break;
case CF_OEMTEXT:
case CF_TEXT:
*pulLen = strlen( lptstr );
if( *pulLen )
{
*pszClipData = ( char * ) hb_xgrab( *pulLen + 1 );
memcpy( *pszClipData, lptstr, *pulLen );
( *pszClipData )[ *pulLen ] = '\0';
}
break;
default:
*pulLen = GlobalSize( hglb );
if( *pulLen )
{
*pszClipData = ( char * ) hb_xgrab( *pulLen + 1 );
memcpy( *pszClipData, lptstr, *pulLen );
( *pszClipData )[ *pulLen ] = '\0';
}
break;
}
GlobalUnlock( hglb );
}
}

View File

@@ -1554,7 +1554,7 @@ static HWND hb_gt_wvt_CreateWindow( HINSTANCE hInstance, HINSTANCE hPrevInstance
hWnd = CreateWindow(
s_szAppName, /* classname */
TEXT( "HARBOUR_WVT" ), /* window name */
s_szAppName, /* window name */
WS_THICKFRAME|WS_OVERLAPPED|WS_CAPTION|
WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX, /* style */
0, /* x */
@@ -1568,8 +1568,7 @@ static HWND hb_gt_wvt_CreateWindow( HINSTANCE hInstance, HINSTANCE hPrevInstance
if( hWnd == NULL )
{
MessageBox( NULL, TEXT( "Failed to create window." ),
TEXT( "HARBOUR_WVT" ), MB_ICONERROR );
MessageBox( NULL, TEXT( "Failed to create window." ), s_szAppName, MB_ICONERROR );
return NULL;
}
@@ -2135,8 +2134,8 @@ static BOOL hb_gt_wvt_Info( PHB_GT pGT, int iType, PHB_GT_INFO pInfo )
&szClipboardData, &ulLen ) )
{
pInfo->pResult = hb_itemPutCLPtr( pInfo->pResult,
szClipboardData,
ulLen );
szClipboardData,
ulLen );
}
else
{