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

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

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#region: - Option
    Opt('MustDeclareVars',      1)
    Opt('TrayIconDebug',        1)
    Opt('TrayIconHide',         0)
#endregion

#region: - Include
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
#endregion

Local $sInputText

$sInputText = _MsgBox('Название окна #1 ', ' Введите текст:  ', 200, 93, -1, -1, -1)
Switch @error
    Case -1
        MsgBox(48, 'Выход  #1 ', 'Выход без ввода текст' & @CRLF & 'Код выхода: ' & @error)
    Case 0
        MsgBox(64, 'Введенный текст #1 ', $sInputText)
EndSwitch

;~ Или так: окно поверх всех
$sInputText = _MsgBox('Название окна #2 ', ' Введите текст:  ', 200, 93, -1, -1, -1, -1, 1)
If @error == -1 Then
    MsgBox(48, 'Выход  #2 ', 'Выход без ввода текст' & @CRLF & 'Код выхода: ' & @error)
Else
    MsgBox(64, 'Введенный текст #2  ', $sInputText)
EndIf

;~ Или так: окно поверх всех + другая иконка окна
$sInputText = _MsgBox('Название окна #3 ', ' Введите текст:  ', 200, 93, -1, -1, -1, -1, 1, -1, -45)
If @error == 0 Then MsgBox(64, 'Введенный текст  #3 ', $sInputText)

#region: - _MsgBox
; #FUNCTION# ====================================================================================================================
; Name...........:  _MsgBox
; Description ...:  Окно типа MsgBox со строкой ввода текса и кнопками Ok, Отмена
; Syntax.........:  _MsgBox($sTitle, $sText, $iWidth, $iHeight, $iX, $iY [, $iStyle=13107200] [, $iExStyle=-1] [, $fOnTop=0] [, $sIconPath='shell32.dll'] [, $iIconId=-1])
; Parameters ....:  $sTitle      - Название кона
;~                  $sText       - Текст сообщения
;~                  $iWidth      - Ширна окна
;~                  $iHeight     - Высота окна
;~                  $iX          - Позиция окна по Х
;~                  $iY          - Позиция окна по У
;~                  $iStyle      - Стиль окна
;~                  $iExStyle    - Расширенный стиль окна
;~                  $fOnTop      - Установка окна поверех всех окон
;~                  $sIconPath   - Путь к файлу/dll иконки окна
;~                  $iIconId     - Id иконки
; Return values .:  Success      - Введенный текст. @error = 0
;                   Failure      - -1 закрытие окна без ввода текста. @error = -1
; Author ........: `p r o x y (icq 729406)
; ===============================================================================================================================
Func _MsgBox($sTitle, $sText, $iWidth, $iHeight, $iX, $iY, $iStyle=13107200, $iExStyle=-1, $fOnTop=0, $sIconPath='shell32.dll', $iIconId=-222)
    Local $fGUIOnEventMode = Opt('GUIOnEventMode')
    Opt('GUIOnEventMode', 0)

    If $iStyle == -1 Then $iStyle = 13107200
    Local   $hMsgBox = GUICreate($sTitle, $iWidth, $iHeight, $iX, $iY, $iStyle, $iExStyle)
                If $sIconPath = -1 Then $sIconPath = 'shell32.dll'
                GUISetIcon($sIconPath, $iIconId)

    GUICtrlCreateGroup($sText, 5, 5, $iWidth-10, $iHeight-10)
    Local   $hsMsgBoxText = GUICtrlCreateInput('', 15, 25, $iWidth-30, 20)
    Local   $hMsgBoxOK = GUICtrlCreateButton('OK', 14, 53, ($iWidth-28-2)/2, 24)
    Local   $hMsgBoxCancel = GUICtrlCreateButton('Отмена', 14+($iWidth-28-2)/2+2, 53, ($iWidth-28-2)/2, 24)

    If $fOnTop Then WinSetOnTop($hMsgBox, '', 1)
    GUIRegisterMsg($WM_NCHITTEST,   'WM_NCHITTEST')
    GUISetState(@SW_SHOW, $hMsgBox)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                GUIDelete($hMsgBox)
                Opt('GUIOnEventMode', $fGUIOnEventMode)
                GUIRegisterMsg($WM_NCHITTEST, '')
                Return SetError(-1)

            Case $hMsgBoxCancel
                GUIDelete($hMsgBox)
                Opt('GUIOnEventMode', $fGUIOnEventMode)
                GUIRegisterMsg($WM_NCHITTEST, '')
                Return SetError(-1)

            Case $hMsgBoxOK
                Local $sMsgBoxText = GUICtrlRead($hsMsgBoxText)
                If StringStripWS($sMsgBoxText, 8) == '' Then
                    MsgBox(48, 'Ошибка!', 'Пожалуйста, введите текст')
                    GUICtrlSetData($hsMsgBoxText, '')
                    GUICtrlSetState($hsMsgBoxText, $GUI_FOCUS)
                Else
                    GUIDelete($hMsgBox)
                    SetError(0)
                    Opt('GUIOnEventMode', $fGUIOnEventMode)
                    GUIRegisterMsg($WM_NCHITTEST, '')
                    Return $sMsgBoxText
                EndIf
        EndSwitch
    WEnd
EndFunc
Func WM_NCHITTEST($hWnd, $Msg, $wParam, $lParam)
    Local $iProc = DllCall('user32.dll', 'int', 'DefWindowProc', 'hwnd', $hWnd, 'int', $Msg, 'wparam', $wParam, 'lparam', $lParam)
    If $iProc[0] = $HTCLIENT Then Return $HTCAPTION
    Return $GUI_RUNDEFMSG
EndFunc;==>_MsgBox
#endregion

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Последний раз редактировалось proxy, 04-04-2009 в 23:25.


Отправлено: 22:50, 04-04-2009 | #10