1 (изменено: MandarinKa02, 2017-04-27 22:48:49)

Тема: AHK: Плавное всплытие (отрисовка) окна уведомления

Интересует такая штука, как плавное перемещение окна. Думаю у всех были антивирусники, стим и пр. ПО. Так вот, в них, выскакивает в нижнем правом углу уведомление. Как можно реализовать это в AHK?
Ставить таймер и GUI, Show со сменой X и Y?

P.S. проще говоря, выскакивающее уведомление.

Что-то непонятное:

+ открыть спойлер
Window2Create:
Global ScreenWidth := A_ScreenWidth
Global ScreenHeight := A_ScreenHeight
Window2Width := 200
Window2Height := 50
Window2PosX := ScreenWidth - Window2Width
Window2PosY := ScreenHeight - Window2Height - 40

Window2StartPosX := ScreenWidth - Window2Width
Window2StartPosY := ScreenHeight

Window2CurrentPosX := Window2StartPosX
Window2CurrentPosY := Window2StartPosY

Window2Name := "AHK Script"

Gui Window2: +LastFound -Caption -ToolWindow +hwndhMainMenu
Gui, Window2: Margin, 10, 10
Gui, Window2: Color, 212121


Gui, Window2: Add, Progress, x0 y0 w%Window2Width% h6 c%g_Window2RainBow1c% Background%cpbg%
Gui, Window2: Add, Progress, x0 y394 w%Window2Width% h6 c%g_Window2RainBow2c% Background%cpbg%

Gui, Window2: Show, % "x"Window2StartPosX "y"Window2StartPosY "w"Window2Width "h"Window2Height, % Window2Name
OnMessage(0x201, "WM_LBUTTONDOWN")
SetTimer, Move, 1
Return

Move:
If(Window2CurrentPosY > Window2PosY)
{
	Window2CurrentPosY-=1
	WinMove, %Window2Name%,,, %Window2CurrentPosY%
}
Return

WM_LBUTTONDOWN(wParam, lParam, msg, hwnd) ; WM_LBUTTONDOWN() by an AHK-Member
{
    global hMainMenu
    if (hwnd = hMainMenu)
    {
        PostMessage, 0xA1, 2,,, % Window2Name
    }
}


2

Re: AHK: Плавное всплытие (отрисовка) окна уведомления

Заголовок "AHK: плавное перемещение окна" исправлен на соответствующий запросу.

3 (изменено: stealzy, 2017-04-27 23:27:17)

Re: AHK: Плавное всплытие (отрисовка) окна уведомления

Идея взята у teadrinker.

Gui +hwndhGui2 -Caption +ToolWindow +AlwaysOnTop
Gui Add, Text,, Здесь какая-то информация
Return

F1::
	if i := !i
		Gui Show, % "x" A_ScreenWidth - 250 " y" A_ScreenHeight - 200 " h" 100 " hide"
	DllCall("AnimateWindow", Ptr, hGui2, UInt, 400, UInt, 0x40000|(i ? 1 : 0x10002))
	Return
Esc::ExitApp

Иногда оставляет мусор на экране и не совсем плавно.

P.S.
Notify() умеет красиво это. Используйте лучше ее.