Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Получения текста из CEdit переменной


Автор: Почти я 22.9.2004, 11:11
Как мне взять текст, который ведён в поле ввода?
Я имею ввиду CEdit
GetWindowText не приносит никаких результатов.
Я передаю в него два параметра:
Код

CEdit edit0;
...
Element.edit0.Create(WS_VISIBLE|WS_BORDER|WS_CHILD, CRect(10, 10, 310, 30), this, 101);
...
LPTSTR str="";
edit0.GetWindowText(str, edit0.GetWindowTextLength());
MessageBox(0, str, "...", 0);
...

Выводит пустой MessageBox...

Автор: Почти я 22.9.2004, 11:12
<censored 8>,
М
 
это лишнее

код кривой. ВОТ:
Код

CEdit edit0;
...
edit0.Create(WS_VISIBLE|WS_BORDER|WS_CHILD, CRect(10, 10, 310, 30), this, 101);
...
LPTSTR str="";
edit0.GetWindowText(str, edit0.GetWindowTextLength());
MessageBox(0, str, "...", 0);
...

Автор: Step 22.9.2004, 11:19
LPTSTR str=""; так делать нельзя

и вообще остерегайтесь объявлять переменые типа с префиксом LP

сделайте вот так
Код

char str[100];
edit0.GetWindowText(str,edit0.GetWindowTextLength());


или вот так
Код
CString str;
edit0.GetWindowText(str);

Автор: Почти я 22.9.2004, 11:33
Я за "<censored 8>", конечно, прощения прошу покорно...
Первый вариант покатил, а второй нет. Блин. вроде пробовал же вчера char юзать...

Автор: Step 22.9.2004, 12:30
Второй вариант тоже рабочий, это 100%
какую ошибку он вам дал....

если вам просто пустое окно выдало то попробуйте вот так вызвать мессайдж бокс
MessageBox(0,LPCSTR(str),"",0);

Автор: Олег М 22.9.2004, 14:35
Цитата(Step @ 22.9.2004, 14:19)
сделайте вот так Код 

char str[100]; edit0.GetWindowText(str,edit0.GetWindowTextLength());

Только не так, а вот так edit0.GetWindowText(str,sizeof(str));, а ещё лучше
Код

TCHAR str[100];
edit0.GetWindowText(str,sizeof(str)/sizeof(TCHAR));
Цитата
Первый вариант покатил, а второй нет. Блин. вроде пробовал же вчера char юзать...

Оба должны прокатить, они почти одинаковые, просто во втором случае в CString выделяется память под буффер. Может у тебя контрол ещё не создан?

Автор: Guest 22.9.2004, 15:04
Второй вариант в задницу посылает. Матюкается, мол ему нужен LPTSTR, не CString.

Автор: Step 22.9.2004, 16:48
судя по всему
на второй вариант
мотюкает мессейдж бокс

хотя это странно

вы вот так пробывали LPCSTR(str)
Добавлено @ 16:53
мой рабочий год
Код

CString str;
wq.GetWindowText(str);
::MessageBox(0,LPCTSTR(str),"",0);


Автор: Олег М 23.9.2004, 06:37
Цитата(Guest @ 22.9.2004, 18:04)
Второй вариант в задницу посылает. Матюкается, мол ему нужен LPTSTR, не CString.

Не может она так матюкатся. Скорее всего ты вызываешь не тот метод. Покаж код с CString.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)