changeset 351:84a24d739d12

Make dw_listbox_query_text() work on comboboxes on Windows.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 16 Apr 2003 12:00:00 +0000
parents 2216e65ad2ae
children feed7567764f
files win/dw.c
diffstat 1 files changed, 26 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/win/dw.c	Mon Apr 14 13:47:20 2003 +0000
+++ b/win/dw.c	Wed Apr 16 12:00:00 2003 +0000
@@ -5174,8 +5174,32 @@
  */
 void API dw_listbox_query_text(HWND handle, unsigned int index, char *buffer, unsigned int length)
 {
-	SendMessage(handle,
-				LB_GETTEXT, (WPARAM)index, (LPARAM)buffer);
+	char tmpbuf[100];
+	int len;
+
+	if(!buffer || !length)
+		return;
+
+	buffer[0] = 0;
+
+	GetClassName(handle, tmpbuf, 99);
+
+	if(strnicmp(tmpbuf, COMBOBOXCLASSNAME, strlen(COMBOBOXCLASSNAME))==0)
+	{
+		len = (int)SendMessage(handle, CB_GETLBTEXTLEN, (WPARAM)index, 0);
+
+		if(len < length && len != CB_ERR)
+			SendMessage(handle,
+						CB_GETLBTEXT, (WPARAM)index, (LPARAM)buffer);
+	}
+	else
+	{
+		len = (int)SendMessage(handle, LB_GETTEXTLEN, (WPARAM)index, 0);
+
+		if(len < length && len != LB_ERR)
+			SendMessage(handle,
+						LB_GETTEXT, (WPARAM)index, (LPARAM)buffer);
+	}
 }
 
 /*