Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3

Анимация разворачивания окна в режиме без рамки

10.06.2021, 10:33. Показов 3218. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!
Использую форму со свойством FormBorderStyle = None
Для анимации окна использую
VB.NET
1
2
3
 <DllImport("user32.dll")>
    Shared Function AnimateWindow(hWnd As IntPtr, time As Integer, flags As AnimateWindowFlags) As Boolean
    End Function
Сворачивается без проблем с заданной анимацией (но только если самому нажать на кнопку сворачивания, где прописана анимация перед минимизацией), а вот как развернуть его с анимацией?
Задан стиль окна
VB.NET
1
2
3
4
5
6
7
Protected Overrides ReadOnly Property CreateParams() As CreateParams
        Get
            Dim CP As CreateParams = MyBase.CreateParams
            CP.Style = CP.Style Or &HA0000
            Return CP
        End Get
    End Property
для возможности сворачивать приложение по клике на иконку на панели задач
И что-то я не соображу как это довести до ума?
Поправить проблему со сворачиванием без анимации при клике на иконку на панели задач можно обрабатывая сообщения формы, в частности SC_MINIMIZE (&HF020), но обработав SC_RESTORE (&HF120) и впихнув туда анимацию я не получаю никакого эффекта, форма просто появляется.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2021, 10:33
Ответы с готовыми решениями:

Подтормаживает анимация разворачивания окна
Всем привет. Вот недавно установил на свой компьютер Windows 10. Я заметил, что если развернуть окно настроек и магазина из панели задач(...

Получить высоту верхней рамки окна (заголовка) и ширину левой рамки, если известен хендл окна
Имеется окно, я знаю его хендл. Нужно получить высоту заголовка и ширину левого &quot;бордюра&quot;(приблизительно в win7 высота заголовка...

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

7
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
10.06.2021, 19:27
Лучший ответ Сообщение было отмечено Orlangur как решение

Решение

Orlangur, попробуйте так
Кликните здесь для просмотра всего текста
VB.NET
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
Public Class aniWindow
    <Runtime.InteropServices.DllImport("user32.dll")>
    Shared Function AnimateWindow(hWnd As IntPtr, time As Integer, flags As AnimateWindowFlags) As Boolean
    End Function
    Public Enum AnimateWindowFlags
        AW_SLIDE = &H40000  'Эффект слайда. Данный параметр игнорируется при использовании AW_CENTER
        AW_ACTIVATE = &H20000   'Активизирует окно. Не используйте с AW_HIDE
        AW_BLEND = &H80000  'Эффект проявления. Может использоваться, только, если окно поверх остальных
        AW_HIDE = &H10000   'Скрытие окна. По умолчанию окно видимо
        AW_CENTER = &H10    'Сжимание окна по центру
        AW_HOR_POSITIVE = &H1   'Анимация окна слева направо. Флаг игнорируется при использовании AW_CENTER или AW_BLEND
        AW_HOR_NEGATIVE = &H2   'Анимация окна справа налево. Флаг игнорируется при использовании AW_CENTER или AW_BLEND
        AW_VER_POSITIVE = &H4   'Анимация окна сверху вниз. Флаг игнорируется при использовании AW_CENTER или AW_BLEND
        AW_VER_NEGATIVE = &H8   'Анимация окна снизу вверх. Флаг игнорируется при использовании AW_CENTER или AW_BLEND
    End Enum
    Private isLoad As Boolean = False
    Private isMini As Boolean = False
    Protected Overrides ReadOnly Property CreateParams As CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.Style = cp.Style And Not &HC00000
            Return cp
        End Get
    End Property
 
    Private Sub aniWindow_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        AnimateWindow(Me.Handle, 400, AnimateWindowFlags.AW_HOR_POSITIVE)
        isLoad = True
    End Sub
 
    Private Sub Close_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        AnimateWindow(Me.Handle, 400, AnimateWindowFlags.AW_CENTER Or AnimateWindowFlags.AW_HIDE)
        Me.Close()
    End Sub
 
    Private Sub Minimized_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        AnimateWindow(Me.Handle, 400, AnimateWindowFlags.AW_CENTER Or AnimateWindowFlags.AW_HIDE)
        Me.WindowState = FormWindowState.Minimized
        isMini = True
    End Sub
 
    Private Sub aniForm_Resize(sender As System.Object, e As System.EventArgs) Handles MyBase.Resize
        If Not isLoad Then Exit Sub
        If isMini AndAlso Me.WindowState = FormWindowState.Normal Then
            Me.Hide()
            AnimateWindow(Me.Handle, 400, AnimateWindowFlags.AW_ACTIVATE Or AnimateWindowFlags.AW_HOR_POSITIVE)
        End If
        Me.Visible = True
        isMini = False
    End Sub
 
End Class
2
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
11.06.2021, 12:32  [ТС]
ovva, Спасибо! Смог всё это собрать в более менее рабочую кучу. Осталось разобраться с небольшим мерцанием при анимации и тем, что свёрнутое окно никак не отрисовывается, если навести мышку на иконку приложения на панели задач
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
11.06.2021, 13:35
Цитата Сообщение от Orlangur Посмотреть сообщение
Осталось разобраться с небольшим мерцанием при анимации
Я не наблюдаю, м.б. потому что at design time у меня установлено
VB.NET
1
2
Me.DoubleBuffered = True
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle
Цитата Сообщение от Orlangur Посмотреть сообщение
свёрнутое окно никак не отрисовывается
Это да, нужно разбираться.
0
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
12.06.2021, 09:40  [ТС]
ovva,
Цитата Сообщение от ovva Посмотреть сообщение
м.б. потому что at design time у меня установлено
двойную буферизацию я ставил, пробовал даже стиль окна влепить WS_EX_COMPOSITED, насчет FixedSingle не очень понял, то есть в дизайнере ставить FixedSingle, а при загрузке переводить в None снова? Это даёт какой-то эффект?
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
12.06.2021, 10:50
Цитата Сообщение от Orlangur Посмотреть сообщение
насчет FixedSingle не очень понял
Я применяю CreateParams в следующем виде
VB.NET
1
2
3
4
5
6
7
Protected Overrides ReadOnly Property CreateParams As CreateParams
    Get
        Dim cp As CreateParams = MyBase.CreateParams
        cp.Style = cp.Style And Not &HC00000
        Return cp
    End Get
End Property
и тогда я могу использовать различные варианты FormBorderStyle (не обязательно None).
1
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
13.06.2021, 12:08  [ТС]
ovva, Да, извиняюсь за невнимательность)
Обнаружил тут ещё одну странную проблему, при клике на иконку на панели задач она пропадает, после чего появляется в самом конце очереди
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
13.06.2021, 12:52
Цитата Сообщение от Orlangur Посмотреть сообщение
при клике на иконку на панели задач она пропадает, после чего появляется в самом конце очереди
Как то не обращал внимания, но действительно хотя и не сразу, а после нескольких проходов свернуть/развернуть, еще реже после запуска *.exe. С чем это связано сказать затрудняюсь.
М.б. стоит закрепить программу на панели задач и тогда иконка всегда будет на своем месте (+ запуск программы с панели).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2021, 12:52
Помогаю со студенческими работами здесь

Показ окна без рамки
Как отобразить Window чтобы не показовалась рамки окна, кнопки закрытия, минимизации и максимизации. Короче чтобы показывала только...

Окно без рамки + фон на весь размер окна
Не знаю что использовать, какие инструменты и т.п. Нужно создать окно неправильной формы. Без рамки, обводки. В качестве фона буду...

[PyQt4] Перемещение окна произвольной формы без рамки
Доброго времени суток. Сделал окно произвольной формы без рамки, его перемещать соответственно нельзя, начал искать возможность...

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

Системная анимация разворачивания окон
Проблема с разворачиванием окон на весь экран. Интерфейс при этом действии ведет себя очень странно, иконки отрисовываются с задержкой,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru