Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/91: Рейтинг темы: голосов - 91, средняя оценка - 4.65
 Аватар для ivan777
2 / 1 / 3
Регистрация: 10.03.2010
Сообщений: 65

Диалоговые окна в MFC

08.05.2012, 23:38. Показов 19308. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Хотел спросить, как в MFC выводить новые окна, допустим есть стандартное окно IDD_DIT_DIALOG я хочу чтобы при нажатие определённой кнопки выскочило второе окно, для этого я создаю IDD_DIALOG1 и что потом? Куда что писать. Если можно то пару примеров, с модальными и не модальными окнами. Я так понял мне нужно создать класс для этого окна, но как его с ним объединить. Заранее благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2012, 23:38
Ответы с готовыми решениями:

Диалоговые окна MFC приложений
Помогите, пожалуйста, привязать диалоговое окно к вкладке меню MFC приложения. Приложение создаю в Visual Studio 2010, вроде бы все...

Немодальные диалоговые окна
Здравствуйте. Как правильно создать в MFC немодальное диалоговое окно с EditBox'ами, PushButton'анами в SDI приложении?

Притягивающиеся диалоговые окна
Уважаемые программисты! Вопрос такой: как сделать чтобы диалоговые окна притягивались друг к другу когда одно окно перетаскивается к...

27
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.05.2012, 01:08
ivan777, посмотри сюда
Модальное окно
0
 Аватар для ivan777
2 / 1 / 3
Регистрация: 10.03.2010
Сообщений: 65
09.05.2012, 08:53  [ТС]
-=ЮрА=-, Все вроде и хорошо, но вот только не ясно как же сделать так чтобы по нажатию выскочило второе окно, ему же нужны какие то классы.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.05.2012, 12:10
ivan777, ты код анализировать пробовал?Судя по тому что ты написал - нет...
0
 Аватар для ivan777
2 / 1 / 3
Регистрация: 10.03.2010
Сообщений: 65
13.05.2012, 02:25  [ТС]
-=ЮрА=-, Чесно говоря с вашего примера не понял как сделать так чтобы при нажатии кнопки выскакивало другое окно. Долго думал, и у меня это вышло вот так:
C++
1
2
CDialog aDlg(IDD_DIALOG1);
aDlg.DoModal();
Добавлено через 49 секунд
Но как его запускать в не модальном режиме?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
13.05.2012, 03:00
Цитата Сообщение от ivan777 Посмотреть сообщение
aDlg.DoModal();
Нет это модальный режим (о реализации молчу т.к. модальную всегда делаю по иному)
Немодалка здесь Как получить доступ к функциям главного диалога из немодального?
0
 Аватар для ivan777
2 / 1 / 3
Регистрация: 10.03.2010
Сообщений: 65
13.05.2012, 03:42  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Нет это модальный режим
Я знаю что это модальный режим

Добавлено через 20 минут
И еще вопрос, у мене к мфц подключена БД, и вот в новых окнах я не могу вывести данные с БД в текстовые поля, ругается на m_pSetв чем дело?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
13.05.2012, 19:53
Цитата Сообщение от ivan777 Посмотреть сообщение
И еще вопрос, у мене к мфц подключена БД, и вот в новых окнах я не могу вывести данные с БД в текстовые поля, ругается на m_pSetв чем дело?
- как ты её подключал, рекордсет должен сразу норм создаваться. Если есть косяки либо твоя таблица отлична от изначальной структуры либо вообще неверно БД подключена
Псомотри эту ссылку на один мой проектик линк
0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
21.05.2013, 15:54
Здравствуйте, теперь у меня вопрос...
Для создания модального диалогового окна нужно:
1) создать шаблон блока диалога;
2) создать отдельно класс своего диалогового окна унаследованного от CDialog;
3) Ну и создать объект класса, и воспользоваться функцией DoModal()
Это все что нужно?
У меня почему-то не получается, я все это сделал, объект класса создаю в функции нажатия кнопки "OK" основного окна, там же DoModal, у меня в рамках моего окна показывается это окно и приложение зависает. Как правильно создать модальное диалоговое окно?
Вложения
Тип файла: rar TestMFC.rar (37.9 Кб, 47 просмотров)
0
 Аватар для ivan777
2 / 1 / 3
Регистрация: 10.03.2010
Сообщений: 65
21.05.2013, 16:13  [ТС]
Xantrax, А что вы хотите что бы ваша программа открыла при нажатии клавиши ОК? Если хотите что бы открылось другое какое то окно, то нужно его для начала создать, я так смотрю его нету. Но я так смотрю вы хотите что бы выскочил msgbox с некоторым текстом?

Кстати функция DoModal() подразумевает модальное открытие окон.
0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
22.05.2013, 14:51
Да, я хочу, что бы по нажатии кнопки "OK" появлялось другое окно.
то нужно его для начала создать
Что в вашем понимании создать? Я его создал,
- создал шаблон блока диалога;
- создал класс этого диалогового окна;
- объявил объект класса;
- сказал ему, что бы он был модальным dlg.DoModal();
Но я так смотрю вы хотите что бы выскочил msgbox с некоторым текстом?
Нет, я не хочу окно с некоторым текстом (окно с некоторым текстом выводится: MessageBox("Мой текст","Заголовок",MB_OK); Мне нужно именно модальное диалоговое окно.
Кстати функция DoModal() подразумевает модальное открытие окон.
Я понимаю это. Модальное открытие окон - открытие окна не позволяющего работать с основным окном программы до завершения работы с этим окном.

Добавлено через 3 часа 25 минут
Ну, что неужели никто не подскажет? Или всех пугает загрузка проекта?

Добавлено через 16 часов 27 минут
Если создать пустой проект - Диалоговое окно с About Box, About Box по сути тоже является модальным диалоговым окном, да?
Хорошо, я взял, создал такой проект, а потом взял и заменил в своем проекте:
1) Шаблон блока диалога на тот что создавался в About Box;
2) Скопировал класс диалогового окна и его описание
3) Объявил объект класса и сказал ему DoModal() и создалось модальное окно.

А если все делать через стандартные средства, то не получается, соответственно есть какая-то маленькая настройка, свойство окна, которое не позволяет мне создать модальное окно.
Подскажите, что я упускаю?

//**************************************** **************************************

Добавлено через 2 часа 31 минуту
Так, я разобрался...
Что нужно сделать, чтобы создать модальное диалоговое окно?
1) Создать шаблон диалогового окна (там три способа, но проще всего в редакторе в визуальном редакторе);
2) Создать класс, унаследованный от CDialog(можно вручную, можно с помощью ClassWizard (два раза щелкнув на шаблоне создаваемого диалога));
3) В функции нажатия кнопки основного приложения - создать объект унаследованного от CDialog класса;
4) В файл основного приложения внести заголовочный файл (#include "....h") вашей формы;
5) Для этого объекта вызвать метод DoModal();
6) Зайти в свойства формы(модального окна) и сменить значения свойств с Disable - True на Disable - False и Style - child на Style - Popup(или Overlapped).

Спасибо всем кто просматривал этот топик...
1
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 72
27.07.2013, 12:36
Xantrax, А как создать объект унаследованного от CDialog класса?
0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
27.07.2013, 12:43
Ну, создать это громко сказано. Просто назвать его по своему.
Допустим ваш класс:
C++
1
2
3
class MyDialog:public CDialog
{
};
И собственно как-то назвать объект:
C++
1
MyDialog dialog();   //можно и по другому, например VasyaPupkin
Это тоже самое что int a, только int - это стандартный тип, а MyDialog - пользовательский тип.
1
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 72
27.07.2013, 12:45
Xantrax, Спасибо большое) А "В файл основного приложения внести заголовочный файл (#include "....h") вашей формы" Мы просто прописываем #include "Graph.h" в сpp файле???
0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
27.07.2013, 12:54
ну, вообще #include "Graph.h" нужно сделать в .h файле основного проекта, а уже .h файл основного проекта подключается к .cpp основного проекта.
1
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 72
27.07.2013, 13:00
Xantrax, А функция нажатия кнопки - это не обработчик кнопки?
0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
27.07.2013, 13:04
Функция нажатия кнопки - это то что делается при нажатии кнопки.... А обработчик вызывает эту функцию... Так что я думаю не совсем одно и тоже...
1
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 72
27.07.2013, 13:10
Xantrax,А где мне тогда найти эту функцию? И что в классе унаследованного от CDIalog прописать?
0
20 / 20 / 2
Регистрация: 28.11.2012
Сообщений: 366
27.07.2013, 13:11
Двойной клик на кнопке на форме...
1
1 / 1 / 0
Регистрация: 23.07.2013
Сообщений: 72
27.07.2013, 13:15
Xantrax, сделал, мне сюда нужно записать MyDialog dialog(); Я так понял?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.07.2013, 13:15
Помогаю со студенческими работами здесь

Диалоговые окна.Определение размера.
Значит-с,у меня есть дилоговое окно,мне нужно определить его размеры. Вопрос:КАК?????????????????

Окна в MFC
Интересует вопрос: каким образом (если это вообще возможно) в mfc можно создать окно вида, ну скажем такого: Подскжите примерный...

MFC закрытие окна
Здравствуйте! Как можно закрыть окно по нажатию на кнопку (VS, MFC)?

Обновление окна в MFC
Доброго времени суток, уважаемые. Хотел бы попросить у вас совета в написании программы. Программа должна симулировать вращение двух...

MFC обновление окна
Привет всем. Пишу программу с ипользованием MFC, но есть проблемка. Когда что-то нарисую( например, на клавишу 1 рисуется квадрат, а на...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru