Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 21

Получить данные из Edit Control модального окна

11.04.2015, 05:31. Показов 3123. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Только начинаю разбираться в MFC, есть некоторые проблемы, надеюсь вы мне поможете)
Я создаю модальное окно и пытаюсь получить данные из текстового поля, в которое пользователь должен ввести что-либо. Делаю примерно так:

C++
1
2
3
4
5
6
CDialog dlg;
if (IDOK == dlg.DoModal())
{
 CString astr;
 dlg.GetDlgItemText(idname, astr);// idname - это ид поля ввода
}
Пробовал уже разными способами, искал на форуме, но постоянно выходит какая-нибудь ошибка, при таком коде хотя бы компилирует, но программа выдает ошибку при выполнении функции GetDlgItemText.
В общем, надеюсь вы мне поможете, или хотя бы намекнете, а то до меня не доходит...)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.04.2015, 05:31
Ответы с готовыми решениями:

Получить скришнот модального окна
Собственно вопрос в теме. Имеется модальное окно следующего вида: <div class="modal-header"> <button...

Передать данные формы из модального окна
Проблема такая: 1. Есть родительская страничка где данные передаются в форму модального окна для редактирования с привязанными GET...

Вывести данные из модального окна в форму ввода
Здравствуйте, подскажите пожалуйста, как можно вывести данные из модального окна в форму ввода. Есть определенная форма, возле поля ввода...

15
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
11.04.2015, 09:29
Дело в том, модальное окно блокирует выполнение вызвавшего его кода до своего закрытия, поэтому строка 5 будет выполнена уже после закрытия модального окна и никакого поля ввода idname не будет существовать.
Что бы получить какую-либо информацию из модального окна, надо передать ему в конструкторе указатель на переменную, в которую окно могло бы что-нибудь записать. (Или писать в глобальные переменные)
0
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 21
11.04.2015, 10:01  [ТС]
Спасибо!
Теперь проблема в следующем - я не могу изменить обработчик событий на кнопке.
Пытаюсь изменить реакцию на нажатие OK:

C++
1
2
3
4
5
void addClass2::OnBnClickedOk()
{
    // TODO: добавьте свой код обработчика уведомлений
    //CDialog::OnOK();
}
Но он все равно его закрывает. Т.е. как будто где-то есть код, о котором я не знаю, и он читает его, а не тот, который я описываю... Подскажете?
0
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
11.04.2015, 12:34
А если поставить в обработчике addClass2::OnBnClickedOk() точку останова (т.е. брекпоинт), отладчик на неё заходит? (Или если вызвать из обработчика AfxMessageBox, то появляется?) Если нет, то нужно смотреть, что вызывается при нажатии на кнопку. Это можно увидеть в карте сообщений:
C++
1
2
3
4
5
BEGIN_MESSAGE_MAP(addClass2, CDialog)
    ...
    ON_WM_PAINT()
    ON_BN_CLICKED(IDOK, Что_Здесь_?)
END_MESSAGE_MAP()
0
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 21
11.04.2015, 14:55  [ТС]
Пробовал добавить exit - ничего. Я даже ставлю точку отладки туда: при отладке туда не заходит.
Вот код:

C++
1
2
BEGIN_MESSAGE_MAP(addClass2, CDialog)
    ON_BN_CLICKED(IDOK, &addClass2::OnBnClickedOk)
0
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
11.04.2015, 17:29
Этого не может быть! (промежуток должен быть)
Выкладывай проект, поглядим чо там.
0
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
11.04.2015, 17:46
Цитата Сообщение от rao Посмотреть сообщение
промежуток должен быть
Привет, rao. Между первой и второй ты хотел сказать.
0
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 21
11.04.2015, 18:08  [ТС]
Вот проект:
Вложения
Тип файла: zip 121212121212.zip (4.43 Мб, 9 просмотров)
0
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
11.04.2015, 19:47

Не по теме:

Shvonder, я про другие промежутки. У нас обычно между первой и второй наливай еще одну.



Poision,
1) для прикрепления файлов есть специальная кнопка (в расширенном режиме ответа)
2) проект перед архивацией надо чистить! 90 Мб откомпилированных заголовков никому не нужны.
3) не увидел в коде где ты создаешь экземпляр класса addClass2 и модально его показываешь.
4) если делаешь MFC'шныйпроект, то и классами пользуйся MFC'шными: CString, CStdioFile, и т.п.
1
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 21
12.04.2015, 06:53  [ТС]
А как создать экземплятор класса?..
Я не понимаю, что мне нужно сделать(
0
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
12.04.2015, 07:55
Лучший ответ Сообщение было отмечено Poision как решение

Решение

Предполагаю, что-то вроде этого:
C++
1
2
3
4
5
6
void CMy121212121212Dlg::OnBnClickedButton5()
{
    addClass2 dlg;
    if (IDOK == dlg.DoModal())
    { 
    ...
0
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 21
12.04.2015, 14:02  [ТС]
Все равно не получается(
Миниатюры
Получить данные из Edit Control модального окна  
0
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
12.04.2015, 16:11
на уроки потому что ходить надо
C++
1
#include "addClass2.h"
добавь в 121212121212Dlg.cpp двоешник
1
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 21
12.04.2015, 16:28  [ТС]
Создал так:
C++
1
2
addClass2:CDialog dlg(add);
    if (IDOK == dlg.DoModal())
Все равно не выполняет функции(
Неужели я такой тупой(
0
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
12.04.2015, 16:56

смотри 11 сообщение
1
0 / 0 / 0
Регистрация: 25.07.2013
Сообщений: 21
12.04.2015, 18:51  [ТС]
Блин, точно, спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.04.2015, 18:51
Помогаю со студенческими работами здесь

Как записать данные из Edit Control в файл
Стоит задача написать блокнот, при попытке сохранить введённый текст в файл начинается вечный цикл и зависает программа, подскажите что я...

Вставить текстовые данные в Edit дочернего окна стороннего приложения
В общем имеется строковая переменная и окно стороннего приложения, имеющее дочернее окно класса Edit (класс узнал экспериментально с...

Создание модального диалогового окна поверх окна родителя
Не могу не где найти пример как это сделать. Нужно создать модальное окно поверх окна родителя вывести там информацию и закрыть через 5...

Как написать скрипт для скрытия модального окна при клике вне окна(на боди) ?
У меня модальное окно вообще даже не открывается при нажатии на кнопку,потому что у меня так прописано в скрипте ...

При создании окна через CreateDialog невозможно вводить данные в Edit
Я созданию окно с помощью CreateDialog на котором лежит EDIT и почему нельзя в него ввести текст с помощью клавиатуры. НО когда я создаю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru