Как отловить восстановление окна?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Teranas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 13.12.2008 (Сб) 4:26
Откуда: Новосибирск

Как отловить восстановление окна?

Сообщение Teranas » 08.04.2022 (Пт) 1:33

Как правильно отловить восстановление окна из свёрнутого состояния?
Чтобы на это событие код повесить.
С уважением, Андрей.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как отловить восстановление окна?

Сообщение Mikle » 08.04.2022 (Пт) 8:22

Встроенными средствами, без ухищрений, можно как-то так:
Код: Выделить всё
Option Explicit

Dim fMin As Boolean

Private Sub Form_Paint()
  If fMin Then
    MsgBox "Восстановлено"
    fMin = False
  End If
End Sub

Private Sub Timer1_Timer()
  If Me.WindowState = vbMinimized Then fMin = True
End Sub

Таймер установлен на достаточно короткий период, чтобы при сворачивании в любом случае успел сработать.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как отловить восстановление окна?

Сообщение Хакер » 08.04.2022 (Пт) 10:32

Mikle, есть два нюанса:
  1. AutoRedraw должен быть отключен.
  2. Метод не сработает, если после восстановления клиентская часть окна оказывается чем-то накрыта и ей нет нужды перерисовываться, например, как в случае с окном Блокнота на этом скриншоте
Вложения
wnd2.png
wnd2.png (15.04 Кб) Просмотров: 879
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Teranas
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 224
Зарегистрирован: 13.12.2008 (Сб) 4:26
Откуда: Новосибирск

Re: Как отловить восстановление окна?

Сообщение Teranas » 08.04.2022 (Пт) 15:55

Я как-то давно давно делал с помощью WinApi и таймера VB6,
но мне это показалось корявым решением,
вот и поинтересовался, может у кого есть более интересное решение,
возможно, с помощью хуков, или стандартными средствами VB6.
С уважением, Андрей.

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Как отловить восстановление окна?

Сообщение The trick » 08.04.2022 (Пт) 19:21

WM_SYSCOMMAND / WM_SIZE
UA6527P


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 3

    TopList