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

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

11.04.2015, 05:31. Показов 3189. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru