powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Получить текст из EDIT-контрола дочернего окна своего приложения
15 сообщений из 15, страница 1 из 1
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989147
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь получить текст из EDIT-контрола дочернего окна своего приложения. Вроде бы все правильно:
TCHAR wcChildBuffer[100];
GetDlgItemText(hwndChildDlg, IDC_ED_DLG, wcChildBuffer, 100);
Результат функция возвращает нулевой. GetLastError говорит "недопустимый дескриптор окна"
Хотя если пытаться получить текст в CALLBACK-функции этого дочернего окна, то все нормально
Что тут не так? Обрыл уже все что только можно, нигде нету ответа.
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989159
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Random2,

Все в одном процессе происходит?
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989165
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, все в одном.
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989172
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Random2,

Тогда и правда плохой дескриптор. напечатайте его, хоть массаж боксом, хоть как, и проверь спаем, что хэндлер такой и именно тот.
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989207
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ID контрола нормальный. Хендл дочернего окна правильный. Переменные глобальные, поэтому когда GetDlgItemText с теми же ID и хендлом дочернего окна выполняется в CALLBACK функции этого дочернего окна, функция отрабатывает нормально. Может в этом все дело? Но нигде про это ни слова не нашел.
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989216
Freeze729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А прописать его как #include "ChildName.h"
и потом ChildNameForm1->Edit1->Text;
???
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989238
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Freeze729 , мне нужно на WinAPI, не на C++ Builder.
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989284
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели никто не знает причины? Для нагладности (может быть у меня в коде что-то не так) прикладываю исходник простейший тестовый. Что еще интересно, с диалогового окна я могу получить текст с контрола главного окна, а вот наоборот - ну никак. Что это может быть?
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989401
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Random2,
Код: plaintext
1.
2.
3.
4.
5.
6.
case IDC_BUTTON:
                        DialogBox(hInst, MAKEINTRESOURCE(IDD_CHILDDLG), hMainDlg, (DLGPROC)ChildDlgProc);
                        TCHAR buff[150];
                        GetDlgItemText(hChildDlg,ID_MYEDIT,buff,150);
                        MessageBox(0,buff,0,0);
                        break;


К моменту GetDlgItemText(hChildDlg,ID_MYEDIT,buff,150) модальное окно уже уничтожено. Разве нет?
Попробуй получать текст в ChildDlgProc до вызова EndDialog(hWnd, 0). Потом каким-то образом передавать в MainDlgProc.
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989452
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Random2Неужели никто не знает причины? Для нагладности (может быть у меня в коде что-то не так) прикладываю исходник простейший тестовый. Что еще интересно, с диалогового окна я могу получить текст с контрола главного окна, а вот наоборот - ну никак. Что это может быть?

Причина ю ошибка в твой программе.
Ищи. Не можеш - опубликуй исходник, может кто то поможет.
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989454
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_SlaRandom2,
Код: plaintext
1.
2.
3.
4.
5.
6.
case IDC_BUTTON:
                        DialogBox(hInst, MAKEINTRESOURCE(IDD_CHILDDLG), hMainDlg, (DLGPROC)ChildDlgProc);
                        TCHAR buff[150];
                        GetDlgItemText(hChildDlg,ID_MYEDIT,buff,150);
                        MessageBox(0,buff,0,0);
                        break;


К моменту GetDlgItemText(hChildDlg,ID_MYEDIT,buff,150) модальное окно уже уничтожено. Разве нет?
Попробуй получать текст в ChildDlgProc до вызова EndDialog(hWnd, 0). Потом каким-то образом передавать в MainDlgProc.
Да похоже на то.

Dialog box это модальное окно, после выхода из этой функции окно уничтожается.
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37989652
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv, я знаю что причина в моей программе. Я прикрепил исходник к сообщению от "сегодня, 03:25 (13287990)".

m_Sla, скорее всего Вы правы. В МСДНе написано, что окно уничтожается, хоть и не сразу, но когда я проверяю из окна родителя на какую кнопку кликнул юзер, то оно уже уничтожено. То есть хоть в переменной хендл и есть, но в системе окна с таким хендлом уже нету.

Другой вопрос теперь. Выход временный я нашел - я узнаю что ввел юзер в поля ввода перед закрытием диалогового окна и заношу эти значения в глобальные переменные. Но это не совсем удобно, т.к. если полей ввода будет 10 и диалоговых окон несколько, для каждого поля ввода неудобно будет заводить переменную. Какой выход из такой ситуации есть? К тому же у меня окно показывается как для редактирования записи с главного окна так и для добавления новой, инфа вводится похожая, просто обрабатывается по-разному. Удобно было бы обрабатывать после вызова DialogBox, но приходится все делать в DialogBox, указывая разные флаги и т.д. Может есть более грамотный вариант? Может где-нибудь примеры есть, поделитесь пожалуйста. Т.к. ничего такого не могу найти.
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37990421
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Random2, напиши класс обертку над модальным окном. Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
class modalwindow
{
public:
        void Show(); // Показать модальное окно. Сохранить результат ввода в edit_1, .... , edit_N

        TCHAR edit_1[150]; // в любое время получить результат ввода
        ...
        TCHAR edit_N[150];
};
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37990916
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но это не совсем удобно, т.к. если полей ввода будет 10 и диалоговых
> окон несколько, для каждого поля ввода неудобно будет заводить переменную. Какой
> выход из такой ситуации есть?

Не использовать глобальные переменные. Использовать неглобальные переменные.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить текст из EDIT-контрола дочернего окна своего приложения
    #37992780
Random2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказывается, есть функция DialogBoxParam, которая также создает диалог, но есть возможность указать любые данные в LPARAM. Поэтому передав указатель, можно использовать необходимые данные в функции и получить введенные параметры.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Получить текст из EDIT-контрола дочернего окна своего приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]