Извлечение текста из Editbox
От: Windigo  
Дата: 16.03.04 19:43
Оценка:
В диалоге есть editbox(IDC_EDIT) и push button (ID_OK).Хочу по нажатии кнопки считать введенный текст из edit box. Вот код из функции-обработчика для диалога:
switch (LOWORD(wParam))
{
case ID_OK:
if (!GetDlgItemText(hwndDlg,IDC_EDIT,strDataFile, 80))
strDataFile="data.txt"; // default file

EndDialog(hwndDlg, wParam);
break;

Функция GetDlgItemText(..) всегда возвращает ноль — в чем тут загвоздка? Может надо событие какое0нибудь инициировать — типа WM_GETTEXT
IDC_EDIT определена нормально(пробовал вместо нее писать ее целый идентификатор — то же самое)
Re: Извлечение текста из Editbox
От: srd  
Дата: 16.03.04 19:50
Оценка:
Здравствуйте, Windigo, Вы писали:

W>В диалоге есть editbox(IDC_EDIT) и push button (ID_OK).Хочу по нажатии кнопки считать введенный текст из edit box. Вот код из функции-обработчика для диалога:

W>switch (LOWORD(wParam))
W> {
W> case ID_OK:
W> if (!GetDlgItemText(hwndDlg,IDC_EDIT,strDataFile, 80))
W> strDataFile="data.txt"; // default file

W> EndDialog(hwndDlg, wParam);

W> break;

W>Функция GetDlgItemText(..) всегда возвращает ноль — в чем тут загвоздка? Может надо событие какое0нибудь инициировать — типа WM_GETTEXT

W>IDC_EDIT определена нормально(пробовал вместо нее писать ее целый идентификатор — то же самое)

А что говорит GetLastError?
Re: Извлечение текста из Editbox
От: agos Россия http://trtrmitya.wordpress.com
Дата: 16.03.04 20:03
Оценка:
Здравствуйте, Windigo, Вы писали:

W>В диалоге есть editbox(IDC_EDIT) и push button (ID_OK).Хочу по нажатии кнопки считать введенный текст из edit box. Вот код из функции-обработчика для диалога:

W>switch (LOWORD(wParam))
W> {
W> case ID_OK:
W> if (!GetDlgItemText(hwndDlg,IDC_EDIT,strDataFile, 80))
W> strDataFile="data.txt"; // default file

W> EndDialog(hwndDlg, wParam);

W> break;
а как объяыляется strDataFile?
... << RSDN@Home 1.1.3 beta 2 >>
Не переходите улицу на тот свет..
Re[2]: Извлечение текста из Editbox
От: Windigo  
Дата: 16.03.04 20:20
Оценка:
Здравствуйте, agos, Вы писали:

A>а как объяыляется strDataFile?


char *strDataFile = NULL; //global var
привел ее к типу (LPTSTR) на всякий случай..
Re[3]: Извлечение текста из Editbox
От: agos Россия http://trtrmitya.wordpress.com
Дата: 16.03.04 20:30
Оценка:
Здравствуйте, Windigo, Вы писали:

W>Здравствуйте, agos, Вы писали:


A>>а как объяыляется strDataFile?


W>char *strDataFile = NULL; //global var

W>привел ее к типу (LPTSTR) на всякий случай..
Может на всякий случай объявить её как
char strDataFile[80];

Функция GEtDlgItemText не выделяет память, она берет указатели на выделенную память (не важно даже, в данном случае, динамически или нет)
а в самой функции идет что-то подобное:
    if(lpString == NULL)
        return 0;
... << RSDN@Home 1.1.3 beta 2 >>
Не переходите улицу на тот свет..
Re[2]: Извлечение текста из Editbox
От: Windigo  
Дата: 16.03.04 20:30
Оценка:
Здравствуйте, srd, Вы писали:

srd>А что говорит GetLastError?

Сказала handle is invalid — получается неверный hwndDlg? Ведь формально я ему ничего не присваиваю — все что программа знает о диалоге это:

DialogBox(hinstance_app,MAKEINTRESOURCE(IDD_LOADFILE),main_window_handle,(DLGPROC)LoadFileProc);

А прототип функции обработчика диалога:
BOOL CALLBACK LoadFileProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam);

Если указать явно hwndDlg — то в каком месте это делать?
Re[4]: Извлечение текста из Editbox
От: Windigo  
Дата: 16.03.04 20:34
Оценка:
Здравствуйте, agos, Вы писали:

Точно — в этом то и было дело! Спасибо.
char strDataFile[80]; // так заработало
Re[3]: Извлечение текста из Editbox
От: agos Россия http://trtrmitya.wordpress.com
Дата: 16.03.04 20:37
Оценка:
Здравствуйте, Windigo, Вы писали:

W>Здравствуйте, srd, Вы писали:


srd>>А что говорит GetLastError?

W>Сказала handle is invalid — получается неверный hwndDlg? Ведь формально я ему ничего не присваиваю — все что программа знает о диалоге это:

Как раз то strDataFile и есть инвалидный (а по просту говоря = 0) хендл. Ну ты уже вроде понял..
... << RSDN@Home 1.1.3 beta 2 >>
Не переходите улицу на тот свет..
Re[5]: Извлечение текста из Editbox
От: VladFein США  
Дата: 16.03.04 21:27
Оценка:
Здравствуйте, Windigo, Вы писали:

W>char strDataFile[80]; // так заработало


И будет работать долго-долго, пока длина имени файла не окажется больше 80...
Как говорил Билл Гейтс, 640Kb памяти должно быть достаточно для всех.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.