#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
$hGui = GUICreate('Untitled - Notepad AutoIt3', 500, 400, -1, -1, BitOR($WS_POPUP, $WS_OVERLAPPEDWINDOW), $WS_EX_COMPOSITED)
$iMenuFile = GUICtrlCreateMenu('File')
$iMenuNew = GUICtrlCreateMenuItem('New', $iMenuFile)
$iEdit = GUICtrlCreateEdit('', 0, 0, 500, 400 - 20, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL, $ES_NOHIDESEL, $ES_WANTRETURN))
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
#include <Misc.au3>
#include <GuiEdit.au3>
#include <GuiMenu.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $sPathCur, $ifCharSet = 0
; Установки шрифта
Local $sFontName = 'Arial'
Local $iPointSize = 10
Local $iColorRef = 0
Local $iFontWeight = 400
Local $iItalic = False
Local $iUnderline = False
Local $iStrikethru = False
; Установки фона
Local $iColorBg = 0xffffff
Local $hGui, $hMenuFile, $aRect, $iHeightMenu, $iStyle, $hEdit
; Элементы окна
Local $iMenuFile, $iMenuNew, $iMenuOpen, $iMenuSave, $iMenuSaveAs, $iMenuExit, $iMenuEdit, $iMenuUndo, $iMenuCut, $iMenuCopy, $iMenuIns, $iMenuDel, $iMenuSelAll, $iMenuDate, $iMenuOpt, $iMenuFont, $iMenuBg, $iMenuHelp, $iMenuAbout, $iEdit
Local $a_font, $iFntStl, $tmp, $sSelect, $sText, $sPath, $hFile
$hGui = GUICreate('Безымянный - Блокнот AutoIt3', 500, 400, -1, -1, BitOR($WS_POPUP, $WS_OVERLAPPEDWINDOW), $WS_EX_COMPOSITED)
GUISetIcon('shell32.dll', 2)
$iMenuFile = GUICtrlCreateMenu('Файл')
$iMenuNew = GUICtrlCreateMenuItem('Новый', $iMenuFile)
$iMenuOpen = GUICtrlCreateMenuItem('Открыть', $iMenuFile)
$iMenuSave = GUICtrlCreateMenuItem('Сохранить', $iMenuFile)
$iMenuSaveAs = GUICtrlCreateMenuItem('Сохранить как...', $iMenuFile)
GUICtrlCreateMenuItem('', $iMenuFile)
$iMenuExit = GUICtrlCreateMenuItem('Выход', $iMenuFile)
$iMenuEdit = GUICtrlCreateMenu('Правка')
$iMenuUndo = GUICtrlCreateMenuItem('Отменить' & @TAB & 'Ctrl+Z', $iMenuEdit)
GUICtrlCreateMenuItem('', $iMenuEdit)
$iMenuCut = GUICtrlCreateMenuItem('Вырезать' & @TAB & 'Ctrl+X', $iMenuEdit)
$iMenuCopy = GUICtrlCreateMenuItem('Копировать' & @TAB & 'Ctrl+C', $iMenuEdit)
$iMenuIns = GUICtrlCreateMenuItem('Вставить' & @TAB & 'Ctrl+V', $iMenuEdit)
$iMenuDel = GUICtrlCreateMenuItem('Удалить' & @TAB & 'Del', $iMenuEdit)
$iMenuSelAll = GUICtrlCreateMenuItem('Выделить всё', $iMenuEdit)
GUICtrlCreateMenuItem('', $iMenuEdit)
$iMenuDate = GUICtrlCreateMenuItem('Вставить дату', $iMenuEdit)
$iMenuOpt = GUICtrlCreateMenu('Настройки')
$iMenuFont = GUICtrlCreateMenuItem('Шрифт', $iMenuOpt)
$iMenuBg = GUICtrlCreateMenuItem('Цвет фона', $iMenuOpt)
$iMenuHelp = GUICtrlCreateMenu('Справка')
$iMenuAbout = GUICtrlCreateMenuItem('О программе', $iMenuHelp)
$hMenuFile = _GUICtrlMenu_GetMenu($hGui)
$aRect = _GUICtrlMenu_GetMenuBarInfo($hGui, 0, 1) ; Определяет высоту меню, чтобы вычислить высоту элемента Edit
$iHeightMenu = $aRect[3] - $aRect[1]
$iStyle = BitOR($ES_AUTOVSCROLL, $WS_VSCROLL, $ES_NOHIDESEL, $ES_WANTRETURN)
$iEdit = GUICtrlCreateEdit('', 0, 0, 500, 400 - $iHeightMenu, $iStyle)
$hEdit = GUICtrlGetHandle(-1)
GUISetState()
While 1
Switch GUIGetMsg()
Case $iMenuFont
$a_font = _ChooseFont($sFontName, $iPointSize, $iColorRef, $iFontWeight, $iItalic, $iUnderline, $iStrikethru, $hGui)
If @error Then ContinueLoop
If BitAND($a_font[1], 2) Then
$iItalic = True
Else
$iItalic = False
EndIf
If BitAND($a_font[1], 4) Then
$iUnderline = True
Else
$iUnderline = False
EndIf
If BitAND($a_font[1], 8) Then
$iStrikethru = True
Else
$iStrikethru = False
EndIf
$sFontName = $a_font[2]
$iPointSize = $a_font[3]
$iFontWeight = $a_font[4]
$iColorRef = $a_font[5]
$iFntStl = 0
If $iItalic Then $iFntStl = 2
If $iUnderline Then $iFntStl += 4
If $iStrikethru Then $iFntStl += 8
GUICtrlSetFont($iEdit, $iPointSize, $iFontWeight, $iFntStl, $sFontName)
GUICtrlSetColor($iEdit, $a_font[7])
$a_font = 0
Case $iMenuDate
GUICtrlSetData($iEdit, @HOUR & ':' & @MIN & ' ' & @MDAY & '.' & @MON & '.' & @YEAR, 1)
Case $iMenuBg
$tmp = _ChooseColor(2, $iColorBg, 2, $hGui)
If @error Then ContinueLoop
GUICtrlSetBkColor($iEdit, $tmp)
$iColorBg = $tmp
Case $iMenuSelAll
GUICtrlSendMsg($iEdit, $EM_SETSEL, 0, -1)
Case $iMenuUndo
_GUICtrlEdit_Undo($hEdit)
Case $iMenuCut
$sSelect = ControlCommand($hGui, "", $iEdit, "GetSelected")
If Not @error Then
ClipPut($sSelect)
GUICtrlSetData($iEdit, '', 1)
EndIf
Case $iMenuCopy
$sSelect = ControlCommand($hGui, "", $iEdit, "GetSelected")
If Not @error Then ClipPut($sSelect)
Case $iMenuIns
GUICtrlSetData($iEdit, ClipGet(), 1)
Case $iMenuDel
GUICtrlSetData($iEdit, '', 1)
Case $iMenuNew
GUICtrlSetData($iEdit, '')
$sPathCur = ''
WinSetTitle($hGui, '', 'Безымянный - Блокнот AutoIt3')
$ifCharSet = 0
Case $iMenuOpen
$sPath = FileOpenDialog('Открыть', @WorkingDir, 'Все (*)|Текстовые документы (*.txt)', 8, '', $hGui)
If @error Then ContinueLoop
$ifCharSet = FileGetEncoding($sPath)
$sText = FileRead($sPath)
GUICtrlSetData($iEdit, $sText)
$sPathCur = $sPath
$sText = 0
$sPath = StringRegExpReplace($sPath, '^(?:.*\\)([^\\]+?)(\.[^.]+)?$', '\1\2')
WinSetTitle($hGui, '', $sPath & ' - Блокнот AutoIt3')
Case $iMenuSave
If FileExists($sPathCur) Then
$sText = GUICtrlRead($iEdit)
$hFile = FileOpen($sPathCur, 2 + $ifCharSet)
FileWrite($hFile, $sText)
FileClose($hFile)
$sText = 0
Else
ContinueCase
EndIf
Case $iMenuSaveAs
$sPath = FileSaveDialog("Сохранить как", @WorkingDir, 'Все (*)|Текстовые документы (*.txt)', 16, '', $hGui)
If @error Then ContinueLoop
$sText = GUICtrlRead($iEdit)
$hFile = FileOpen($sPath, 2 + $ifCharSet)
FileWrite($hFile, $sText)
FileClose($hFile)
$sPathCur = $sPath
$sText = 0
$sPath = StringRegExpReplace($sPath, '^(?:.*\\)([^\\]+?)(\.[^.]+)?$', '\1\2')
WinSetTitle($hGui, '', $sPath & ' - Блокнот AutoIt3')
Case $iMenuAbout
MsgBox(0, 'О программе', 'Программа является примером стандартного ' & @LF & 'блокнота, созданного с помощью AutoIt3.', 0, $hGui)
Case $GUI_EVENT_CLOSE, $iMenuExit
Exit
EndSwitch
WEnd