Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634

Тень от формы

14.07.2015, 14:35. Показов 3567. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Просьбо помочь. Если у кого есть готовый пример "тень от формы". Когда то находил на просторах инета пример с регулировкой глубины, размытости и цвета. Но он не стабилен...

Заранее признателе за ответ...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.07.2015, 14:35
Ответы с готовыми решениями:

Тень от формы
Добрый день, реализовал я рамку для формы, но нужно добавить еще и тень к ней ... вот как реализовал рамку : var dc: hDc; Pen:...

Тень от формы не отображается
Добрый день! Я возможно не знаю, но работает ли эффект тени к форме? <Window x:Class="WpfApplication5.Window1" ...

Сделать тень формы со всех сторон
Нашел в сети код для того, что бы форма откидывала тень. Но тень только с 2 сторон. Вот код: Private Const DROPSHADOW As Integer =...

28
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
20.07.2015, 23:57
Студворк — интернет-сервис помощи студентам
Просто запишите состояние в событии:

Visual Basic
1
Private Sub Form_Unload(Cancel As Integer)
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
21.07.2015, 08:36  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
состояние в событии:
Простите не догнал..

Еще раз. Есть 10 форм, выгружать нужно только те, которые загружены в данный момент (а это может быть всего 1 или 2). Как определить какая из 10 была згружена?
Впорос задаю, так как заметил, что если пытаться Выгрузить форму, которая не была загружена, то она сначала форма загружается, а потом выгружается... Не совсем понятна логика, но что есть, то есть...
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
21.07.2015, 20:39
Используй глобальную коллекцию Forms. Она содержит список всех загруженных форм.
1
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
06.08.2015, 13:35
Цитата Сообщение от kreotodr Посмотреть сообщение
Анталий как то спрашивал тебя можно ли в "отманифестенном" Exe включать/отключать визуальный стиль?....
Я не Анатолий , но отвечу:

об этом написано в хелпе:

Visual Basic
1
2
3
Private Declare Function SetWindowTheme Lib "UxTheme.dll" (ByVal hwnd As Long, ByVal pszSubAppName As Long, ByVal pszSubIdList As Long) As Long
 
lr = SetWindowTheme(Me.hwnd, StrPtr(" "), StrPtr(" "))
1-й параметр - хендл интересующего контрола.
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
06.08.2015, 19:04  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
об этом написано в хелпе:
О СПАСИБО!!!!
Блин нет возможности проверить...
Сами не пробовали вкл/выкл сделать програмно?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
07.08.2015, 13:32
В смысле сам? Сам тестил, работает. На счет того, чтобы опять включить, пока не знаю... Возможно в той же справке написано.
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
07.08.2015, 22:13  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
В смысле сам? Сам тестил, работает. На счет того, чтобы
Привет!
Ну я как бы это имел ввиду он/офф в процессе работы..
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18035 / 7738 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
27.09.2015, 16:28
kreotodr,
Цитата Сообщение от Sergei I. Gorelkin
— с каждым окном может быть связан произвольный список пар "строка-значение". Доступ к этому списку — GetProp(), SetProp(), EnumProps(), EnumPropsEx(), RemoveProp(). Подробнее в MSDN. Для самой винды этот список не несет никакой смысловой нагрузки. Просто набор пользовательских данных.

— Ф-ция SetWindowTheme() добавляет в сей список два значения. Свойству "#43281" присваивается атом (GlobalAddAtom()), полученный из второго аргумента, а свойству "#43280" — атом из третьего аргумента. После чего окну посылается WM_THEMECHANGED. Этот факт нигде не документирован, но в нем легко убедиться с помощью IDA...

— Далее, по идее, контрол где-то (например, в обработчике WM_PAINT, хотя не обязательно) должен вызвать
GetProp(handle, "#43280") и действовать в зависимости от полученного результата. Если он этого не делает, то ф-ция SetWindowTheme() на него не оказывает никакого влияния.

— Как посмотреть — если это Ваш контрол, то все под Вашим контролем, а если чужой — то только дизассемблированием...
Но я сделал, по примеру MSDN SetWindowTheme.

Visual Basic
1
SetWindowTheme Command1.hWnd, StrPtr("Explorer"), 0&
Демка в аттаче.

Кликните здесь для просмотра всего текста

Visual Basic
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Option Explicit
 
Private Type tagINITCOMMONCONTROLSEX
    dwSize  As Long
    dwICC   As Long
End Type
 
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" (lpInitCtrls As tagINITCOMMONCONTROLSEX) As Boolean
Private Declare Function SetWindowTheme Lib "UxTheme.dll" (ByVal hwnd As Long, ByVal pszSubAppName As Long, ByVal pszSubIdList As Long) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function UpdateWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function InvalidateRect Lib "user32.dll" (ByVal hwnd As Long, lpRect As Any, ByVal bErase As Long) As Long
Private Declare Function RedrawWindow Lib "user32.dll" (ByVal hwnd As Long, lprcUpdate As Any, ByVal hrgnUpdate As Long, ByVal flags As Long) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Sub SetThemeAppProperties Lib "UxTheme.dll" (ByVal dwFlags As Long)
 
Private Const STAP_ALLOW_WEBCONTENT As Long = 4&
Private Const STAP_ALLOW_CONTROLS   As Long = 2&
Private Const STAP_ALLOW_NONCLIENT  As Long = 1&
 
Private Const WM_THEMECHANGED   As Long = &H31A&
 
Private Const RDW_ERASE         As Long = &H4
Private Const RDW_FRAME         As Long = &H400
Private Const RDW_INTERNALPAINT As Long = &H2
Private Const RDW_INVALIDATE    As Long = &H1
Private Const RDW_ALLCHILDREN   As Long = &H80
 
Private Const GWL_EXSTYLE       As Long = -20&
Private Const GWL_STYLE         As Long = -16&
 
 
Private Sub Command1_Click()
    Static StyleOFF As Boolean
    
    If Not StyleOFF Then
        'switch OFF
        StyleOFF = True
        SetWindowTheme Command1.hwnd, StrPtr(" "), StrPtr(" ")
    Else
        'switch ON
        StyleOFF = False
        SetWindowTheme Command1.hwnd, StrPtr("Explorer"), 0&
    End If
    
End Sub
 
Private Sub Command2_Click()
    SetThemeAppProperties STAP_ALLOW_NONCLIENT
    SendUpdate
End Sub
 
Private Sub Command3_Click()
    SetThemeAppProperties STAP_ALLOW_CONTROLS
    SendUpdate
End Sub
 
Private Sub Command4_Click()
    SetThemeAppProperties STAP_ALLOW_WEBCONTENT
    SendUpdate
End Sub
 
Private Sub Command5_Click()
    SetThemeAppProperties STAP_ALLOW_NONCLIENT Or STAP_ALLOW_CONTROLS Or STAP_ALLOW_WEBCONTENT
    SendUpdate
End Sub
 
Private Sub Command6_Click()
    SetThemeAppProperties 0&
    SendUpdate
End Sub
 
Private Sub SendUpdate()
    SendMessage Me.hwnd, WM_THEMECHANGED, 0&, ByVal 0&
    'Me.Refresh
    'Me.Hide
    'Me.Show
    'UpdateWindow Me.HWnd
    'InvalidateRect Me.HWnd, ByVal 0&, 1&
    'Me.Move Me.Left, Me.Top
    RedrawWindow Me.hwnd, ByVal 0&, 0&, RDW_ERASE Or RDW_FRAME Or RDW_INTERNALPAINT Or RDW_INVALIDATE Or RDW_ALLCHILDREN    '----> XP refresh support
End Sub
 
Private Sub Form_Initialize()
    Dim ICC As tagINITCOMMONCONTROLSEX
    ' Enable visual styles
    With ICC
        .dwSize = Len(ICC)
        .dwICC = &HFF& 'http://www.geoffchappell.com/studies/windows/shell/comctl32/api/commctrl/initcommoncontrolsex.htm
    End With
    InitCommonControlsEx ICC
End Sub
 
Private Sub Form_Load()
    Dim Style As Long
    'Style = GetWindowLong(Command2.hwnd, GWL_STYLE)
    'SetWindowLong Command2.hwnd, GWL_STYLE, Style Or &H800000
    'Debug.Print Style
End Sub




Кто бы мне подсказал: как избавиться от черного прямоугольника у кнопок, если они размещены на фрейме? (проблема только на XP).
См. скрин выше - средняя кнопка справа (которая выглядит нормально) на самом деле расположена вне фрейма.
У кнопки слева - отключил поддержку новых стилей, поэтому тоже выглядит хорошо.
Пробовал поиграться со стилями окна, но не особо результативно.
Вложения
Тип файла: zip Visual Styles.zip (8.7 Кб, 7 просмотров)
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
29.09.2015, 08:57  [ТС]
С П А С И Б О!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.09.2015, 08:57

Как реализовать тень для формы
Как сделать что бы форма ( не стандартная Виндовская, а простая "none" ) откидала тень? Что для этого надо юзать?

Как сделать полупрозрачную тень по краям формы
Как реализовать ?

Тень-граница правой стороны строки таблицы. Не могу убрать эту тень.
Всем доброго времени суток. Сделал сайт, после чего добавил его англоязычный вариант. В верхней части страницы, справа, я добавляю...

Решение ребуса ТЕНЬ + ТЕНЬ = МРАК
Помогите решить ребус: ТЕНЬ + ТЕНЬ = МРАК

Придать тень
Имеется шестиугольник, который был украден от сюда я хотел придать ему тень по всем граням, но не особо у меня это получается, там видны...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru