From eaa28e5f06e6baacf66ec1c35545701e20effe94 Mon Sep 17 00:00:00 2001 From: Gerard Patel Date: Mon, 21 Aug 2000 02:38:40 +0000 Subject: [PATCH] Handle the LB_GETTEXT and CB_GETLBTEXT cases for 32W to 16 mapping. --- windows/winproc.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/windows/winproc.c b/windows/winproc.c index 26523cd55fa..5afea862b4a 100644 --- a/windows/winproc.c +++ b/windows/winproc.c @@ -2207,7 +2207,18 @@ INT WINPROC_MapMsg32WTo16( HWND hwnd, UINT msg32, WPARAM wParam32, *plparam = (LPARAM)SEGPTR_GET(str); } return 1; - default: /* No Unicode translation needed */ + case LB_GETTEXT: + case CB_GETLBTEXT: + if ( WINPROC_TestLBForStr( hwnd )) + { + LPSTR str = (LPSTR) SEGPTR_ALLOC( 256 ); /* fixme: fixed sized buffer */ + if (!str) return -1; + *pmsg16 = (msg32 == LB_GETTEXT)? LB_GETTEXT16 : CB_GETLBTEXT16; + *pwparam16 = (WPARAM16)LOWORD(wParam32); + *plparam = (LPARAM)SEGPTR_GET(str); + } + return 1; + default: /* No Unicode translation needed (?) */ return WINPROC_MapMsg32ATo16( hwnd, msg32, wParam32, pmsg16, pwparam16, plparam ); } @@ -2232,6 +2243,15 @@ void WINPROC_UnmapMsg32WTo16( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, SEGPTR_FREE( (LPARAM *)str - 1 ); } break; + case LB_GETTEXT: + case CB_GETLBTEXT: + if ( WINPROC_TestLBForStr( hwnd )) + { + LPSTR str = (LPSTR)PTR_SEG_TO_LIN(p16->lParam); + lstrcpyAtoW( (LPWSTR)lParam, str ); + SEGPTR_FREE( (LPARAM *) str ); + } + break; default: WINPROC_UnmapMsg32ATo16( hwnd, msg, wParam, lParam, p16 ); break;