Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/28: Рейтинг темы: голосов - 28, средняя оценка - 4.54
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127

Вторая форма поверх всех окон

24.07.2010, 03:32. Показов 5724. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу програмку в которой есть 2 формы: первая главная, вторая - для вывода некоторых сообщения поверх всех окон. В настройках второй формы установил чтобы она была поверх всех окон. Все ратотает как нужно. Сейчас сделал чтобы программа могла прятаться в трей и при этом не отображаться на панеле задач(для того чтобы убрать с панели задач я написал
C++
1
ShowWindow(this->Handle, SW_HIDE));
. Тут все работает как надо. Но проблема в том, что второе окно отображаеться но не поверх всех окон а на самом рабочем столе. Для того, чтобы отобразить вторую форму, я в срр-файле второй формы написал функцию которая вызываеться с первой формы, в той функции для появления формы я написал:
C++
1
ShowWindow(this->Handle, SW_SHOW); this->Show();
но если не прятать програму в трей то работает и без
C++
1
ShowWindow(this->Handle, SW_SHOW)
Я думаю, что форма не выскакивает поверх всех потому что я задал SW_SHOW, тоесть "показать форму", а нужно что то типа "показать поверх всех окон", но в хелпе я такого не нашел(((, помогите мне плиз.

Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.07.2010, 03:32
Ответы с готовыми решениями:

Вторая форма поверх всех окон
Всем привет. Тема избитая, но не до конца получается сделать то, что требуется. Есть две форму. Первая основная, вторая для вывода...

Две формы поверх всех окон. Вторая не хочет быть поверх
Ребят, поиск юзал, всё пробовал. Вторая форма не хочет быть наверху, первая нормально наверху висит. Вторая отврывается по событию OnShow...

Форма поверх окон (ОДИН РАЗ)
Как сделать форму поверх окон единоразово. Чтобы пользователь понял что загрузка завершена, например. Пробовал так ...

5
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.07.2010, 11:02
попробуй эту функцию
Delphi
1
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
24.07.2010, 15:51
Br.Misha, я так понимаю, что вторая форма может появляться и при спрятанной первой форме.
Тогда ей лучше придать стиль самостоятельности. Для этого, в конструкторе форме нужно прописать:
C++
1
SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE)|WS_EX_APPWINDOW);
Таким образом, появление формы будет отображаться на панели задач.

Идём дальше. Для отображения формы поверх всех окон советую использовать связку:
C++
1
FormStyle = fsStayOnTop; // в конструкторе или в дизайн-тайме
C++
1
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_NOMOVE||SWP_NOSIZE||SWP_SHOWWINDOW);
Функцию SetWindowPos лучше задать и в конструкторе, и в тех местах, где указывается действие вызова данной формы. Для чего? Для того, чтобы избежать наложений приложений, которые тоже имеют приоритет в Z-последовательности.
0
5 / 5 / 2
Регистрация: 28.02.2010
Сообщений: 127
24.07.2010, 16:40  [ТС]
Lord_Voodoo, БОЛЬШОЕ ВАМ СПАСИБО!!!!! работает точно так, как надо.
И еще, не в тему но чтобы новый топик не создавать спрошу тут.
У меня С++ Builder 2010 ОЧЕНЬ долго думает. Если к примеру какую нить ф-цию скопирую и браузера и вставлю в срр файл то билдер около 5 сек чтото думает. Я думаю что это просто студия проверяет существует ли такая ф-ция или что то типа того. Можно ли как то отключить эту проверку?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
24.07.2010, 16:58
Цитата Сообщение от Br.Misha Посмотреть сообщение
Я думаю что это просто студия проверяет существует ли такая ф-ция или что то типа того. Можно ли как то отключить эту проверку?
Идёт просмотр всех модулей проекта, для того, чтобы определить есть ли такая функция, перегружена ли она, нет ли дубликатов в других пространствах и в конечном итоге вывод необходимых параметров в виде подсказок. Отключить можно CodeGuard, но тогда IDE станет обычным блокнотом.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.07.2010, 18:10
Поищите в настройках редактора два фалжка - Code completition и Code parameters, если их убрать, то шустрее будет билдер шевелиться, причем гораздо, а вызвать подсказки можно и горячими клавишами
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2010, 18:10
Помогаю со студенческими работами здесь

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

MessageBox поверх всех окон!
Можно ли что бы MessageBox был поверх всех окон? { if (MessageBox(0, Caption ,"Шапка бокса", MB_YESNO) == mrYes) {//мой код} ...

Сообщение поверх всех окон
смысл следующий: программа отлавливает изменения буфера обмена, и если там данные определенного типа извлекает от туда некоторую...

Как нарисовать на экране символы поверх всех окон
Здравствуйте! Если на мультимедийной клавиатуре нажать какую нить мультимедийную кнопку то на дисплее выскакивает большими буквами...

Как можно сделать Форму поверх всех окон?
Как модно сделать Form1 поверх всех окон?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru