diff win/dw.c @ 1622:fb3c9d7509dd

Fix dw_listbox_get_text() to work in Unicode mode on Windows. Added MacOS X changes to the readme.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 27 Mar 2012 16:53:24 +0000
parents 0e8c80209c4b
children 33d7cf373938
line wrap: on
line diff
--- a/win/dw.c	Tue Mar 27 15:57:36 2012 +0000
+++ b/win/dw.c	Tue Mar 27 16:53:24 2012 +0000
@@ -7752,10 +7752,10 @@
  */
 void API dw_listbox_get_text(HWND handle, unsigned int index, char *buffer, unsigned int length)
 {
-   TCHAR tmpbuf[100] = {0};
+   TCHAR tmpbuf[100] = {0}, *wbuffer;
    unsigned int len;
 
-   if(!buffer || !length)
+   if(!buffer || !length || !(wbuffer = _alloca((length+1)*sizeof(TCHAR))))
       return;
 
    buffer[0] = 0;
@@ -7767,17 +7767,22 @@
       len = (int)SendMessage(handle, CB_GETLBTEXTLEN, (WPARAM)index, 0);
 
       if(len < length && len != CB_ERR)
-         SendMessage(handle,
-                  CB_GETLBTEXT, (WPARAM)index, (LPARAM)buffer);
+      {
+         SendMessage(handle, CB_GETLBTEXT, (WPARAM)index, (LPARAM)wbuffer);
+         strncpy(buffer, WideToUTF8(wbuffer), length);
+      }
    }
    else
    {
       len = (int)SendMessage(handle, LB_GETTEXTLEN, (WPARAM)index, 0);
 
       if(len < length && len != LB_ERR)
-         SendMessage(handle,
-                  LB_GETTEXT, (WPARAM)index, (LPARAM)buffer);
-   }
+      {
+         SendMessage(handle, LB_GETTEXT, (WPARAM)index, (LPARAM)wbuffer);
+         strncpy(buffer, WideToUTF8(wbuffer), length);
+      }
+   }
+   
 }
 
 /*