Что нового

не закрывается GUI окно, через WinClose

zbz

Новичок
Сообщения
74
Репутация
1
Версия AutoIt: 3.

Описание: Как сделать, чтобы, GUI окно, закрывалось через WinClose?.
Вот мой скрипт:
Код:
local $Ipath = @Scriptdir&"\Resource\Images\SplashScreenABU.png"
local $transColor = 0xABCDEF
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($Ipath)
$width = _GDIPlus_ImageGetWidth($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)
$hGui = GUICreate("SplashImageABU", $width, $height,-1,1,$WS_POPUP)
Guisetbkcolor($transColor,$hGui)
_WinAPI_SetLayeredWindowAttributes($hGui,$transColor,255)
GUISetState()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
_GDIPlus_GraphicsDrawImageRect($hGraphic,$hImage,0,0,$width,$height)


Примечания:
 

NickSpirit

Знающий
Сообщения
43
Репутация
5
Я так понимаю что строка:

Код:
WinClose($hGui)


окно не закрывает? Может попробовать

Код:
WinKill($hGui)
 

ra4o

AutoIT Гуру
Сообщения
1 121
Репутация
231
Нужно справку прочитать - там пишут :
При добавлении стиля не забывайте объединять его со стандартным, т.е. просто добавление стиля $WS_SIZEBOX не установит стили $WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP и $WS_SYSMENU. Поэтому лучший способ создания окна с изменением размеров является $WS_OVERLAPPEDWINDOW.
Вот, Ваш скрипт с возможностью закрыть окно :
Код:
#Include <GDIPlus.au3>
#Include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

local $Ipath = @Scriptdir&"\1.png"
local $transColor = 0xABCDEF
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($Ipath)
$width = _GDIPlus_ImageGetWidth($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)
ConsoleWrite('$width='&$width&'  $height='&$height&@CR)
$hGui = GUICreate("SplashImageABU", $width, $height,-1,1,BitOR($WS_OVERLAPPEDWINDOW ,$WS_POPUP))
Guisetbkcolor($transColor,$hGui)
_WinAPI_SetLayeredWindowAttributes($hGui,$transColor,255)
GUISetState()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
_GDIPlus_GraphicsDrawImageRect($hGraphic,$hImage,0,0,$width,$height)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
	EndSwitch
	sleep(20)
WEnd
 

NickSpirit

Знающий
Сообщения
43
Репутация
5
Вот и меня заодно научили. Спасибо!
 
Автор
zbz

zbz

Новичок
Сообщения
74
Репутация
1
NickSpirit сказал(а):
Я так понимаю что строка:

Код:
WinClose($hGui)


окно не закрывает? Может попробовать

Код:
WinKill($hGui)
Не закрывают окно


Добавлено:
Сообщение автоматически объединено:

ra4o сказал(а):
Нужно справку прочитать - там пишут :
При добавлении стиля не забывайте объединять его со стандартным, т.е. просто добавление стиля $WS_SIZEBOX не установит стили $WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP и $WS_SYSMENU. Поэтому лучший способ создания окна с изменением размеров является $WS_OVERLAPPEDWINDOW.
Вот, Ваш скрипт с возможностью закрыть окно :
Код:
#Include <GDIPlus.au3>
#Include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

local $Ipath = @Scriptdir&"\1.png"
local $transColor = 0xABCDEF
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($Ipath)
$width = _GDIPlus_ImageGetWidth($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)
ConsoleWrite('$width='&$width&'  $height='&$height&@CR)
$hGui = GUICreate("SplashImageABU", $width, $height,-1,1,BitOR($WS_OVERLAPPEDWINDOW ,$WS_POPUP))
Guisetbkcolor($transColor,$hGui)
_WinAPI_SetLayeredWindowAttributes($hGui,$transColor,255)
GUISetState()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
_GDIPlus_GraphicsDrawImageRect($hGraphic,$hImage,0,0,$width,$height)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
	EndSwitch
	sleep(20)
WEnd
а возможно сделать?: чтоб у окна не было кнопки "Закрыть", и скрипт продолжалось без закрытия этого окна, пока, не встретить WinClose.
 

ra4o

AutoIT Гуру
Сообщения
1 121
Репутация
231
Можно , конечно, допишите
Код:
WinClose($hGui)

Например, окно закроется через 2 секунды:
Код:
#Include <GDIPlus.au3>
#Include <WinAPI.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>


local $Ipath = @Scriptdir&"\1.png"
local $transColor = 0xABCDEF
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile($Ipath)
$width = _GDIPlus_ImageGetWidth($hImage)
$height = _GDIPlus_ImageGetHeight($hImage)
$hGui = GUICreate("SplashImageABU", $width, $height,-1,1,$WS_POPUP)
Guisetbkcolor($transColor,$hGui)
_WinAPI_SetLayeredWindowAttributes($hGui,$transColor,255)
GUISetState()
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)
_GDIPlus_GraphicsDrawImageRect($hGraphic,$hImage,0,0,$width,$height)

Sleep(2000)

WinClose($hGui)
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
zbz

Предупреждение За нарушение общих правил (пункт В.2):
Старайтесь избегать “Over quoting” (преувеличенное цитирование) - цитируйте только необходимую часть сообщения, которая наилучшим образом подчеркнёт суть цитируемого.


С уважением, ваш Глобальный модератор.
 
Автор
zbz

zbz

Новичок
Сообщения
74
Репутация
1
ra4o сказал(а):
Например, окно закроется через 2 секунды:
Код:
WinClose($hGui)
не закрывает окно, окно закрывается из за завершения скрипта
 

ra4o

AutoIT Гуру
Сообщения
1 121
Репутация
231
А что покажет
Код:
MsgBox(0,'',WinClose($hGui))
 

InnI

AutoIT Гуру
Сообщения
4 464
Репутация
1 209
zbz
Для закрытия собственных окон GUI есть функция
Код:
GUIDelete()
 
Автор
zbz

zbz

Новичок
Сообщения
74
Репутация
1
InnI сказал(а):
zbz
Для закрытия собственных окон GUI есть функция
Код:
GUIDelete()
Красава, получилось
Код:
GUIDelete("SplashImageABU")
 
Верх