Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1

Как передать управление кнопкой с одного диалога на другой

05.12.2014, 16:31. Показов 1544. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как передать управление кнопкой с одного диалога на другой,
то есть первой кнопкой вызвать выполнение 2 кнопки, на рисунке видно
Миниатюры
Как передать управление кнопкой с одного диалога на другой  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2014, 16:31
Ответы с готовыми решениями:

Управление элементами из одного диалога в другой
Здравствуйте, такой вопрос как передать управление элементами из одного диалога в другой. У меня есть отдельно диалог...

Как передать данные из одного процесса в другой без сокетов
как можно передать аргументы функции main другой программы из той которая вызывает другой процесс, отвечающий за ту main куда нужно...

Передать текст из одного диалога в другой
Здравствуйте уважаемые форумчане! поставлена задача передать текст из LineEdit1(диалоговое окно 1) в LineEdit2(диалоговое окно 2); ...

14
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
05.12.2014, 17:11  [ТС]
скажите хотя бы в каком направлении искать(проект MFC)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
07.12.2014, 15:33
Лучший ответ Сообщение было отмечено generation472 как решение

Решение

Цитата Сообщение от generation472 Посмотреть сообщение
скажите хотя бы в каком направлении искать(проект MFC)
- в каждом экземпляре окна есть набор методов. Предположим в первом окне обработчик нажатия кнопки называется OnBtnWnd1() а во втором OnBtnWnd2(). Тогда вызов метода OnBtnWnd2() в теле обработчика 1-го окна будет выглядеть следующим образом
C++
1
2
3
4
5
void CWndDialog1::OnBtnWnd1()
{
CWndDialog2 * lpDlg2 = //присвоить валидный указатель;
lpDlg2->OnBtnWnd2();
}
если есть готовый объект 2-го диалогового окна (для примера пусть CWndDialog2 pDlg2) то
C++
1
2
3
4
void CWndDialog1::OnBtnWnd1()
{
pDlg2.OnBtnWnd2();
}
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
07.12.2014, 16:59  [ТС]
-=ЮрА=-, в этом и проблема у меня одна кнопка которая должна вызывать методы с разных диалогов(точнее их класов, причём диалогов штук пять или больше) и что теперь для каждого соpдовать объет етого класса? не очень мне нравится,
у меня такая задумка но не совсем работает может поможите реалтзовать:
Создаём ссылку типа
C++
1
 Void* pointer
в главном классе приложения, которой будет присваеваться объект диалога с которым допустим я работаю(в определённый момент) тогда я смогу по нажатию кнопки обратиться к другой в другом диалоге вот так
C++
1
theapp.pointer->OnBtnWnd2();
но это не работает при нажатии выходит какая то ошибко об правах доступа уже непомню точно.
использовал тип void так как буду работать с разными класами диалогов и поэтому нужен какото единственный тип для вcех классов, карочке как то так если у вас есть идее как это реализовать буду рад выслушать.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
07.12.2014, 20:14
Цитата Сообщение от generation472 Посмотреть сообщение
не очень мне нравится,
- поэтому я и привёл вараинт с указатлем
Цитата Сообщение от generation472 Посмотреть сообщение
но это не работает при нажатии выходит какая то ошибко об правах доступа уже непомню точно.
- если обработчик использует в своём теле доступ к другим контролам окна то конечно будет ошибка.

Не по теме:

Брось код, посотрим что можно сделать.

1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
11.12.2014, 11:07  [ТС]
-=ЮрА=-,
Вот мой проект
CmanagerGJPAPP главный класс программы
DialogManager класс главного диалога
DialogMode дочерний не модальное окно (на фото видно панель режим )
ModuleControl класс в котором происходит главный алгоритм программы он включён в CmanagerGJPAPP
MooduleSPI,ModuleVOLT,ModuleDatabase -под модули класса ModuleControl.


даже используя ваш метод то при включения класса DialogMode в класс ModuleControl выходит ошибка IDD_MODE не объявленный идентификатор
Миниатюры
Как передать управление кнопкой с одного диалога на другой   Как передать управление кнопкой с одного диалога на другой  
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
11.12.2014, 20:17
generation472, зачем мне твоя диаграмма классов?Мне нужен конкретный код под который надо вызвать диалог, сейчас твоя просьба больше похожа на излечение по фотографии, это к знахарям не ко мне.
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
12.12.2014, 11:09  [ТС]
-=ЮрА=-,у меня есть идея только не знаю как реализовать)
в дочернем окне есть кнопка к которой прописано сообщение
C++
1
2
3
BEGIN_MESSAGE_MAP(DialogProgress, CDialogEx)
    ON_BN_CLICKED(BTN_RESUME, &DialogProgress::OnBnClickedResume)
END_MESSAGE_MAP()
и у меня есть переменная которую я могу передать в мой класс контроль
C++
1
 HWND hwnd =::GetDlgItem(theApp.hwnd, IDD_MFCAPPLICATION6_DIALOG);//получаю указатель дочернего  окна
и теперь из потока я хочу отправить сообщению этому окну
::SendMessage(hwnd,
только не знаю какими должны быть остальные 3 параметра?

проект слишком большой не смогу суда закинуть

Добавлено через 37 минут
Сделал пример по msdn(по ка что для примера в другом проекте)
в главном классе объявил переменную
C++
1
2
3
#define UWM_CUSTOM (WM_USER + 100)
 
 HWND hwnd ;
при инициализации дочернего
C++
1
::GetDlgItem(theApp.hwnd, IDD_MFCAPPLICATION6_DIALOG);
там же прописал и объявил в message map
C++
1
ON_MESSAGE(UWM_CUSTOM, OnCustom)
C++
1
2
3
4
5
6
7
LRESULT DUALOG1::OnCustom(WPARAM wparam, LPARAM lparam)
{
 CString* pstr = (CString*)wparam;
 
MessageBox("dsfaffadsf");
  return 0;
}
и при нажатии кнопки отправлять сообщение из другого диалога
C#
1
2
3
4
CString str = _T("Test");
 
    //GetParent()->SendMessage(UWM_CUSTOM, 0, 0);
    ::SendMessage(theApp.hwnd,UWM_CUSTOM,(WPARAM)&str, 0);
но сообщение не приходит(((
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
12.12.2014, 11:18
Диалоги то модальные?
если да, то сообщение и не будет приходить, диалог все перехватывает
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
12.12.2014, 11:29  [ТС]
Заработало)))))))))))))
вместо
C++
1
::GetDlgItem(theApp.hwnd, IDD_MFCAPPLICATION6_DIALOG);
нужно это
C++
1
theApp.hwnd=this->m_hWnd;
Добавлено через 33 секунды
ValeryS, нет они дочернии
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
12.12.2014, 21:13
generation472, берёшь прописываешь нужные действия в OnShowWindow для дочернего диалога и не делаешь вот таких извратов
Цитата Сообщение от generation472 Посмотреть сообщение
theApp.hwnd=this->m_hWnd;
. SendMessage не потребуется.

Не по теме:

PS:Можешь не прислушаться, работает у тебя уже, ну пусть работает как сделал.

1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
12.12.2014, 21:52  [ТС]
-=ЮрА=-, можно пример так на будующее.
и это сработает если я буду вызывать из другого класса да ещё и в потоке?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
13.12.2014, 00:22
Лучший ответ Сообщение было отмечено generation472 как решение

Решение

Цитата Сообщение от generation472 Посмотреть сообщение
и это сработает если я буду вызывать из другого класса да ещё и в потоке?
- конечно, метод OnShowWindow вызывается каждый раз когда окно появляется / исчезает не важно DoModal это или ShowWindow
Цитата Сообщение от generation472 Посмотреть сообщение
-=ЮрА=-, можно пример так на будующее.
держи
Edit Control в модальном окне


Как получить доступ к функциям главного диалога из немодального?
1
 Аватар для generation472
24 / 24 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
13.12.2014, 09:05  [ТС]
-=ЮрА=-, не совсем то что мне нужно но спс возьму на вооружение, если хочешь скинь мыло и я отправлю проект, посмотришь что я реализовал может скажешь как можно оптимизировать)
0
13.12.2014, 10:53

Не по теме:

Цитата Сообщение от generation472 Посмотреть сообщение
-=ЮрА=-, не совсем то что мне нужно но спс возьму на вооружение, если хочешь скинь мыло и я отправлю проект, посмотришь что я реализовал может скажешь как можно оптимизировать)
- отписал в личку, но скажу честно посмотрю где-то через неделю т.к нужно сдать свой проект и времени нет ни на что кроме работы

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2014, 10:53
Помогаю со студенческими работами здесь

Как сделать замену одного текста на другой одной кнопкой
ребята привет! уже много статей перечитал, не могу понять, как сделать чтобы при нажатии кнопки на форме текст в label заменялся на другой....

Как передать управление от одной формы другой?
Здравствуйте. Не могу понять как передать управление из одной формы в другую. В начале запуска программы запускается форма...

Передача сообщения из одного диалога в другой
У меня есть 2 диалоговых окна. Создаются они в ресурсах. Мне нужно из одного диалога передать сообщение другому. Делаю так ...

Как передать переменную из одного файла в другой
Здравствуйте. Создал класс MainWindow в mainwindow.h : #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> ...

Как передать переменную из одного класса в другой
Есть окружность, а по ней в свою очередь движется точка. Часть кода: import javax.swing.*; import java.awt.*; import...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru