Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

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
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:23, 02-12-2006 | #505