Для тех,кто никогда не писал простейшего калькулятора.
Простейший калькулятор на autoit может выглядеть так.Конечно он не складывает очень большие числа,так как архитектура процессора напрямую это не поддерживает.И впрочем данная реализация не является самым оптимальным и самым умным решением.
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <GuiConstants.au3>
Local $state = 1
Local $hGUI = GUICreate("Example", 500,500)
GUICtrlCreateLabel("Первое число",0,0)
Local $num_1 = GUICtrlCreateInput("", 0, 25, 300, 20)
GUICtrlCreateLabel("Второе число",0,50)
Local $num_2 = GUICtrlCreateInput("", 0, 75, 300, 20)
GUICtrlCreateLabel("Результат",0,100)
Local $res = GUICtrlCreateInput("", 0, 125, 300, 20)
Local $idButton_1 = GUICtrlCreateButton("1", 0, 150, 85,50)
Local $idButton_2 = GUICtrlCreateButton("2", 90, 150, 85,50)
Local $idButton_3 = GUICtrlCreateButton("3", 180, 150, 85,50)
Local $idButton_4 = GUICtrlCreateButton("4", 0, 200, 85,50)
Local $idButton_5 = GUICtrlCreateButton("5", 90, 200, 85,50)
Local $idButton_6 = GUICtrlCreateButton("6", 180, 200, 85,50)
Local $idButton_7 = GUICtrlCreateButton("7", 0, 250, 85,50)
Local $idButton_8 = GUICtrlCreateButton("8", 90, 250, 85,50)
Local $idButton_9 = GUICtrlCreateButton("9", 180, 250, 85,50)
Local $idButton_0 = GUICtrlCreateButton("0", 0, 300, 85,50)
Local $idButton_plus = GUICtrlCreateButton("плюс", 300, 150, 85,50)
GUISetState(@SW_SHOW, $hGUI)
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idButton_1
set_text(1)
Case $idButton_2
set_text(2)
Case $idButton_3
set_text(3)
Case $idButton_4
set_text(4)
Case $idButton_5
set_text(5)
Case $idButton_6
set_text(6)
Case $idButton_7
set_text(7)
Case $idButton_8
set_text(8)
Case $idButton_9
set_text(9)
Case $idButton_0
set_text(0)
Case $idButton_plus
GUICtrlSetData($res,GUICtrlRead($num_1)+GUICtrlRead($num_2))
EndSwitch
WEnd
Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
Local $nNotifyCode = BitShift($wParam, 16)
Local $nID = BitAND($wParam, 0xFFFF)
Switch $nID
Case $num_1, $num_2,$res
Switch $nNotifyCode
Case $EN_SETFOCUS
if $nID = 4 then $state = 1
if $nID = 6 then $state = 2
if $nID = 8 then $state = 3
EndSwitch
EndSwitch
EndFunc
func set_text($number)
if $state = 1 then GUICtrlSetData($num_1,GUICtrlRead($num_1)& $number)
if $state = 2 then GUICtrlSetData($num_2,GUICtrlRead($num_2)& $number)
if $state = 3 then GUICtrlSetData($res,GUICtrlRead($res)& $number)
EndFunc
|