Mercurial > dwindows
comparison win/dw.c @ 997:dfa2204e231f
Fixes for dw_mle_import to make it function like the other platforms on Windows.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 07 May 2011 20:04:34 +0000 |
parents | 87dc0f5f96d0 |
children | 1b40686277df |
comparison
equal
deleted
inserted
replaced
996:69cf9f26e899 | 997:dfa2204e231f |
---|---|
6812 unsigned int API dw_mle_import(HWND handle, char *buffer, int startpoint) | 6812 unsigned int API dw_mle_import(HWND handle, char *buffer, int startpoint) |
6813 { | 6813 { |
6814 int textlen, len = GetWindowTextLength(handle); | 6814 int textlen, len = GetWindowTextLength(handle); |
6815 char *tmpbuf; | 6815 char *tmpbuf; |
6816 | 6816 |
6817 if((textlen = strlen(buffer)) < 1) | |
6818 return startpoint; | |
6819 | |
6820 startpoint++; | |
6821 tmpbuf = calloc(1, len + textlen + startpoint + 2); | |
6822 | |
6823 if(startpoint < 0) | 6817 if(startpoint < 0) |
6824 startpoint = 0; | 6818 startpoint = 0; |
6825 | 6819 |
6820 if(!buffer || (textlen = strlen(buffer)) < 1) | |
6821 return startpoint; | |
6822 | |
6823 tmpbuf = calloc(1, len + textlen + startpoint + 2); | |
6824 | |
6826 if(len) | 6825 if(len) |
6827 { | 6826 { |
6828 char *dest, *start; | 6827 char *dest, *start; |
6829 int copylen = len - startpoint; | 6828 int copylen = len - startpoint; |
6830 | 6829 |
6831 GetWindowText(handle, tmpbuf, len+1); | 6830 GetWindowText(handle, tmpbuf, len+1); |
6832 | 6831 |
6833 dest = &tmpbuf[startpoint+textlen-1]; | 6832 dest = &tmpbuf[startpoint+textlen]; |
6834 start = &tmpbuf[startpoint]; | 6833 start = &tmpbuf[startpoint]; |
6835 | 6834 |
6836 if(copylen > 0) | 6835 if(copylen > 0) |
6837 memcpy(dest, start, copylen); | 6836 memcpy(dest, start, copylen); |
6838 } | 6837 } |
6839 memcpy(&tmpbuf[startpoint], buffer, textlen); | 6838 memcpy(&tmpbuf[startpoint], buffer, textlen); |
6840 | 6839 |
6841 SetWindowText(handle, tmpbuf); | 6840 SetWindowText(handle, tmpbuf); |
6842 | 6841 |
6843 free(tmpbuf); | 6842 free(tmpbuf); |
6844 return (startpoint + textlen - 1); | 6843 return (startpoint + textlen); |
6845 } | 6844 } |
6846 | 6845 |
6847 /* | 6846 /* |
6848 * Grabs text from an MLE box. | 6847 * Grabs text from an MLE box. |
6849 * Parameters: | 6848 * Parameters: |