Код:
#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