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

Передача структуры между диалоговыми окнами (MFC)

24.03.2012, 11:06. Показов 2556. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть пара диалоговых окон: в 1-ой я записываю данные в файл(через структуру) , во 2-ом я пытаюсь считать их. так вот там пишет ошибку dat: необъявленный идентификатор.

структура в 1-ом окне такая:
C++
1
struct vvod {char name[10]; char family[15];}dat;
как объявить их во 2-ом окне?? (
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.03.2012, 11:06
Ответы с готовыми решениями:

Переход между диалоговыми окнами (MFC)
Помогите пожалуйста. Как реализовать переход между 2-мя диалоговыми окнами по кнопке? Раньше делал как то и забыл, помню что в коде...

Передача данных между окнами MFC
Здраствуйте. При написании программы на MFC столкнулся с проблемой. Кратко, у меня есть Головное и вызываемое диалоговое окна, в Диалоговое...

Проблема с диалоговыми окнами
Существует несколько диалоговых окон, они должны работать с одинаковым пользовательским набором классов...вот с этим проблема, как сделать...

10
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
24.03.2012, 16:16
tema654, всё ну настолько просто что даже страшно
1-й момент - объявляем нашу структуру в stdafx.h тем самым делая доступным её использование во всех файлах программы
C
1
2
3
4
5
6
7
8
9
10
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>         // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
struct vvod 
{
    char name  [33]; 
    char family[33];
};
 
//{{AFX_INSERT_LOCATION}}
2-е после добавления в проект 2-го окна объявлеям переменную член-класса 2-го окна(критически важно, через эту переменную будем в модальном(можно с небольшими доработками в немодальном) режиме светим наше окно)
C
1
2
3
4
5
6
#include "stdafx.h"
#include "StructIn2Modal.h"
#include "StructIn2ModalDlg.h"
 
#include "SecondModal.h"//Обязательно ввбей рукаме хедер класса 2-го диалогового окна
SecondModal frm;//Создай переменную член-класса SecondModal имя frm может быть любым
3-й шаг объявлеям переменную нашей структуры в конструкторе 2-го окна
C++
1
2
3
4
5
6
class SecondModal : public CDialog
{
// Construction
public:
    vvod data;
    SecondModal(CWnd* pParent = NULL);   // standard constructor
4-й шаг - собственно инициализация данными основного окна полей структуры 2-го диалгового окна
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void CStructIn2ModalDlg::OnOK() 
{
    // TODO: Add extra validation here
    //Предварительно внесли vvod data; в список переменных класа 2-го окна
    //class SecondModal : public CDialog
    //{
    //  // Construction
    //  public:
    //  vvod data;
    UpdateData(TRUE);//Собираем инфу с полей ввода
    if(!strcpy(frm.data.name,m_name.GetBuffer(32)))
        AfxMessageBox("Ошибка преобразования данных из поля ввода");
    else
    if(!strcpy(frm.data.family,m_family.GetBuffer(32)))
        AfxMessageBox("Ошибка преобразования данных из поля ввода");
    else
    if(frm.DoModal() != IDOK)
        AfxMessageBox("Во втором окне была нажата отмена");
    //CDialog::OnOK();
}
5 -й Вводим в наше второе окошко обработчик WM_SHOWWINDOW(эта функция отработает когда 2-е окошко засвечивается/скрывается не важно в модально либо не модальном режимах) - см скриншот.

Т.к. полное разъяснение всего потребовало бы страниц так с 3 описания, просто прикладую рабочий проект а там разбирайся, основные моменты я осветил

PS:Работать с двумя окнами можно и без структуры, будет интересно покажу как упростить код ровно в 2 раза, но эт уже по твоему желанию не хочу навязывать свои методы обмена...
Миниатюры
Передача структуры между диалоговыми окнами (MFC)   Передача структуры между диалоговыми окнами (MFC)  
Вложения
Тип файла: rar StructIn2Modal.exe.rar (4.1 Кб, 20 просмотров)
Тип файла: rar StructIn2Modal_proj.rar (27.2 Кб, 25 просмотров)
1
1 / 1 / 1
Регистрация: 28.04.2011
Сообщений: 68
24.03.2012, 17:01  [ТС]
нее,не осилю я, ничего не понимаю... "изучаю" mfc только месяц, а уже задали курсовую...
Ладно, Спасибо!
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
24.03.2012, 17:08
tema654, я сам был студентом и мне знакомо что такое курсач по тому что только изучать начал,что именно вызвало сложности в понимании,пиши...
1
1 / 1 / 1
Регистрация: 28.04.2011
Сообщений: 68
24.03.2012, 17:34  [ТС]
да мне кажется бесполезно спрашивать каждый вопросик, иначе меня забанят)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
24.03.2012, 18:26
Цитата Сообщение от tema654 Посмотреть сообщение
иначе меня забанят)
- за вопросы тут никого не банят, мне так вообще кажется чем больше людей спрашивают здесь на форуме, тем для самого форума лучше
Пиши конкретно что именно смутило в коде, хочешь выкладывай свой проект, будем пошагово его приводить в полнофункциональное состояние...
0
1 / 1 / 1
Регистрация: 28.04.2011
Сообщений: 68
24.03.2012, 18:49  [ТС]
а можно поподробнее 2-ой шаг ?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
24.03.2012, 19:38
Цитата Сообщение от tema654 Посмотреть сообщение
а можно поподробнее 2-ой шаг
Твое первое окно не знает как устроено второе
в коем и будет структура
и для этого ты вписываешь
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
#include "SecondModal.h"//Обязательно ввбей рукаме хедер класса 2-го диалогового окна
но вообше здесь несколько решений
ЮрА показал одно из них

например можешь объявить структуру и оба класса в одной паре *.h *.cpp
и тогда оба окна будут знать как устроена структура

посылать свое сообщение между окнами
и т. д

Добавлено через 2 минуты
Цитата Сообщение от tema654 Посмотреть сообщение
есть пара диалоговых окон: в 1-ой я записываю данные в файл(через структуру) , во 2-ом я пытаюсь считать их. так вот там пишет ошибку dat: необъявленный
вот для этого хорошо подходит файл проецируемый в память
можно общаться даже между приложениями
1
1 / 1 / 1
Регистрация: 28.04.2011
Сообщений: 68
25.03.2012, 17:45  [ТС]
http://rghost.ru/37213528
глубоко извиняюсь за такую ссылку, но почему то не открывается окно вложений...
помогите в нем сделать структуры самым легким путем пожалуйста.
0
25.03.2012, 20:56

Не по теме:

tema654, я займусь скоро твоим проеком(сори, раньше заглянуть не мог)

0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
25.03.2012, 23:07
tema654, посмотри вот эту ветку
Общение окон через WM_COPYDATA
может тебе проще будет передавать

Добавлено через 2 минуты
просто описываешь
C++
1
struct vvod {char name[10]; char family[15];}dat;
в одном и втором окне
или в заголовочном файле и подключаешь к обоим файлам окон и передаешь мессагой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.03.2012, 23:07
Помогаю со студенческими работами здесь

Передача переменных между окнами
Здравствуйте! Подскажите,пожалуйста, как можно передать значение переменной из главного окна в модальное?

Работа с диалоговыми окнами
void MainMenu::on_get_btn_clicked() { obj = new Add_Get_Window(net,GET,this); this-&gt;setModal(true); this-&gt;hide(); ...

Работа с диалоговыми окнами
Здравствуйте, я недавно начал учить библиотеку Qt и меня заинтересовал такой вопрос , смотрите , есть главное окно MainWindow , там есть...

Работа с диалоговыми окнами, Borland C++ 6
Здраствуйте, очень прошу вашей помощи в написании программы в Borland C++ Builder 6, по такому заданию: Создать меню с командами...

Разработка приложений с диалоговыми окнами
День добрый, я новенький в С++. Хотел бы спросить о следующем: Установлено MinGW, Code::Blocks. Скажите пожалуйста как с помощью моей ИДЕ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru