2007-11-22 21:45 UTC+0800 Pritpal Bedi (pritpal@vouchcac.com)

* harbour/contrib/gtwvg/wvtutils.c
    ! Fixes for UNICODE Support.
    ? Przem, please review. It is not complete, still there are warnings.
This commit is contained in:
Pritpal Bedi
2007-11-23 05:47:08 +00:00
parent 2e0b4cc091
commit 3f39b948f7

View File

@@ -155,7 +155,7 @@ HB_FUNC( WVT_CHOOSEFONT )
lf.lfPitchAndFamily = FF_DONTCARE;
if ( ISCHAR( 1 ) )
{
strcpy( lf.lfFaceName, hb_parc( 1 ) );
HB_TCHAR_CPTO( lf.lfFaceName, hb_parc( 1 ), sizeof( lf.lfFaceName ) - 1 );
}
cf.lStructSize = sizeof( CHOOSEFONT );
@@ -180,7 +180,8 @@ HB_FUNC( WVT_CHOOSEFONT )
hb_reta( 8 );
hb_storc( lf.lfFaceName , -1, 1 );
//hb_storc( lf.lfFaceName , -1, 1 );
hb_storc( HB_TCHAR_CONVFROM( lf.lfFaceName ), -1, 1 );
hb_stornl( ( LONG ) PointSize, -1, 2 );
hb_storni( lf.lfWidth , -1, 3 );
hb_storni( lf.lfWeight , -1, 4 );
@@ -243,7 +244,11 @@ HB_FUNC( WVT_CHOOSECOLOR )
//
HB_FUNC( WVT_MESSAGEBOX )
{
hb_retni( MessageBox( _s->hWnd, hb_parc( 1 ), hb_parc( 2 ), ISNIL( 3 ) ? MB_OK : hb_parni( 3 ) ) ) ;
LPTSTR title = HB_TCHAR_CONVTO( hb_parc( 1 ) );
LPTSTR msg = HB_TCHAR_CONVTO( hb_parc( 2 ) );
hb_retni( MessageBox( _s->hWnd, title, msg, ISNIL( 3 ) ? MB_OK : hb_parni( 3 ) ) ) ;
HB_TCHAR_FREE( title );
HB_TCHAR_FREE( msg );
}
//-------------------------------------------------------------------//
@@ -295,7 +300,7 @@ HB_FUNC( WVT_SETTOOLTIP )
iBottom = xy.y - 1;
iRight = xy.x - 1;
ti.lpszText = hb_parc( 5 );
HB_TCHAR_CPTO( ti.lpszText, hb_parc( 5 ), sizeof( ti.lpszText )-1 );
ti.rect.left = iLeft;
ti.rect.top = iTop;
ti.rect.right = iRight;
@@ -317,7 +322,8 @@ HB_FUNC( WVT_SETTOOLTIPTEXT )
if ( SendMessage( _s->hWndTT, TTM_GETTOOLINFO, 0, ( LPARAM ) &ti ) )
{
ti.lpszText = hb_parc( 1 );
HB_TCHAR_CPTO( ti.lpszText, hb_parc( 1 ), sizeof( ti.lpszText )-1 );
//ti.lpszText = hb_parc( 1 );
SendMessage( _s->hWndTT, TTM_UPDATETIPTEXT, 0, ( LPARAM ) &ti );
}
}
@@ -823,18 +829,21 @@ HB_FUNC( WVT_APPENDMENU )
iLen = hb_parclen( 4 );
if ( iLen > 0 && iLen < 256 ) // Translate '~' to '&'
{
lpszCaption = hb_parc( 4 ) ;
//lpszCaption = hb_parc( 4 ) ;
lpszCaption = HB_TCHAR_CONVTO( hb_parc( 4 ) );
for ( i = 0; i < iLen; i++ )
{
ucBuf[ i ] = ( *lpszCaption == '~' ) ? '&' : *lpszCaption ;
lpszCaption++;
}
ucBuf[ iLen ]= '\0';
lpszCaption = ucBuf ;
//lpszCaption = ucBuf ;
lpszCaption = HB_TCHAR_CONVTO( ucBuf );
}
else
{
lpszCaption = hb_parc( 4 ) ;
//lpszCaption = hb_parc( 4 ) ;
lpszCaption = HB_TCHAR_CONVTO( hb_parc( 4 ) );
}
}
else
@@ -1291,10 +1300,12 @@ HB_FUNC( WVT_CREATEDIALOGDYNAMIC )
{
case 0:
{
LPTSTR template = HB_TCHAR_CONVTO( hb_parc( 1 ) );
hDlg = CreateDialog( ( HINSTANCE ) hb_hInstance,
hb_parc( 1 ),
template,
hb_parl( 2 ) ? _s->hWnd : NULL,
(DLGPROC) hb_wvt_gtDlgProcMLess );
HB_TCHAR_FREE( template );
}
break;
@@ -1413,11 +1424,13 @@ HB_FUNC( WVT_CREATEDIALOGMODAL )
{
case 0:
{
LPTSTR template = HB_TCHAR_CONVTO( hb_parc( 1 ) );
iResult = DialogBoxParam( ( HINSTANCE ) hb_hInstance,
hb_parc( 1 ),
template,
hParent,
(DLGPROC) hb_wvt_gtDlgProcModal,
( LPARAM ) ( DWORD ) iIndex+1 );
HB_TCHAR_FREE( template );
}
break;
@@ -1489,8 +1502,8 @@ HB_FUNC( WVT__MAKEDLGTEMPLATE )
if ( hb_parinfa( 1,11 ) == HB_IT_STRING )
{
nchar = nCopyAnsiToWideChar( p, TEXT( hb_parc( 1,11 ) ) ) ;
p += nchar ;
nchar = nCopyAnsiToWideChar( p, (LPSTR) hb_parc( 1,11 ) ) ;
p += nchar ;
}
else
{
@@ -1504,7 +1517,7 @@ HB_FUNC( WVT__MAKEDLGTEMPLATE )
*p++ = (short) hb_parni(1,13) ;
*p++ = (short) hb_parni(1,14) ;
nchar = nCopyAnsiToWideChar( p, TEXT( hb_parc(1,15) ) ) ;
nchar = nCopyAnsiToWideChar( p, (LPSTR) hb_parc( 1,15 ) ) ;
p += nchar ;
} ;
@@ -1533,8 +1546,8 @@ HB_FUNC( WVT__MAKEDLGTEMPLATE )
*p++ = HIWORD ( hb_parnl(9,i) ) ; // id // 0;
if ( hb_parinfa( 10,i ) == HB_IT_STRING )
{
nchar = nCopyAnsiToWideChar( p, TEXT( hb_parc( 10,i ) ) ) ; // class
{
nchar = nCopyAnsiToWideChar( p, (LPSTR) hb_parc( 10,i ) ) ; // class
p += nchar ;
}
else
@@ -1545,7 +1558,7 @@ HB_FUNC( WVT__MAKEDLGTEMPLATE )
if ( hb_parinfa( 11,i ) == HB_IT_STRING )
{
nchar = nCopyAnsiToWideChar( p, ( LPSTR ) hb_parc( 11,i ) ) ; // text
nchar = nCopyAnsiToWideChar( p, (LPSTR) hb_parc( 11,i ) ) ; // text
p += nchar ;
}
else
@@ -1651,7 +1664,9 @@ HB_FUNC( WVT_DLGSETICON )
}
else
{
hIcon = ( HICON ) LoadImage( ( HINSTANCE ) NULL, hb_parc( 2 ), IMAGE_ICON, 0, 0, LR_LOADFROMFILE );
LPTSTR icon = HB_TCHAR_CONVTO( hb_parc( 2 ) );
hIcon = ( HICON ) LoadImage( ( HINSTANCE ) NULL, icon, IMAGE_ICON, 0, 0, LR_LOADFROMFILE );
HB_TCHAR_FREE( icon );
}
if ( hIcon )
@@ -1835,7 +1850,9 @@ HB_FUNC( WIN_SETMENU )
HB_FUNC( WIN_SETDLGITEMTEXT )
{
SetDlgItemText( ( HWND ) hb_parnl( 1 ), hb_parni( 2 ), hb_parc( 3 ) );
LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parc( 3 ) );
SetDlgItemText( ( HWND ) hb_parnl( 1 ), hb_parni( 2 ), lpBuffer );
HB_TCHAR_FREE( lpBuffer );
}
//-------------------------------------------------------------------//
@@ -1892,7 +1909,13 @@ HB_FUNC( WIN_GETDLGITEM )
HB_FUNC( WIN_MESSAGEBOX )
{
hb_retni( MessageBox( ( HWND ) hb_parnl( 1 ), hb_parc( 2 ), hb_parc( 3 ), ISNIL( 4 ) ? MB_OK : hb_parni( 4 ) ) ) ;
LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parc( 2 ) );
LPTSTR lpBuffer2 = HB_TCHAR_CONVTO( hb_parc( 3 ) );
hb_retni( MessageBox( ( HWND ) hb_parnl( 1 ), lpBuffer, lpBuffer2, ISNIL( 4 ) ? MB_OK : hb_parni( 4 ) ) ) ;
HB_TCHAR_FREE( lpBuffer );
HB_TCHAR_FREE( lpBuffer2 );
}
//-------------------------------------------------------------------//
@@ -1916,7 +1939,9 @@ HB_FUNC( WIN_LOADICON )
}
else
{
hIcon = ( HICON ) LoadImage( ( HINSTANCE ) NULL, hb_parc( 1 ), IMAGE_ICON, 0, 0, LR_LOADFROMFILE );
LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parc( 1 ) );
hIcon = ( HICON ) LoadImage( ( HINSTANCE ) NULL, lpBuffer, IMAGE_ICON, 0, 0, LR_LOADFROMFILE );
HB_TCHAR_FREE( lpBuffer );
}
hb_retnl( ( ULONG ) hIcon ) ;
@@ -1932,6 +1957,7 @@ HB_FUNC( WIN_LOADICON )
HB_FUNC( WIN_LOADIMAGE )
{
HBITMAP hImage = 0;
LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parc( 1 ) );
int iSource = hb_parni( 2 );
switch ( iSource )
@@ -1941,14 +1967,15 @@ HB_FUNC( WIN_LOADIMAGE )
break;
case 1:
hImage = LoadBitmap( ( HINSTANCE ) hb_hInstance, hb_parc( 1 ) );
hImage = LoadBitmap( ( HINSTANCE ) hb_hInstance, lpBuffer );
break;
case 2:
hImage = ( HBITMAP ) LoadImage( ( HINSTANCE ) NULL, hb_parc( 1 ), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
hImage = ( HBITMAP ) LoadImage( ( HINSTANCE ) NULL, lpBuffer, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
break;
}
HB_TCHAR_FREE( lpBuffer );
hb_retnl( ( ULONG ) hImage ) ;
}
@@ -2023,13 +2050,15 @@ HB_FUNC( WIN_CREATEBRUSH )
HB_FUNC( WIN_DRAWTEXT )
{
RECT rc = { 0,0,0,0 };
LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parc( 2 ) );
rc.left = hb_parni( 3,1 );
rc.top = hb_parni( 3,2 );
rc.right = hb_parni( 3,3 );
rc.bottom = hb_parni( 3,4 );
hb_retl( DrawText( ( HDC ) hb_parnl( 1 ), hb_parc( 2 ), strlen( hb_parc( 2 ) ), &rc, hb_parni( 4 ) ) );
hb_retl( DrawText( ( HDC ) hb_parnl( 1 ), lpBuffer, strlen( hb_parc( 2 ) ), &rc, hb_parni( 4 ) ) );
HB_TCHAR_FREE( lpBuffer );
}
//-------------------------------------------------------------------//
@@ -2282,13 +2311,13 @@ HB_FUNC( WVT__GETOPENFILENAME )
ofn.hInstance = GetModuleHandle( NULL ) ;
ofn.lStructSize = sizeof( ofn );
ofn.hwndOwner = ISNIL (1) ? GetActiveWindow() : ( HWND ) hb_parnl( 1 ) ;
ofn.lpstrTitle = ISNIL (3) ? NULL : hb_parc ( 3 ) ;
ofn.lpstrFilter = ISNIL (4) ? NULL : hb_parc ( 4 );
ofn.Flags = ISNIL (5) ? OFN_SHOWHELP|OFN_NOCHANGEDIR : hb_parnl( 5 ) ;
ofn.lpstrInitialDir = ISNIL (6) ? NULL : hb_parc ( 6 );
ofn.lpstrDefExt = ISNIL (7) ? NULL : hb_parc ( 7 );
ofn.nFilterIndex = ISNIL (8) ? 0 : (int) hb_parni( 8 );
ofn.hwndOwner = ISNIL(1) ? GetActiveWindow() : (HWND) hb_parnl( 1 ) ;
ofn.lpstrTitle = ISNIL(3) ? NULL : hb_parc( 3 );
ofn.lpstrFilter = ISNIL(4) ? NULL : hb_parc( 4 );
ofn.Flags = ISNIL(5) ? OFN_SHOWHELP|OFN_NOCHANGEDIR : hb_parnl( 5 ) ;
ofn.lpstrInitialDir = ISNIL(6) ? NULL : hb_parc( 6 );
ofn.lpstrDefExt = ISNIL(7) ? NULL : hb_parc( 7 );
ofn.nFilterIndex = ISNIL(8) ? 0 : (int) hb_parni( 8 );
ofn.lpstrFile = szFileName;
ofn.nMaxFile = size;