Не получается считать данные с edit (с текстового поля) пробовал считывать записывать, SendMessage, SetWindowText,GetWindowText. Ничего не получается Как обратиться по дескриптору и записать текст в текстовое поле, а также считать в переменную (из edit нужно перенести текст в edit2, при нажатии на кнопку ) Исходник ниже
EM_GETLINE Copies a line of text from an edit control and places it in a specified buffer. You can send this message to either an edit control or a rich edit control.
На сколько я понял по коду проблема в жизненном цикле переменных. Твои дескрипторы уже мертвы при обработке события от кнопки. Т.е. вот эти переменные: HWND hButton; HWND hEdit; HWND hEdit2; CHAR *texttest; живут ровно столько, сколько живет функция обратного вызова WndProc, а она каждый раз создается заново при обработке нового сообщения, а все переменные в ней локальные. Вынеси дескрипторы вверх, к глобальным переменным, мне кажется это должно помочь.
не соображаю... TCHAR *lpStrEdit; SendMessage(hEdit, EM_GETLINE, 0, (LPARAM)lpStrEdit); SetWindowText(hwnd,lpStrEdit); Считать в переменную, и вывести к заголовок окна... в заголовке @#$&$%^# fernir, переносил в глобал и так всё равно, ну получить заново дескриптор то не проблема...
продолжаем читать lParam A pointer to the buffer that receives a copy of the line. Before sending the message, set the first word of this buffer to the size, in TCHARs, of the buffer. For ANSI text, this is the number of bytes; for Unicode text, this is the number of characters. The size in the first word is overwritten by the copied line.
BORNDEAD, угу, плюс возвращаемая строка не имеет ноль в конце и его туда нужно руками вписывать иначе будет после строки куча мусора до ближайшего нуля.
ну вобще я паскальщик но поидее LineLength = SendMessage(hEdit, EM_LINELENGTH, 0, 0); StrEdit = new TCHAR[LineLength]; WORD* wptr; wptr = (WORD *)StrEdit ; wptr[0] = LineLength; LineLength = SendMessage(hEdit, EM_GETLINE, 0, (LPARAM)&StrEdit);
Вот как-то так. case WM_COMMAND: if(LOWORD(wparam)==IDB_BUTTON) { HWND hEdit1 = GetDlgItem(hwnd, IDB_EDIT); HWND hEdit2 = GetDlgItem(hwnd, IDB_EDIT2); if (!IsWindow(hEdit1) || !IsWindow(hEdit2)) { return DefWindowProc } if ((int textLen = GetWindowTextLength(hEdit1)) > 0) { TCHAR * text = new TCHAR[textLen+1]; GetWindowText(hEdit1, text, textLen); text[textLen] = 0; SetWindowText(hEdit2, text); delete[] text; } }
region, ты маньяк Вот форумы: forum.sources.ru forum.vingrad.ru rsdn.ru Вопросы, которые тебе в начале будут интересовать там есть. Будет познавательно.