Что нового

Создание и реализация форм(ы)

Автор
W

warshadow

Новичок
Сообщения
62
Репутация
0
Получается такой код должен быть:
Код:
#include <WinAPI.au3>
$hPopup=GUICreate("t", 300, 50,0,0,$WS_POPUP,$WS_EX_MDICHILD,$Form1)
$hLabel=GUICtrlCreateLabel ( "", 5, 5 ,290, 40)
$hPopup=GUICreate("t", 220, 40, 100,-70,$WS_POPUP+$WS_BORDER,$WS_EX_MDICHILD,$Form1)
$hLabel=GUICtrlCreateLabel ( "", 5, 5 ,210, 40)
GUISetState(@SW_SHOW ,$hPopup) 
Func GetMouseCoordinates($nEventMsg)
   Switch $nEventMsg
      Case $GUI_EVENT_MOUSEMOVE
         $aRet = DllCall("user32.dll", "int", "WindowFromPoint", "long", MouseGetPos(0), "long", MouseGetPos(1))
         $tPoint = _WinAPI_GetMousePos(True, $aRet[0])
         $X=DllStructGetData($tPoint, "X")
         $Y= DllStructGetData($tPoint, "Y")
         GUICtrlSetData ( $idCoord_X,$X)
         GUICtrlSetData ( $idCoord_Y,$Y)
	GUICtrlSetData (  $hLabel,'X = ' & $X & @LF & 'Y = ' &$Y)
    
   EndSwitch
EndFunc

Но не работает все равно, наверное я чтото не так делаю (
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
warshadow [?]
Получается такой код должен быть:

Да нет же .
warshadow [?]
Но не работает все равно, наверное я чтото не так делаю (

Конечно. не все взял.

Вот :
Код:
#include <GUIConstants.au3>
#include <WinAPI.au3>
Global $hInput_X,$hInput_Y,$ii

$Form1 = GUICreate("БОТ ", 420, 213, 518, 254)
GUICtrlCreateLabel("Количество заходов", 32, 24, 107, 17)
$idSettings= GUICtrlCreateInput("", 160, 24, 145, 21)
$btPlus  = GUICtrlCreateButton("+", 152, 140, 89, 33)
$cmdCLose = GUICtrlCreateButton("Выход", 350, 192, 70, 20)

GUISetState(@SW_SHOW)

While 1
   $nMsg = GUIGetMsg()
   GetMouseCoordinates($nMsg) ; ====>
   Switch $nMsg
      Case $GUI_EVENT_CLOSE,$cmdCLose
         ExitLoop     
      Case $btPlus              
         $hInput_X = GUICtrlCreateInput("", 1, 10,30 ,15)
         $hInput_Y = GUICtrlCreateInput("", 40, 10, 30, 15)               
    EndSwitch
WEnd

Func GetMouseCoordinates($nEventMsg)
   Switch $nEventMsg
      Case $GUI_EVENT_MOUSEMOVE
         $aRet = DllCall("user32.dll", "int", "WindowFromPoint", "long", MouseGetPos(0), "long", MouseGetPos(1))
         $tPoint = _WinAPI_GetMousePos(True, $aRet[0])
         $X=DllStructGetData($tPoint, "X") 
         $Y= DllStructGetData($tPoint, "Y")
         GUICtrlSetData (  $hInput_X,$X) 
         GUICtrlSetData (  $hInput_Y,$Y)
      Case $GUI_EVENT_PRIMARYDOWN ; При клике левой кнопки мыши
         $ii+=1 ; Количество заходов
         GUICtrlSetData (  $idSettings,$ii) 
   EndSwitch
EndFunc
 
Автор
W

warshadow

Новичок
Сообщения
62
Репутация
0
Вывел в $hLabel.
Код:
GUICtrlSetData  (  $hLabel,'X = ' & $aRet[1] & @LF & 'Y = ' & $aRet[2])

Что получил: Погрешность по Y имеется, примерно на 15 отходит от AutoiT WIndow Info, а по Х идеально..
и из-за этого программа моя работает не корректно.
В общем решил все очень просто, раз имеет погрешность равную 19 по Y, то просто вычил из $aRet[2]-19 и вышло,вот что:
Код:
GUICtrlSetData  (  $hLabel,'X = ' & $aRet[1] & @LF & 'Y = ' & $aRet[2]-19)

Спасибо!))
Да и еще можно встроить в программу кнопку паузу?
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Получемая погрешность это только во Flash-приложении Moziila Firefox.
А в главном окне? В других окнах?

warshadow [?]
Да и еще можно встроить в программу кнопку паузу?
Вот с паузой
Код:
;...................................................
$cmdCLose = GUICtrlCreateButton("Выход", 350, 192, 70, 20)
$btPause= GUICtrlCreateButton("Пауза", 10, 192, 70, 20)

;...................................................
While 1
; ..................................................
      Case $GUI_EVENT_CLOSE,$cmdCLose
         ExitLoop     
      Case $btPause
		 If GUICtrlRead ( $btPause)="Пауза" Then
			$iPause=1
			GUICtrlSetData (  $btPause,'Старт') 
		 Else
			$iPause=0
			GUICtrlSetData (  $btPause,'Пауза')
		 EndIf
	  Case $btPlus              
		 ; ........................................
Wend

Func GetMouseCoordinates($nEventMsg)
   Switch $nEventMsg
      Case $GUI_EVENT_MOUSEMOVE
         If $iPause=1 Then Return ; Пауза
	  ;............................................
EndFunc
 
Автор
W

warshadow

Новичок
Сообщения
62
Репутация
0
Спасибо!)))
А как реализовать чтобы в буфер обмена сохранялось не правой \ левой кнопкой мыши, а например клавишей с клавиатуры: "V" "C" "D"?
и если я запустил программу,как ее остановить, если она у меня идет в цикле.
Код:
Func stooop()
Exit($Form1)
EndFunc
--Это я пробывал
А мне именно нужно чтобы останавливалась и я мог продолжать работать в форме.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
warshadow [?]
Variable used without being declared
Нужно переменную объявить оператором Dim.
Чтобы перейти к ошибке, ЛКМ двойной клик на строке "PROVERKA.au3 (78) : ==> Variable used without being declared"
 
Верх