Advertisement
AZJIO

_MsgAsk

Sep 10th, 2012
599
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 3.97 KB | None | 0 0
  1. #include <WindowsConstants.au3>
  2. #include <GUIConstantsEx.au3>
  3.  
  4. ; En
  5. $LngCheck = 'Not to ask any more'
  6. $LngYes = 'Yes'
  7. $LngNo = 'No'
  8. $sTitle = 'Message'
  9. $sText = 'Use as default?'
  10.  
  11. ; Ru
  12. ; если русская локализация, то русский язык
  13. If @OSLang = 0419 Then
  14.     $LngCheck = 'Больше не спрашивать'
  15.     $LngYes = 'OK'
  16.     $LngNo = 'Отмена'
  17.     $sTitle = 'Сообщение'
  18.     $sText = 'Использовать по умолчанию?'
  19. EndIf
  20.  
  21. $hGUI = GUICreate('My program', 420, 250)
  22.  
  23. $MsgBox = GUICtrlCreateButton("Button", 20, 20, 90, 30)
  24. $StatusBar = GUICtrlCreateLabel('', 20, 60, 330, 150)
  25. GUISetState()
  26.  
  27. While 1
  28.     Switch GUIGetMsg()
  29.         Case $MsgBox
  30.             $iAnswer = _MsgAsk($sTitle, $sText, 200, 100, 1, $LngCheck, $LngYes, $LngNo, $hGUI)
  31.             GUICtrlSetData($StatusBar, 'Answer = ' & $iAnswer & @CRLF & 'Check = ' & @extended & @CRLF & 'Error = ' & @error)
  32.         Case $GUI_EVENT_CLOSE
  33.             Exit
  34.     EndSwitch
  35. WEnd
  36.  
  37. ; функция создаёт диалог с чекбоксом и возможностью отложить вопрос до следующего старта программы или до следующего события в текущей сессии работы с программой. Естественно, чтобы отложить вопрос до следующего старта, потребуется сохранить состояние @extended в ini-файл.
  38. ; Функция позволяет установить тексты всех элементов окна, размеры окна, чтобы вместить текст вопроса и умолчальное состояние чекбокса.
  39. ; Параметры:
  40. ;               $sTitle - Заголовок окна
  41. ;               $sText - Текст окна
  42. ;               $iSizeX - Ширина окна, по умолчанию 270
  43. ;               $iSizeY - Высота окна, по умолчанию 170
  44. ;               $iCheckbox - Состояние чекбокса, по умолчанию 0 - нет галочки
  45. ;               $LngCheck - текст чекбокса, по умолчанию 'Больше не спрашивать'
  46. ;               $LngYes - текст кнопки "Да", по умолчанию "Да"
  47. ;               $LngNo - текст кнопки, "Нет", по умолчанию "Нет"
  48. ;               $hWnd - дескриптор родительского окна
  49. ; Возвращает:
  50. ;               0 - Нет, Отмена или закрытие окна
  51. ;               1 - Да, ОК
  52. ; в случае, если потребуется отличать закрытие окна от кнопки "Нет" используйте проверку @error
  53. Func _MsgAsk($sTitle, $sText, $iSizeX = 270, $iSizeY = 170, $iCheckbox = 0, $LngCheck = 'Not to ask any more', $LngYes = 'Yes', $LngNo = 'No', $hWnd = 0)
  54.     Local $hGUIChild, $iYes, $iNo, $iCheck, $iMode, $iAnswer = 0, $iError = 0, $iTrWnd = 0
  55.     If $iSizeX < 170 Then $iSizeX = 170
  56.     $iMode = Opt('GUIOnEventMode', 0)
  57.     If IsHWnd($hWnd) Then
  58.         GUISetState(@SW_DISABLE, $hWnd)
  59.         $iTrWnd = 1
  60.     Else
  61.         $hWnd = 0
  62.     EndIf
  63.    
  64.     $hGUIChild = GUICreate($sTitle, $iSizeX, $iSizeY, -1, -1, BitOR($WS_CAPTION, $WS_SYSMENU, $WS_POPUP), -1, $hWnd)
  65.     GUICtrlCreateLabel($sText, 10, 10, $iSizeX - 20, $iSizeY - 75)
  66.    
  67.     $iCheck = GUICtrlCreateCheckbox($LngCheck, 10, $iSizeY - 65, $iSizeX - 20, 17)
  68.     If $iCheckbox Then GUICtrlSetState(-1, 1)
  69.    
  70.     $iYes = GUICtrlCreateButton($LngYes, ($iSizeX - 150) / 2, $iSizeY - 40, 70, 28)
  71.     $iNo = GUICtrlCreateButton($LngNo, ($iSizeX - 150) / 2 + 80, $iSizeY - 40, 70, 28)
  72.     GUISetState(@SW_SHOW, $hGUIChild)
  73.     While 1
  74.         Switch GUIGetMsg()
  75.             Case $iYes
  76.                 $iAnswer = 1
  77.                 ExitLoop
  78.             Case $iNo
  79.                 ExitLoop
  80.             Case $GUI_EVENT_CLOSE
  81.                 $iError = 1
  82.                 ExitLoop
  83.         EndSwitch
  84.     WEnd
  85.     If GUICtrlRead($iCheck) = 1 Then
  86.         $iCheckbox = 1
  87.     Else
  88.         $iCheckbox = 0
  89.     EndIf
  90.     If $iTrWnd Then GUISetState(@SW_ENABLE, $hWnd)
  91.     GUIDelete($hGUIChild)
  92.     Opt('GUIOnEventMode', $iMode)
  93.     Return SetError($iError, $iCheckbox, $iAnswer)
  94. EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement