Что нового

[Элементы GUI] Окно поверх остальных окон, без передачи ему фокуса

TpeTTep

Новичок
Сообщения
45
Репутация
1
Добрый вечер. Делаю что-то вроде уведомления, которое аккуратно выезжает справа, а при клике уезжает обратно. В принципе все работает, смотрится не плохо, но есть несколько нюансов. Во-первых, выезжающее окно забирает на себя фокус, чего делать конечно же не стоит. Тем не менее оно должно располагаться поверх остальных окон. Т.е работать это должно
примерно как Центр уведомлений на Windows 10. Это удобно, красиво и совсем не отвлекает от работы, игры, просмотра фильма, а закрывается простым кликом. Помогите сделать так, что бы оно выезжало поверх остальных окон, но без передачи ему фокуса. Это вообще реально?) Сам код правда получился немного колхозный, но это лишь первый вариант, так что он ещё 100500 раз переделается.

Код:
#include <MetroUDF-v5.1\MetroGUI-UDF\MetroGUI_UDF.au3>
#include <MetroUDF-v5.1\MetroGUI-UDF\_GUIDisable.au3>

HotKeySet("{F10}","_Exit")

$nText = "Тут находится текст оповещения."
$StringLen = StringLen($nText)*9+101
$Form5 = _Metro_CreateGUI("", $StringLen, 120, @DesktopWidth+2, @DesktopHeight/4, False)
$ClickedLabel = GUICtrlCreateLabel("", 0, 0, $StringLen, 120)
GUICtrlSetCursor(-1, 0)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlCreateIcon("C:\Users\Konstantin\Desktop\Autoit\icons\notification.ico",-1,20,40,64,64)
$Notification = GUICtrlCreateLabel($nText, 101, 61, $StringLen, 20)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetFont(-1, 12, 400, 0, "Arial", 5)
GUICtrlCreateLabel("Оповещение",10, 8, 90, 20)
GUICtrlSetColor(-1,0xFFFFFF)
GUICtrlSetFont(-1, 11, 400, 0, "Arial", 5)
GUISetState(@SW_SHOW,$Form5)
SoundPlay(@WindowsDir&"\media\ring07.wav", 0)
WinMove($Form5, "", @DesktopWidth-$StringLen+2, Default, Default, Default, Random(5,10,1))


While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
	  Case $ClickedLabel
		 WinMove($Form5, "", @DesktopWidth+2, Default, Default, Default, Random(5,10,1))
		 GUISetState(@SW_HIDE,$Form5)
		 GUIDelete($Form5)
   EndSwitch
WEnd


Func _Exit()
   _Metro_GUIDelete($Form5)
   Exit
EndFunc
 

Вложения

  • 12121.png
    12121.png
    89.5 КБ · Просмотры: 18
Автор
T

TpeTTep

Новичок
Сообщения
45
Репутация
1
Tempo сказал(а):
Код:
GUISetState(@SW_SHOWNOACTIVATE)
В таком случае оно не отображается поверх остальных окон.
Попробовал смешать это дело с
Код:
WinSetOnTop
Вроде получилось)

Так же есть второй момент с этим "оповещением". Не знаю создавать ли новую тему или нет?
 
A

Alofa

Гость
Типа так, но не так?
Код:
TrayTip("Это текст заголовка", "Это текст сообщения", 5, 1)
MsgBox(4096, "", "")
 
Верх