Googler
Сообщения: 3665
Благодарности: 1563
|
Профиль
|
Отправить PM
| Цитировать
Creat0R
Цитата:
В идеале, хочется чтобы можно было вызвать окно сохранения (к примеру), и нажимая на окно гуи, чтобы вызванное окно мигало, точно также как это происходит если вызвать дочернее окно гуи
|
Можно самому написать аналогичные функции, пример:
Код: 
#include <GUIConstants.au3>
#include <Constants.au3>
$GUIParent = GUICreate("My GUI", 290, 70)
Opt("GUICoordMode",2)
$Button_1 = GUICtrlCreateButton ("Message Box", 30, 25, 100)
$Button_2 = GUICtrlCreateButton ("File Open", 30, -1)
GUISetState ()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Button_1
_MsgBox ($GUIParent, "Сообщение", "Текст сообщения", $MB_OK + $MB_ICONASTERISK)
Case $msg = $Button_2
$file = _FileOpenDialog ($GUIParent, "Выбор файла", "C:\WINDOWS", "Документы (*.DOC)|Все (*.*)")
_MsgBox ($GUIParent, "Сообщение", "Выбран файл: " & $file, $MB_OK + $MB_ICONASTERISK)
EndSelect
Wend
Func _MsgBox ($mainGUI, $MsgBoxTitle, $MsgBoxText, $MsgBoxType)
$ret = DllCall ("user32.dll", "int", "MessageBox", _
"hwnd", $mainGUI, _
"str", $MsgBoxText , _
"str", $MsgBoxTitle, _
"int", $MsgBoxType)
Return $ret [0]
EndFunc
Func _FileOpenDialog ($mainGUI, $sTitle, $sInitDir, $sFilter = 'All (*.*)')
Local $aFilter = StringSplit ( $sFilter, '|')
Local $aCSTR [$aFilter [0] *2+1]
Local $i, $iStart, $iFinal, $sCStruct = '', $sWStruct = ''
$aCSTR [0] = $aFilter [0] *2
For $i=1 To $aFilter [0]
$iStart = StringInStr ($aFilter [$i], '(', 0, 1)
$iFinal = StringInStr ($aFilter [$i], ')', 0,-1)
$aCSTR [$i*2-1] = StringStripWS (StringLeft ($aFilter [$i], $iStart-1), 3)
$aCSTR [$i*2] = StringStripWS (StringTrimRight (StringTrimLeft ($aFilter [$i], $iStart), StringLen ($aFilter [$i]) -$iFinal+1), 3)
$sCStruct = $sCStruct & 'byte[' & StringLen ($aCSTR [$i*2-1])+1 & '];byte[' & StringLen ($aCSTR [$i*2])+1 & '];'
$sWStruct = $sWStruct & 'byte[' & StringLen ($aCSTR [$i*2-1])*2+2 & '];byte[' & StringLen ($aCSTR [$i*2])*2+2 & '];'
Next
Local $uCSTR = DllStructCreate ($sCStruct & 'byte[1]')
Local $uWSTR = DllStructCreate ($sWStruct & 'byte[2]')
For $i=1 To $aCSTR [0]
DllStructSetData ($uCSTR, $i, $aCSTR [$i])
Next
$ret = DllCall ("kernel32.dll", "int", "MultiByteToWideChar", _
"int", 0, _
"int", 0, _
"ptr", DllStructGetPtr ($uCSTR), _
"int", DllStructGetSize ($uCSTR), _
"ptr", DllStructGetPtr ($uWSTR), _
"int", DllStructGetSize ($uWSTR) )
$ret = DllCall("Shell32.dll", "int", 'GetFileNameFromBrowse', _
'hwnd', $mainGUI, _
'wstr', '', _
'int', 255, _
'wstr', $sInitDir, _
'wstr', '', _
'ptr', DllStructGetPtr ($uWSTR), _
'wstr', $sTitle )
Return $ret [2]
EndFunc
|