comparison 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
comparison
equal deleted inserted replaced
1621:0e8c80209c4b 1622:fb3c9d7509dd
7750 * buffer: Buffer where text will be copied. 7750 * buffer: Buffer where text will be copied.
7751 * length: Length of the buffer (including NULL). 7751 * length: Length of the buffer (including NULL).
7752 */ 7752 */
7753 void API dw_listbox_get_text(HWND handle, unsigned int index, char *buffer, unsigned int length) 7753 void API dw_listbox_get_text(HWND handle, unsigned int index, char *buffer, unsigned int length)
7754 { 7754 {
7755 TCHAR tmpbuf[100] = {0}; 7755 TCHAR tmpbuf[100] = {0}, *wbuffer;
7756 unsigned int len; 7756 unsigned int len;
7757 7757
7758 if(!buffer || !length) 7758 if(!buffer || !length || !(wbuffer = _alloca((length+1)*sizeof(TCHAR))))
7759 return; 7759 return;
7760 7760
7761 buffer[0] = 0; 7761 buffer[0] = 0;
7762 7762
7763 GetClassName(handle, tmpbuf, 99); 7763 GetClassName(handle, tmpbuf, 99);
7765 if(_tcsnicmp(tmpbuf, COMBOBOXCLASSNAME, _tcslen(COMBOBOXCLASSNAME)+1)==0) 7765 if(_tcsnicmp(tmpbuf, COMBOBOXCLASSNAME, _tcslen(COMBOBOXCLASSNAME)+1)==0)
7766 { 7766 {
7767 len = (int)SendMessage(handle, CB_GETLBTEXTLEN, (WPARAM)index, 0); 7767 len = (int)SendMessage(handle, CB_GETLBTEXTLEN, (WPARAM)index, 0);
7768 7768
7769 if(len < length && len != CB_ERR) 7769 if(len < length && len != CB_ERR)
7770 SendMessage(handle, 7770 {
7771 CB_GETLBTEXT, (WPARAM)index, (LPARAM)buffer); 7771 SendMessage(handle, CB_GETLBTEXT, (WPARAM)index, (LPARAM)wbuffer);
7772 strncpy(buffer, WideToUTF8(wbuffer), length);
7773 }
7772 } 7774 }
7773 else 7775 else
7774 { 7776 {
7775 len = (int)SendMessage(handle, LB_GETTEXTLEN, (WPARAM)index, 0); 7777 len = (int)SendMessage(handle, LB_GETTEXTLEN, (WPARAM)index, 0);
7776 7778
7777 if(len < length && len != LB_ERR) 7779 if(len < length && len != LB_ERR)
7778 SendMessage(handle, 7780 {
7779 LB_GETTEXT, (WPARAM)index, (LPARAM)buffer); 7781 SendMessage(handle, LB_GETTEXT, (WPARAM)index, (LPARAM)wbuffer);
7780 } 7782 strncpy(buffer, WideToUTF8(wbuffer), length);
7783 }
7784 }
7785
7781 } 7786 }
7782 7787
7783 /* 7788 /*
7784 * Returns the index to the item in the list currently selected. 7789 * Returns the index to the item in the list currently selected.
7785 * Parameters: 7790 * Parameters: