Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
1

Окно со стилем рамки bsNone ведущее себя, как bsSizeable

19.09.2012, 20:37. Показов 1773. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите, какие API-функции использовать для эмуляции полноценного окна. Конкретно интересует обработка Win+стрелки и "удары" о границы экрана.
Миниатюры
Окно со стилем рамки bsNone ведущее себя, как bsSizeable  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2012, 20:37
Ответы с готовыми решениями:

Изменение размеров формы без рамки (bsnone)
как правельно изменить размер формы ? вобщем код: bool hit = false; void __fastcall...

Как создать окно без рамки?
Хочу создать окно без рамки подскажите как это сделать?

Как создать окно со стилем "поверх всех окон"?
что нужно указать в параметре dwStyle АПИ КреатеВиндов для того. чтобы окно было поверх всех?

Разница между стилем css и стилем в коде html
Такой код <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8">...

12
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
19.09.2012, 23:50 2
Win+стрелки и "удары" о границы экрана.
Не понят что конкрентно нужно ?
И зачем тут Api ( WinApi ??? ) ?
0
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
20.09.2012, 00:02  [ТС] 3
Цитата Сообщение от Avazart Посмотреть сообщение
Не понят что конкрентно нужно ?
И зачем тут Api ( WinApi ??? ) ?
Нужно создать форму, которая будет без стандартных элементов управления (свернуть, развернуть, закрыть), т.е. создаётся форма со стилем bsNone. Но дело в том, что для такого окна не обрабатываются события удара о границы экрана (например, о верхнюю часть). Насколько я знаю, всё это обратывает и отрисовывает специальный процесс (dwm.exe), поэтому нужно ему как-то сообщить по средствам API или отправки специального сообщения то, что моё окно было "ударено" о границы экрана.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
20.09.2012, 01:46 4
Цитата Сообщение от T2skler Посмотреть сообщение
для такого окна не обрабатываются события удара о границы экрана (например, о верхнюю часть).
Первый раз слышу о таких существовании таких сообщений

Добавлено через 1 час 5 минут
И чем не угадил вариант с проверкой Top, Left формы ?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
20.09.2012, 02:30 5
Avazart, это ж "Aero Snap", подводишь окно к верхней/левой/правой кромке экрана - оно автоматически распахивается на половину экрана.

T2skler, сомневаюсь я, что возможно задействовать эту фишку для окон с bsNone
0
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
20.09.2012, 20:54  [ТС] 6
Цитата Сообщение от UI Посмотреть сообщение
Avazart, это ж "Aero Snap", подводишь окно к верхней/левой/правой кромке экрана - оно автоматически распахивается на половину экрана.

T2skler, сомневаюсь я, что возможно задействовать эту фишку для окон с bsNone
В Nokia Suite и Steam отсутствуют стандартные кнопки управления окном и скорее всего у них стиль рамки bsNone, но всё-таки эти функции реализованы.
Миниатюры
Окно со стилем рамки bsNone ведущее себя, как bsSizeable  
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
20.09.2012, 22:19 7
Два варианта на вскидку: номер раз - анализируй положение окна своими силами и меняй его размер\положение подобно поведению aero snap при касании границ экрана; номер двас - незаметно таскай под целевой формой еще одну форму сходного размера, но уже со стилем bsSizeable, и при скачкообразном изменении ее размера\положения подгоняй под них размер\положение целевой формы. Довести до ума это дело будет не совсем, чтобы просто.
0
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
21.09.2012, 00:26  [ТС] 8
А есть варианты с перекрытием отрисовки окна (без кнопок и прозрачной рамки)?
0
4043 / 2332 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.09.2012, 07:18 9
Можно еще кромсать форму регионами, попросту отрезая ненужное с краев. Как при этом поведет себя aero snap, мне неизвестно.
0
Я Фоюмчанин ? дааааа)
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
21.09.2012, 08:25 10
Цитата Сообщение от T2skler Посмотреть сообщение
Конкретно интересует обработка Win+стрелки и "удары" о границы экрана.
Цитата Сообщение от T2skler Посмотреть сообщение
для такого окна не обрабатываются события удара о границы экрана (например, о верхнюю часть)
В виндовс обрабатываються удары для всех приложений и только в верху экрана,
Влево, вправо и вниз вы что угодно запихнёте,а вот в верху выбросит обратно. И с bsNone всё тоже самое. Так что если вы хотите что бы у вас обрабатывалось со всех сторон то напишите функцию WndProc где сравниваее Left, Top, Width, Height c параметрами экрана и в соответствии делаете что нужно.

И нужно было укозать свою ОС
У меня windows 7 и вверх экрана нельзя запихнуть ничего, какой бы там стиль небыл.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
21.09.2012, 10:37 11
Цитата Сообщение от ivan.-94 Посмотреть сообщение
И с bsNone всё тоже самое
Неправда. Ни bsNone, ни bsDialog, ни даже обычное окно, у которого просто задизейблена кнопка "Максимизировать", не будут отрабатывать AeroSnap.
Цитата Сообщение от ivan.-94 Посмотреть сообщение
У меня windows 7 и вверх экрана нельзя запихнуть ничего, какой бы там стиль небыл.
Можно. Окно с двойным заголовком и активной кнопкой Maximize распахнется на весь экран, если его "бросить" на верхнюю границу экрана. По крайней мере, так должно быть. Если у тебя этого не происходит - это сугубо проблема твоей установки.
0
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
21.09.2012, 13:03  [ТС] 12
Цитата Сообщение от ivan.-94 Посмотреть сообщение
В виндовс обрабатываються удары для всех приложений и только в верху экрана,
Влево, вправо и вниз вы что угодно запихнёте,а вот в верху выбросит обратно. И с bsNone всё тоже самое. Так что если вы хотите что бы у вас обрабатывалось со всех сторон то напишите функцию WndProc где сравниваее Left, Top, Width, Height c параметрами экрана и в соответствии делаете что нужно.

И нужно было укозать свою ОС
У меня windows 7 и вверх экрана нельзя запихнуть ничего, какой бы там стиль небыл.
...
Удар о верхнюю часть экрана расширяет окно приложения на весь экран (аналог - развернуть). При форме bsNone не обрабатываются удары, если бы это было не так, то данного топика сейчас бы здесь не было. Скриншоты явно указывают на Windows 7, ибо в предыдущих версиях не было Aero Snap, а в 8-ке,. во-первых, нету пуска, а во-вторых, в нижнем правом углу написано Windows 8 Enterprise N.
0
1702 / 898 / 207
Регистрация: 25.11.2009
Сообщений: 1,847
04.10.2012, 09:08 13
T2skler, окна ведь разворачиваются не при ударе окна о край монитора, а при ударе курсора в момент перетаскивания.
Что в этом сложного, при перетаскивании следить за координатами курсора и при касание границы экрана менять размер окна?
2
04.10.2012, 09:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2012, 09:08
Помогаю со студенческими работами здесь

Окно без рамки
Народ, кто знает как сделать окно без рамки. Вообще без. Или с прозрачной рамкой. Помогите!

Как перетаскивать Form, если BorderStyle = bsNone
как перетаскивать Form, если BorderStyle:=bsNone... создал прог, с условиями...

Переместить окно без системной рамки
Доброго времени суток! Необходимо переместить окно без системной рамки. Комбинация Alt + Space не...

Окно поверх окон, без рамки. лаг
SetWindowPos(self.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE); использую такой код, но...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru