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

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

08.11.2015, 10:49. Показов 1655. Ответов 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
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 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
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 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
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 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
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,878
Записей в блоге: 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
8484 / 6151 / 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
8484 / 6151 / 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
8484 / 6151 / 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
8484 / 6151 / 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru