Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/27: Рейтинг темы: голосов - 27, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 15

Несворачиваемая, дырявая форма

18.03.2011, 12:43. Показов 5660. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно сделать форму, которая:
1) не сворачивалась кнопкой "свернуть все окна" или клавишами Win+D;
2) она была прозрачной и "дырявой", т.е. через неё можно было бы нажимать мышкой для работы с другими программами.
P.S. Желательно конечно если привидете код программы.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2011, 12:43
Ответы с готовыми решениями:

Дырявая форма
Ребят помогите, как сделать что бы форма была "дырявой", то есть что бы события мыши проходили сквозь нее. на пример что бы на рабочем...

Добавление записи в Listview(1 форма) через Диалоговое окно(3 форма) другой формы (2 форма)
Всем доброго дня и с наступающими праздниками! Знаю, тема 7 частых вопросов по WinForms уже не раз обсуждалась, и была прочитана, но или...

Форма 1 вызывает форму 2, форма 2 закрывается, форма 1 продолжает работать дальше
Вынес предстартовые действия формы1 в форму2 (там у меня проверка существования файлов, их закачка если нету и проверка обновления), но как...

38
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
18.03.2011, 19:31
Студворк — интернет-сервис помощи студентам
Нужно что-то типа того что во вложении?
Вложения
Тип файла: rar Win.rar (8.4 Кб, 20 просмотров)
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 15
21.03.2011, 09:56  [ТС]
PB, да что-то типо этого. А картинку можно любую вставить в эту форму или только рисование по координатам? Код можно данной формы?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.03.2011, 15:13
Там обычная полупрозрачная форма с немного модифицированным стилем, как подсказали здесь.
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 15
21.03.2011, 15:20  [ТС]
PB, ну всё-таки выложите исходник пжста.
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.03.2011, 15:24
Цитата Сообщение от compuser Посмотреть сообщение
выложите исохдник
Иходник на бейсике. Думаю по размеру исполняемого файла можно было догодатся что это не дельфи.
Я просто хотел уточнить такая ли нужна форма или нет.
Исходник
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Procedure Draw(Image) ; Рисование кругов на форме
 If CreateImage(Image,200,200) And StartDrawing(ImageOutput(Image))
   x = 100
   y = 100
   For Radius = 100 To 10 Step -10
      Circle(x, y, radius ,RGB(Random(255),Random(255),Random(255)))
   Next
   StopDrawing()
   SetGadgetState(Image, ImageID(Image))
 EndIf
EndProcedure
 
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_BorderLess|#PB_Window_ScreenCentered) 
  StickyWindow(0,1)
  SetWindowLongPtr_(WindowID(0),#GWL_EXSTYLE,GetWindowLongPtr_(WindowID(0),#GWL_EXSTYLE) | #WS_EX_LAYERED|#WS_EX_TRANSPARENT|#WS_EX_TOPMOST) 
  SetLayeredWindowAttributes_(WindowID(0), 0, 120, #LWA_ALPHA)
  ImageGadget(2,100,10,200,200,0)
  Draw(2)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
EndIf
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 15
21.03.2011, 15:26  [ТС]
Цитата Сообщение от PB Посмотреть сообщение
Иходник на бейсике. Думаю по размеру исполняемого файла можно было догодатся что это не дельфи.
Я просто хотел уточнить такая ли нужна форма или нет.
Исходник
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Procedure Draw(Image) ; Рисование кругов на форме
 If CreateImage(Image,200,200) And StartDrawing(ImageOutput(Image))
   x = 100
   y = 100
   For Radius = 100 To 10 Step -10
      Circle(x, y, radius ,RGB(Random(255),Random(255),Random(255)))
   Next
   StopDrawing()
   SetGadgetState(Image, ImageID(Image))
 EndIf
EndProcedure
 
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_BorderLess|#PB_Window_ScreenCentered) 
  StickyWindow(0,1)
  SetWindowLongPtr_(WindowID(0),#GWL_EXSTYLE,GetWindowLongPtr_(WindowID(0),#GWL_EXSTYLE) | #WS_EX_LAYERED|#WS_EX_TRANSPARENT|#WS_EX_TOPMOST) 
  SetLayeredWindowAttributes_(WindowID(0), 0, 120, #LWA_ALPHA)
  ImageGadget(2,100,10,200,200,0)
  Draw(2)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
EndIf
ну это на бейсике...а нужно на делфи
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.03.2011, 15:29
Цитата Сообщение от compuser Посмотреть сообщение
ну это на бейсике...а нужно на делфи
Выше ведь давал ссыку на код
Delphi
1
SetWindowLong(Self.Handle, GWL_EXSTYLE, WS_EX_TRANSPARENT or WS_EX_LAYERED)
и будет форма, прозрачная для кликов мышкой.
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
21.03.2011, 15:34
Цитата Сообщение от PB Посмотреть сообщение
и будет форма, прозрачная для кликов мышкой
но она будет сворачиваться

Добавлено через 18 секунд
а у тебя она не сворачивается, как это сделал?
0
0 / 0 / 0
Регистрация: 18.03.2011
Сообщений: 15
21.03.2011, 15:35  [ТС]
PB, а приведенный вами пример для какого именно бейсика?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.03.2011, 15:41
Цитата Сообщение от compuser Посмотреть сообщение
а приведенный вами пример для какого именно бейсика?
Для PureBasic.

Добавлено через 46 секунд
Цитата Сообщение от anonimus Посмотреть сообщение
но она будет сворачиваться
Добавлено через 18 секунд
а у тебя она не сворачивается, как это сделал?
Установил поверх всех окон.
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
21.03.2011, 15:43
Установил поверх всех окон
и все? в делфи это не прокатит
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.03.2011, 15:44
Цитата Сообщение от anonimus Посмотреть сообщение
и все? в делфи это не прокатит
Я ведь код программы выложил.
Смотри как он устроен.
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
21.03.2011, 15:52
PB, OpenWindow и StickyWindow это бейсика функция? или winapi?

Добавлено через 50 секунд
Цитата Сообщение от PB Посмотреть сообщение
Я ведь код программы выложил.
ага привел, в разделе делфи на бейсике
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.03.2011, 16:01
Цитата Сообщение от anonimus Посмотреть сообщение
OpenWindow и StickyWindow это бейсика функция? или winapi?
Да из бейсика.
Перая просто создает окно (форму), а вторая? устанавливает указанное окно поверх других окон.
Ее можно заменить на WinAPI аналог
Delphi
1
SetWindowPos(WindowID, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE)
Цитата Сообщение от anonimus Посмотреть сообщение
ага привел, в разделе делфи на бейсике
Меня compuser попросил
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
21.03.2011, 16:21
Ее можно заменить на WinAPI аналог
вот не надо, я не знаю как там работает OpenWindow , но это
SetWindowPos (Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE)
не защищает от сворачивания, оно просто ставит окно поверх остальных, ради такого не стоит обращаться к winapi достаточно сделать так
Delphi
1
FormStyle:=fsStayOnTop;
параметры у OpenWindow
#PB_Window_BorderLess - убирает рамку
#PB_Window_ScreenCentered - центрует
так?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.03.2011, 16:31
Цитата Сообщение от anonimus Посмотреть сообщение
параметры у OpenWindow
#PB_Window_BorderLess - убирает рамку
#PB_Window_ScreenCentered - центрует
так?
Да.
Вот описание функции http://purebasic.ru/manual.php?id=1354&lng=rus
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.03.2011, 16:48
Не думаю что стоит копаться в функции OpenWindow.
Окно созданное полностью на WinAPI, тоже не сворачивается.
Исходник
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Procedure WindowCallback(Window, Message, wParam, lParam) 
  Select Message 
    Case #WM_CLOSE 
      DestroyWindow_(Window) 
    Case #WM_DESTROY 
      PostQuitMessage_(0) 
      Result  = 0 
    Default 
      Result  = DefWindowProc_(Window, Message, wParam, lParam) 
  EndSelect 
  ProcedureReturn Result 
EndProcedure 
 
InitCommonControls_()
#Style  = #WS_VISIBLE | #WS_SYSMENU
#StyleEx  = #WS_EX_TOPMOST
 
WindowClass.s  = "MyWin" 
wc.WNDCLASSEX 
wc\cbsize  = SizeOf(WNDCLASSEX) 
wc\lpfnWndProc  = @WindowCallback() 
wc\hCursor  = LoadCursor_(0, #IDC_ARROW)
wc\hbrBackground  = #COLOR_WINDOW
wc\lpszClassName  = @WindowClass 
RegisterClassEx_(@wc) 
 
hWndMain  = CreateWindowEx_(#StyleEx, WindowClass, "Test-Window", #Style, 100, 100, 200, 200, 0, 0, 0, 0) 
ShowWindow_(hWndMain,  #SW_SHOWDEFAULT) 
UpdateWindow_(hWndMain); 
 
While GetMessage_(msg.MSG, #Null, 0, 0 ) 
  TranslateMessage_(msg) 
  DispatchMessage_(msg) 
Wend

Исполняемый файл для проверки, во вложении.
Вложения
Тип файла: rar Window_API.rar (1.2 Кб, 26 просмотров)
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
21.03.2011, 16:52
был бы код на delphi, а так нет желание копаться в незнакомом синтаксисе, пусть автор темы разбирается
0
PB
21.03.2011, 16:55

Не по теме:

Цитата Сообщение от anonimus Посмотреть сообщение
нет желание копаться в незнакомом синтаксисе
WinAPI оно и в Африке WinAPI.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.03.2011, 16:55
Помогаю со студенческими работами здесь

Не закрывается форма 1, а после вызова формы 2, форма 1 дублируется несколько раз
имеется форма, на ней кнопка. нажимаю и открывается новая форма, но старая снова появляется неограниченное количество раз код 1...

Простая форма веб-форма для сложения двух чисел не работает
Не работает скрипт для подсчета сложения.Может я неправильно привязал обработчик события(клик на кнопку подсчитать)? Вот код: ...

Чтобы форма (иконка форма) не показывалась в панели задач Windows
как сделать так чтобы форма (иконка форма) не показывалась в панели управления там где пуск и все дела?

Сделать, чтобы при нажатии на форме 2 на кнопку, форма 2 закрывалась, а форма 1 открывалась
Здравствуйте подскажите как обнулить форму. Вобщем у меня форма form1 как бы с тестом там есть ComboBox при помощи которого выбирается тема...

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


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru