Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5

Активизация главного окна

08.11.2015, 10:49. Показов 1694. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую, ребята, помогите пожалуйста с одной штукой
Суть такая. Есть главное окно программы - на ней кнопка, которая открывает модально одну форму. Далее на этой модальной форме есть еще одна кнопка, при нажатии которой сворачиваю окно главной формы(т.к. модальную нужно держать "открытой"):
C++
1
SendMessageA(MainForm->Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
Вот теперь вопрос, как программно мне активизировать это свернутое окно ? Т.е. отобразить обратно главную форму и модально открытую.
Может что-то вместо SC_MINIMIZE нужно прописать ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.11.2015, 10:49
Ответы с готовыми решениями:

Узнать HWND главного окна процесса имея его имя?
Запускаем калькулятор Windows. Имя этого процесса (полученное с использованием PROCESSENTRY, CreateToolhelp32Snapshot)...

Как уменьшить высоту заголовка окна и высоту главного меню?
Доброй ночи! Может кто нибудь знает (если это возможно), как можно уменьшить высоту заголовка окна и высоту главного меню? Добавлено...

Программная активизация окна
как программно активизировать окно (ATL)? делаю так: ShowWindow(SW_SHOW) //и т.п. или так: SetWindowPlacement(...) или так: ...

16
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
08.11.2015, 14:30
Почтальон, а ничего, что эта самая модальная форма при отсылке подобного сообщения тоже скрывается?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
08.11.2015, 17:29  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
а ничего, что эта самая модальная форма при отсылке подобного сообщения тоже скрывается?
Ну да, в курсе , поэтому главное окошко и скрываю. Вот как вернуть обратно, как раз модальное окошко? Ведь получается нужно главное реанимировать ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
08.11.2015, 17:50
А чего ты жать-то будешь, чтобы его вернуть? После выполнения команды на экране ничего не остается. Или ты хочешь сразу, по нажатию кнопки, выслать несколько команд? А не проще в таком случае будет просто скрыть нафиг MainForm, чтобы не морочить голову, а потом, при закрытии модальной формы, восстановить видимость главной?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
09.11.2015, 09:23  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
А чего ты жать-то будешь, чтобы его вернуть? После выполнения команды на экране ничего не остается. Или ты хочешь сразу, по нажатию кнопки, выслать несколько команд? А не проще в таком случае будет просто скрыть нафиг MainForm, чтобы не морочить голову, а потом, при закрытии модальной формы, восстановить видимость главной?
Нее, у меня суть немного другая. На модальной форме есть кнопка - в ее обработчике некий алгоритм. Так вот. При нажатии кнопки на модальной форме - главная форма, а так же модальная должны скрываться (ну по сути скрывать главную форму, т.к. модальная должна скрыться автоматом), и после окончания выполнения определенных условий - положение модальной формы должно восстанавливаться, т.е. обратно раскрываться , вот, как то так
Возможно не нужно использовать отсылку сообщения главной форме, а тупо ее скрывать , вечерком попробую
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
09.11.2015, 09:34
Цитата Сообщение от Почтальон Посмотреть сообщение
Возможно не нужно использовать отсылку сообщения главной форме, а тупо ее скрывать
Ну, а я про что?
Цитата Сообщение от volvo Посмотреть сообщение
А не проще в таком случае будет просто скрыть нафиг MainForm
1
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
09.11.2015, 20:00  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Ну, а я про что?
Попробую так сделать. Отпишусь по результату

Добавлено через 8 часов 37 минут
Попробовал скрывать главное окно таким кодом:
C++
1
MainForm->Hide();
Но при таком раскладе скрывается только главная, а модальная остается открытой

Добавлено через 1 час 27 минут
Решил проблему так:
скрываем форму
C++
1
ShowWindow(MainForm->Handle, SW_MINIMIZE);
восстанавливаем форму:
C++
1
ShowWindow(MainForm->Handle, SW_RESTORE);
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,907
Записей в блоге: 12
09.11.2015, 20:48
Лучший ответ Сообщение было отмечено Почтальон как решение

Решение

Ты нормально можешь объяснить, чего добиться-то хочешь? Где ты вот эту фигню вызывать собрался:
Цитата Сообщение от Почтальон Посмотреть сообщение
восстанавливаем форму:
C++
1
ShowWindow(MainForm->Handle, SW_RESTORE);
? После вызова первой команды экран пуст. И чего делать? Куда жать, чтобы сработала вторая?

Держат у себя в голове какие-то непонятные желания, никто ничего понять не может, а потом опять будут говорить, что они, оказывается, непонятые, и никто кроме них самих тут ничего не знает. Вот на кой пес, спрашивается, мельтешить скрытием/показом форм перед пользователем? Он что, для этого компьютер покупал, чтобы его ресурсы расходовались на никому не нужные анимации при сворачивании/разворачивании? У пользователей спросил? Оно ИМ нужно, чтобы формы сметались с экрана, и потом фиг пойми когда, выбрасывались назад? Есть стандартный метод сообщить пользователю о том, что нужно подождать: это прогрессбар, а не минимизация формы. А если пользователь именно в этот момент задействовал AeroShake, чтобы скрыть все окна кроме одного, и тут бац, и это одно пропадает, да? Хороший интерфейс написать очень непросто, и вот сейчас ты от написания хорошего интерфейса стремительно удаляешься.
2
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
09.11.2015, 20:54  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
После вызова первой команды экран пуст. И чего делать? Куда жать, чтобы сработала вторая?
Видимо и правда тупанул, не так объяснил
Суть такая. Запускают прогу, при нажатии на кнопку - открывается модальная форма, на ней же другая кнопка, при нажатии на которую, главная и модальная скрываются, и отображается третья форма. вот на ней уже нужная кнопка, в обработчике которой я восстанавливаю свернутые окна.
Вот, как-то так
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
09.11.2015, 21:09
Цитата Сообщение от Почтальон Посмотреть сообщение
восстанавливаю свернутые окна.
Какие свернутые окна? И куда свернутые?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
10.11.2015, 12:05  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Какие свернутые окна? И куда свернутые?
Немного не понял вопроса
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.11.2015, 13:47
Перевести на марсианский? Кто вам виноват что вы изъясняетесь и думаете на непонятном.
0
0 / 0 / 2
Регистрация: 14.10.2015
Сообщений: 47
10.11.2015, 14:10
Скрыл ты 2 первые формы, а на третей ты их раскрываешь?
Если я понял, может так?

C++
1
Form2->Show(); //Это ты открываешь вторую форму
C++
1
2
3
4
//Это на второй форме кнопка
Form1->Hide();
Form2->Hide();
Form3->Show();
C++
1
2
3
// Через третью форму
Form1->Show();
Form2->Show();
А хотя, возможно я не понял тебя
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
10.11.2015, 14:44  [ТС]
Ребят, задачу я решил простым способом, который описал в своем посте.
Алгоритм был такой.
1. Есть главная форма программы (пусть это будет Ф1)
2. Есть форма "настроек", открываю я ее модально (пусть будет Ф2)
3. Есть форма "доп.настроек" (пусть будет Ф3), она должна скрывать Ф2 и Ф1, т.е. "очищать" экран от форм программы (но Ф2-модальная, поэтому нужно минимизировать главную)
4. При определенном событии на Ф3 - она закрывается и восстанавливаются Ф2 и Ф1.
Куда уж не понятно-то ? Согласен что запутано, но задача решена
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.11.2015, 15:30
Цитата Сообщение от Почтальон Посмотреть сообщение
3. Есть форма "доп.настроек" (пусть будет Ф3), она должна скрывать Ф2 и Ф1,
Садись два, за саму постановку задачи.

Где ты видел в нормальном ПО что бы:
1. Плодились окна?
2. Скрывались диалоговые окна?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
11.11.2015, 13:17  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Садись два, за саму постановку задачи.
Вот так всегда, стоит только приоткрыть занавес тайны, как истину неверно трактуют. Раскрыть всю специфику приложения не могу по некоторым причинам
Цитата Сообщение от Avazart Посмотреть сообщение
Скрывались диалоговые окна?
Про них вообще ни слова не было, была модальность
Если интересует проект - могу скинуть в личку (но только Вам), тогда станет немного понятнее про что я говорил
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.11.2015, 13:39
Лучший ответ Сообщение было отмечено Почтальон как решение

Решение

Цитата Сообщение от Avazart Посмотреть сообщение
2. Скрывались диалоговые окна?
Цитата Сообщение от Почтальон Посмотреть сообщение
Про них вообще ни слова не было, была модальность
В данном контексте, нет разницы.

Нормальная программа обычно не манипулирует больше чем двумя окнами сразу.
Обычно есть одно главное окно и при необходимости вызывается диалоговое окно в модальном режиме.
При чем диалоги создаются при вызове и уничтожаются при его закрытии.

Давать окну монопольные(модальные) права, а затем их лишать противоречит логике.

Чем меньше окон тем проще для пользователя.
К примеру кто мешает расположить доп. настройки на вкладке PageControl ?
Зачем понадобилось скрывать окна мне вообще не понятно, как по мне изрядно запутывает пользователя, не говоря уже о вероятных проблем с реализацией.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.11.2015, 13:39
Помогаю со студенческими работами здесь

Активизация окна приложения по Заголовку
Всем доброго! Нашёл как активизировать окно приложения по заголовку, но код работает, только для окна на заднем плане, свернутое - не...

Активизация нужного окна в Internet Explorer
Kak mozhno pri pomoshi ASP, VBScript, JScript ili chego-nibud yesho aktivizirovat nuzhnoye okno Internet Explorer, kotoroye uzhe otkrito...

Как мне сослаться на вторичные окна (формы) из главного окна
Мне скинули код.....я пытаюсь коды этих отдельных форм просмотреть в конструкторе.......то есть создав новый проект.......но наткнувшись на...

Как узнать margin-left любого элемента от главного окна окна браузера?
причем не важно какую вложенность имеет элемент сам элемент, т.е. в скольких контейнерах он бы не находился, нужно найти его marginLeft от...

При перерисовке главного окна мигают дочерние окна
При перерисовке главного окна мигают дочерние окна. Для отрисовки главного окна используется двойная буферизация, как и в дочерних окнах....


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
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
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru