Mercurial > dwindows
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: |