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

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

08.05.2012, 23:38. Показов 19170. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru